package adslib

import (
	"github.com/BurntSushi/toml"
	"sync"
)

type SvrConf struct {
	HostIos            string                                `toml:"Host_Ios"`
	HostAndroid        string                                `toml:"Host_Android"`
	Host               string                                `toml:"Host"`
	HostScript         string                                `toml:"Host_script"`
	HostMiao           string                                `toml:"Host_miao"`
	IPReqSource        []string                              `toml:"ip_req_source"`
	BlackReqSource     []string                              `toml:"black_req_source"`
	DpTest             string                                `toml:"dp_test"`
	FreqControlNum     int                                   `toml:"freq_control_num"`
	FlowPercent        map[string]map[string]FlogControlItem `toml:"flow_percent"`
	FlowPercent1       map[string]map[string]FlogControlItem `toml:"flow_percent_1"`
	AdsActions         map[string][]string                   `toml:"Ads_Actions"`
	AdsDuration        map[string]int                        `toml:"Ads_Duration"`
	ActionWeight       ActionWeight                          `toml:"action_weight"`
	CombinationActions map[string][]CombinationActionsConf   `toml:"combination_actions"`
	SecretKey          string                                `toml:"secret_key"`
}
type FlogControlItem struct {
	Percent  int `toml:"percent"`
	Duration int `toml:"duration"`
}

type ActionWeight struct {
	VIEW        int `toml:"VIEW"`
	VIDEOTIMER  int `toml:"VIDEO_TIMER"`
	CLICK       int `toml:"CLICK"`
	CLOSE       int `toml:"CLOSE"`
	VIDEOFINISH int `toml:"VIDEO_FINISH"`
}
type CombinationActionsConf struct {
	PercentBegin int      `toml:"percent_begin"`
	PercentEnd   int      `toml:"percent_end"`
	GroupValue   []string `toml:"group_value"`
	LastAction   string   `toml:"last_action"`
}

var svrConf SvrConf
var once sync.Once

func GetConf() *SvrConf {
	once.Do(func () {
		_, err := toml.DecodeFile("./conf/config.toml", &svrConf)
		if err != nil {
			panic(err)
		}
	})
	return &svrConf
}
