Exemple #1
0
func (this PackJesgooResponseModule) Run(inner_data *context.Context) (err error) {

	var temp_response jesgoo_interface.SellerResponse
	temp_response.Success = new(bool)
	*temp_response.Success = true
	temp_response.SearchId = new(string)
	*temp_response.SearchId = inner_data.Searchid
	temp_response.Ads = make([]*jesgoo_interface.SellerResponse_Ad, 0)
	need_ad := inner_data.Req.AdSlot.Capacity
	ad_num := len(inner_data.Resp.Ads)
	var pack_num int32
	if int32(need_ad) < int32(ad_num) {
		pack_num = int32(need_ad)
	} else {
		pack_num = int32(ad_num)
	}
	utils.DebugLog.Write("pack_num is %d", pack_num)
	var i int32
	for i = 0; i < pack_num; i++ {
		var temp_ad jesgoo_interface.SellerResponse_Ad
		temp_ad.AdslotId = new(string)
		*temp_ad.AdslotId = inner_data.Req.AdSlot.Slotid
		temp_ad.MaterialType = new(jesgoo_interface.SellerResponse_Ad_MaterialType)
		switch inner_data.Req.AdSlot.AdSlotType {
		case context.AdSlotType_BANNER:
			*temp_ad.MaterialType = jesgoo_interface.SellerResponse_Ad_DYNAMIC
			temp_ad.HtmlSnippet = make([]byte, 0)
			temp_ad.HtmlSnippet = inner_data.Resp.Ads[i].HtmlSnippet.Bytes()
		case context.AdSlotType_INITIALIZATION:
			*temp_ad.MaterialType = jesgoo_interface.SellerResponse_Ad_NATIVE
			err = this.pack_native_ad(&temp_ad, &inner_data.Resp.Ads[i])
		}
		temp_response.Ads = append(temp_response.Ads, &temp_ad)
	}
	inner_data.RespBody, err = proto.Marshal(&temp_response)
	return
}
func run() {

	var req_body jesgoo_interface.SellerRequest
	var resp_body jesgoo_interface.SellerResponse
	var media_tmp jesgoo_interface.Media
	media_tmp.Id = new(string)
	*media_tmp.Id = "123"
	media_tmp.ChannelId = new(string)
	*media_tmp.ChannelId = "123"
	media_tmp.Type = new(jesgoo_interface.MediaType)
	*media_tmp.Type = jesgoo_interface.MediaType_APP
	req_body.Media = new(jesgoo_interface.Media)
	*req_body.Media = media_tmp
	var deviceid_tmp jesgoo_interface.DeviceID
	deviceid_tmp.Type = new(jesgoo_interface.DeviceIDType)
	*deviceid_tmp.Type = jesgoo_interface.DeviceIDType_IMEI
	deviceid_tmp.Id = []byte("351806037915050")
	//	deviceid_tmp.Id = make([]byte, 0)
	//	*deviceid_tmp.Id = []byte("351806037915050")
	//	deviceid_tmp.Id = append(deviceid_tmp.Id, []byte("351806037915050"))
	var device_tmp jesgoo_interface.Device
	device_tmp.Ids = make([]*jesgoo_interface.DeviceID, 0)
	device_tmp.Ids = append(device_tmp.Ids, &deviceid_tmp)
	device_tmp.Type = new(jesgoo_interface.DeviceType)
	*device_tmp.Type = jesgoo_interface.DeviceType_DEV_PHONE
	device_tmp.OsType = new(jesgoo_interface.OSType)
	*device_tmp.OsType = jesgoo_interface.OSType_ANDROID
	device_tmp.OsVersion = new(jesgoo_interface.Version)
	device_tmp.OsVersion.Major = new(uint32)
	*device_tmp.OsVersion.Major = 1
	req_body.Device = new(jesgoo_interface.Device)
	*req_body.Device = device_tmp
	req_body.Network = new(jesgoo_interface.Network)
	req_body.Network.Ip = new(string)
	*req_body.Network.Ip = "61.171.44.61"
	req_body.Adslots = make([]*jesgoo_interface.AdSlot, 0)
	var adslot jesgoo_interface.AdSlot
	adslot.Id = new(string)
	*adslot.Id = "123"
	adslot.Type = new(jesgoo_interface.AdSlotType)
	*adslot.Type = jesgoo_interface.AdSlotType_RECOMMEND
	adslot.Size = new(jesgoo_interface.Size)
	adslot.Size.Width = new(uint32)
	*adslot.Size.Width = 0
	adslot.Size.Height = new(uint32)
	*adslot.Size.Height = 0
	req_body.Adslots = append(req_body.Adslots, &adslot)

	var client_tmp jesgoo_interface.Client
	client_tmp.Type = new(jesgoo_interface.ClientType)
	*client_tmp.Type = jesgoo_interface.ClientType_NATIVESDK
	client_tmp.Version = new(jesgoo_interface.Version)
	client_tmp.Version.Major = new(uint32)
	*client_tmp.Version.Major = 1
	req_body.Client = new(jesgoo_interface.Client)
	*req_body.Client = client_tmp

	fmt.Println(req_body)
	b, err := proto.Marshal(&req_body)
	if err != nil {
		fmt.Println("format err:", err)
	}

	body := bytes.NewBuffer([]byte(b))
	res, err := http.Post("http://localhost:8081/v1/protobuf", "application/json;charset=utf-8", body)
	if err != nil {
		log.Fatal(err)
		return
	}
	fmt.Printf("response header is: %d\n", res.StatusCode)
	result, err := ioutil.ReadAll(res.Body)
	res.Body.Close()
	if err != nil {
		log.Fatal(err)
		return
	}
	err = proto.Unmarshal(result, &resp_body)
	fmt.Println("response is: " + resp_body.String())
	w.Done()
}