iris/_examples/project/api/configuration.go
Gerasimos (Makis) Maropoulos 4dfd4c53d3
new minor features
2022-04-09 14:51:34 +03:00

46 lines
1.3 KiB
Go

package api
import (
"os"
"github.com/kataras/iris/v12"
"gopkg.in/yaml.v3"
)
// Configuration holds the necessary information
// for our server, including the Iris one.
type Configuration struct {
ServerName string `yaml:"ServerName"`
Env string `yaml:"Env"`
// The server's host, if empty, defaults to 0.0.0.0
Host string `yaml:"Host"`
// The server's port, e.g. 80
Port int `yaml:"Port"`
// If not empty runs under tls with this domain using letsencrypt.
Domain string `yaml:"Domain"`
// Enables write response and read request compression.
EnableCompression bool `yaml:"EnableCompression"`
// Defines the "Access-Control-Allow-Origin" header of the CORS middleware.
// Many can be separated by comma.
// Defaults to "*" (allow all).
AllowOrigin string `yaml:"AllowOrigin"`
// If not empty a request logger is registered,
// note that this will cost a lot in performance, use it only for debug.
RequestLog string `yaml:"RequestLog"`
// The database connection string.
ConnString string `yaml:"ConnString"`
// Iris specific configuration.
Iris iris.Configuration `yaml:"Iris"`
}
// BindFile binds the yaml file's contents to this Configuration.
func (c *Configuration) BindFile(filename string) error {
contents, err := os.ReadFile(filename)
if err != nil {
return err
}
return yaml.Unmarshal(contents, c)
}