/
lincub_response.go
52 lines (43 loc) · 1.11 KB
/
lincub_response.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package eas
import (
json "encoding/json"
"fmt"
)
type LinucbResponse struct {
ErrorCode int `json:"error_code"`
ErrorMessage string `json:"error_message"`
Data []*LinucbResponseItem `json:"data"`
}
type LinucbResponseItem struct {
ItemId string `json:"id"`
Score float64 `json:"score"`
}
func (r *LinucbResponseItem) GetModuleType() bool {
return false
}
func (r *LinucbResponseItem) GetScoreMap() map[string]float64 {
var default_val map[string]float64
return default_val
}
func (r *LinucbResponseItem) GetScore() float64 {
return r.Score
}
func LinucbResponseFunc(data interface{}) (ret []*LinucbResponseItem, err error) {
retstr, ok := data.(string)
if !ok {
err = fmt.Errorf("invalid data type, %v", data)
return
}
response := LinucbResponse{}
err = json.Unmarshal([]byte(retstr), &response)
if err != nil {
err = fmt.Errorf("error:%v, body:%s", err, bodyFormat(retstr, 512))
return
}
if response.ErrorCode != 0 {
err = fmt.Errorf("error:%s, body:%s", response.ErrorMessage, bodyFormat(retstr, 512))
return
}
ret = response.Data
return
}