github.com/bububa/oceanengine/marketing-api@v0.0.0-20210315120513-0b953137f7a6/api/track/active.go (about) 1 package track 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net/http" 7 "net/url" 8 "strconv" 9 10 "github.com/bububa/oceanengine/marketing-api/enum" 11 "github.com/bububa/oceanengine/marketing-api/model/track" 12 ) 13 14 // API上报数据(new) 15 func Active(req *track.ActiveRequest) (string, error) { 16 values := &url.Values{} 17 if req.Callback != "" { 18 values.Set("callback", req.Callback) 19 values.Set("os", strconv.Itoa(req.Os)) 20 if req.Os == enum.Track_ANDROID { 21 values.Set("imei", req.Imei) 22 values.Set("muid", req.Muid) 23 values.Set("oaid", req.Oaid) 24 if req.OaidMd5 != "" { 25 values.Set("oaid_md5", req.OaidMd5) 26 } 27 } else { 28 values.Set("idfa", req.Idfa) 29 } 30 if req.Caid1 != "" { 31 values.Set("caid1", req.Caid1) 32 } 33 if req.Caid2 != "" { 34 values.Set("caid2", req.Caid2) 35 } 36 } else { 37 values.Set("link", req.Link) 38 } 39 values.Set("event_type", strconv.Itoa(req.EventType)) 40 if req.ConvTime > 0 { 41 values.Set("conv_time", strconv.FormatInt(req.ConvTime, 10)) 42 } 43 if req.Source != "" { 44 values.Set("source", req.Source) 45 } 46 for k, v := range req.Ext { 47 values.Set(k, v) 48 } 49 reqUrl := fmt.Sprintf("https://ad.oceanengine.com/track/activate/?%s", values.Encode()) 50 resp, err := http.DefaultClient.Get(reqUrl) 51 if err != nil { 52 return reqUrl, err 53 } 54 defer resp.Body.Close() 55 var ret track.Response 56 err = json.NewDecoder(resp.Body).Decode(&ret) 57 if ret.IsError() { 58 return reqUrl, ret 59 } 60 return reqUrl, nil 61 }