package config

import (
	"os"

	"github.com/imdario/mergo"
)

const (
	// DefaultServerAddr the default server addr
	DefaultServerAddr = ":8080"
)

// ServerName the response header of the 'Server' value when writes to the client
const ServerName = "iris"

// Server used inside server for listening
type Server struct {
	// ListenningAddr the addr that server listens to
	ListeningAddr string
	CertFile      string
	KeyFile       string
	// Mode this is for unix only
	Mode os.FileMode
}

// DefaultServer returns the default configs for the server
func DefaultServer() Server {
	return Server{DefaultServerAddr, "", "", 0}
}

// Merge merges the default with the given config and returns the result
func (c Server) Merge(cfg []Server) (config Server) {

	if len(cfg) > 0 {
		config = cfg[0]
		mergo.Merge(&config, c)
	} else {
		_default := c
		config = _default
	}

	return
}