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  }