// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package setting

import (
	"time"

	"code.gitea.io/gitea/modules/log"

	"github.com/go-macaron/cors"
)

var (
	// CORSConfig defines CORS settings
	CORSConfig cors.Options
	// EnableCORS defines whether CORS settings is enabled or not
	EnableCORS bool
)

func newCORSService() {
	sec := Cfg.Section("cors")
	// Check cors setting.
	EnableCORS = sec.Key("ENABLED").MustBool(false)

	maxAge := sec.Key("MAX_AGE").MustDuration(10 * time.Minute)

	CORSConfig = cors.Options{
		Scheme:           sec.Key("SCHEME").String(),
		AllowDomain:      sec.Key("ALLOW_DOMAIN").String(),
		AllowSubdomain:   sec.Key("ALLOW_SUBDOMAIN").MustBool(),
		Methods:          sec.Key("METHODS").Strings(","),
		MaxAgeSeconds:    int(maxAge.Seconds()),
		AllowCredentials: sec.Key("ALLOW_CREDENTIALS").MustBool(),
	}

	if EnableCORS {
		log.Info("CORS Service Enabled")
	}
}
