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.
}
}