123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package adslib
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "github.com/gin-gonic/gin"
- "io/ioutil"
- "miads/adslib/encrypt"
- "miads/adslib/utils"
- "net/url"
- "strings"
- "time"
- )
- type Request struct {
- Imei string
- Idfa string
- Model string
- Brand string
- ScreenSize string `json:"screen_size"`
- NetworkType int `json:"network_type,string"`
- Androidid string `json:"android_id"`
- Platform int `json:"platform,string"`
- OsVersion string `json:"os_version"`
- UaClient string `json:"ua"`
- ReqSource string `json:"req_source"`
- Mac string `json:"mac"`
- ReqSourceIp string `json:"ip"`
- DeviceId string `json:"device_id"`
- NewAdsFlag int64
- content string
- RequestTime int64 `json:"-"`
- QueryString string `json:"-"`
- Body string `json:"-"`
- }
- func (self *Request) Parse(c *gin.Context) {
- self.RequestTime = time.Now().Unix()
- self.QueryString = c.Request.URL.RawQuery
- body, _ := c.GetRawData()
- self.Body = string(body)
- // 取了body要塞回去
- c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(body))
- self.Imei = utils.GetArgument(c, "imei", "")
- self.Idfa = utils.GetArgument(c, "idfa", "")
- self.Model = utils.GetArgument(c, "model", "")
- self.Brand = utils.GetArgument(c, "brand", "")
- self.ScreenSize = utils.GetArgument(c, "screen_size", "")
- self.NetworkType = int(utils.GetIntArgument(c, "network_type", 3))
- self.Androidid = utils.GetArgument(c, "android_id", "")
- self.Platform = int(utils.GetIntArgument(c, "platform", 1))
- self.OsVersion = utils.GetArgument(c, "os_version", "")
- self.UaClient = utils.GetArgument(c, "ua", "")
- self.ReqSource = utils.GetArgument(c, "req_source", "")
- self.Mac = utils.GetArgument(c, "mac", "")
- self.ReqSourceIp = utils.GetArgument(c, "ip", "")
- self.DeviceId = utils.GetArgument(c, "device_id", "")
- self.NewAdsFlag = utils.GetIntArgument(c, "new_ads_flag", 0)
- self.content = utils.GetArgument(c, "ads_content", "")
- fmt.Printf("ads flag: %d, content: %s\n", self.NewAdsFlag, self.content)
- // 进行解密
- if self.NewAdsFlag == 1 && self.content != "" {
- contentDecode, err := encrypt.Decrypt(self.content, []byte(GetConf().SecretKey))
- if err != nil {
- fmt.Printf("error: %s", err)
- c.String(404, "decode failed")
- return
- }
- contentDecode = utils.Rstrip(contentDecode)
- err = json.Unmarshal([]byte(contentDecode), self)
- if err != nil {
- fmt.Println(err)
- c.String(404, "decode json body failed: %s", err)
- return
- }
- fmt.Println(contentDecode)
- }
- self.UaClient, _ = url.QueryUnescape(self.UaClient)
- self.Mac = strings.ReplaceAll(self.Mac, ":", "")
- }
- func (self *Request) IsMiDevice() bool {
- if strings.Index(self.Brand, "mi") != -1 ||
- strings.Index(self.Brand, "MI") != -1 ||
- strings.Index(self.Brand, "Mi") != -1 {
- return true
- }
- return false
- }
|