package main

import "strings"

var adSystemSources []string
var adSystemMedium []string

func init() {
	adSystemSources = []string{"adfox", "admitad", "adnews", "adnous", "adriver", "advmaker", "aport", "aport.ru", "AvitoPromo", "AvitoContext", "begun", "bing", "B2BContext", "criteo", "directadvert", "directadvert.ru", "drivenetwork", "facebook", "fb", "facebook.com", "fb.com", "giraffio", "google", "adwords", "adsense", "instagram", "kavanga", "ladycenter", "link", "magna", "marketgid", "medialand", "merchant", "moimir", "nnn", "nnn.ru", "odnoklassniki", "price", "price.ru", "prre", "mytarget", "targetmailru", "taboola", "torg.mail.ru", "trorer", "rorer", "Ttarget", "ubn.ua", "banner.ua", "videonow", "vkontakte", "vk", "vk.com", "whisla", "youtube", "ok.ru", "linkedin", "twitter"}
	adSystemMedium = []string{"cpc", "ppc", "paidsearch", "cpv", "cpa", "cpp", "display", "cpm", "banner"}
}

const OtherEngine = "other"

func advEngine(hit map[string]string) {
	hit["AdvEngine"] = ""
	if hit["Referer"] == "" {
		return
	}
	engine := ""
	ad := hit["UTMSource"]
	if ad == "" {
		ad = hit["OpenstatService"]
	}
	if ad == "" {
		return
	}

	for _, v := range adSystemSources {
		if strings.ToLower(ad) == strings.ToLower(v) {
			engine = v
			break
		}
	}

	if engine != "" {
		switch engine {
		case "aport.ru":
			engine = "aport"
		case "directadvert.ru":
			engine = "directadvert"
		case "fb", "facebook.com", "fb.com":
			engine = "facebook"
		case "adwords", "adsense":
			engine = "google"
		case "nnn.ru":
			engine = "nnn"
		case "price":
			engine = "price.ru"
		case "mytarget":
			engine = "targetmailru"
		case "trorer":
			engine = "rorer"
		case "ubn.ua":
			engine = "banner.ua"
		case "vk", "vk.com":
			engine = "vkontakte"
		}
	}

	med := hit["UTMMedium"]
	if med == "" {
		med = hit["OpenstatSource"]
	}
	if ad != "" && engine == "" && med != "" {
		for _, v := range adSystemMedium {
			if strings.ToLower(med) == strings.ToLower(v) {
				engine = OtherEngine
				break
			}
		}
	}

	hit["AdvEngine"] = engine
}
