func()

in main.go [192:251]


func (persistance *Persistance) HelloServer(w http.ResponseWriter, r *http.Request) {
	if r.URL.Path == "/i" {
		// For the map see: https://github.com/snowplow/snowplow/blob/3b8d9cc839e4af0b97c68477fb1c9f484de233e2/3-enrich/scala-common-enrich/src/main/scala/com.snowplowanalytics.snowplow.enrich/common/enrichments/EnrichmentManager.scala#L802
		// But we didn't add everything yet and we did it manually.
		// TODO Items to still parse:
		// "res=3008x1692", see https://github.com/snowplow/snowplow/blob/3b8d9cc839e4af0b97c68477fb1c9f484de233e2/3-enrich/scala-common-enrich/src/main/scala/com.snowplowanalytics.snowplow.enrich/common/enrichments/ClientEnrichments.scala#L41
		// "ds=1235x1429"
		// and a ton more that are in type ProductAnalyticsEvent struct and should be aded below as well
		event := ProductAnalyticsEvent{
			AppId:                  NullFromParams(r, "aid"),
			Platform:               NullFromParams(r, "p"),
			CollectorTstamp:        time.Now(),
			EventId:                StringFromParams(r, "eid"),
			VTracker:               NullFromParams(r, "tv"),
			VCollector:             version,
			VEtl:                   version,
			OsTimezone:             NullFromParams(r, "tz"),
			NameTracker:            NullFromParams(r, "tna"),
			BrLang:                 NullFromParams(r, "lang"),
			DocCharset:             NullFromParams(r, "cs"),
			BrFeaturesPdf:          BooleanFromParams(r, "f_pdf"),
			BrFeaturesFlash:        BooleanFromParams(r, "f_fla"),
			BrFeaturesJava:         BooleanFromParams(r, "f_java"),
			BrFeaturesDirector:     BooleanFromParams(r, "f_dir"),
			BrFeaturesQuicktime:    BooleanFromParams(r, "f_qt"),
			BrFeaturesRealplayer:   BooleanFromParams(r, "f_realp"),
			BrFeaturesWindowsmedia: BooleanFromParams(r, "f_wma"),
			BrFeaturesGears:        BooleanFromParams(r, "f_gears"),
			BrFeaturesSilverlight:  BooleanFromParams(r, "f_ag"),
			BrColordepth:           NullIntFromParams(r, "cd"),
			BrCookies:              BooleanFromParams(r, "cookie"),
			DvceCreatedTstamp:      TimeFromParams(r, "dtm"),
			BrViewheight:           IntFromParams(r, "vp"),
			DomainSessionidx:       IntFromParams(r, "vid"),
			DomainSessionid:        NullFromParams(r, "sid"),
			DomainUserid:           NullFromParams(r, "duid"),
			UserFingerprint:        NullFromParams(r, "fp"),
			PageReferrer:           NullFromParams(r, "refr"),
			PageUrl:                NullFromParams(r, "url"),
		}

		res := Allow(limiter, event.AppId)

		if res.Allowed {
			if flag.Lookup("test.v") == nil { // Normal run
				err := persistance.db.Insert(&event)
				if err != nil {
					fmt.Println(err)
					w.WriteHeader(http.StatusInternalServerError)
				}
			}
		} else {
			fmt.Println("Too Many Requests.")
			w.WriteHeader(http.StatusTooManyRequests)
		}
	} else {
		fmt.Fprintf(w, "Non Snowplow URL.Path = %q\n", r.URL.Path)
		// Setting a status here gives a warning "superfluous response.WriteHeader call from main", not sure why.
	}
}