-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstructs.go
127 lines (114 loc) · 4.25 KB
/
structs.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package gobetafaceapi
type DetectionFlags struct {
Bestface bool
Basicpoints bool
Propoints bool
Classifiers bool
Extended bool
}
// ************************************************************************************************
// ** Error
// ************************************************************************************************
// ** Error response (500 status code)
// ************************************************************************************************
type ErrorResponse struct {
Code int `json:"error_code"`
Description string `json:"error_description"`
}
// ************************************************************************************************
// ** DetectionFlags
// ************************************************************************************************
// ** To be used as a SendMedia parameter
// ************************************************************************************************
func (st DetectionFlags) String() string {
ret := getValueOrEmpty(st.Bestface, "bestface,") +
getValueOrEmpty(st.Basicpoints, "basicpoints,") +
getValueOrEmpty(st.Propoints, "propoints,") +
getValueOrEmpty(st.Classifiers, "classifiers") +
getValueOrEmpty(st.Extended, "extended,") +
"content"
return ret
}
func getValueOrEmpty(condition bool, value string) string {
if condition {
return value
}
return ""
}
// ************************************************************************************************
// ** SendMedia
// ************************************************************************************************
// ** SendMedia request
// ************************************************************************************************
type SendMediaRequest struct {
ApiKey string `json:"api_key"`
FileURI string `json:"file_uri"`
DetectionFlags string `json:"detection_flags"`
RecognizeTargets []string `json:"recognize_targets"`
OriginalFilename string `json:"original_filename"`
}
// ************************************************************************************************
// ** SendMedia
// ************************************************************************************************
// ** SendMedia response
// ************************************************************************************************
type ExtendedMedia struct {
Media Media `json:"media"`
Recognize struct {
RecognizeUUID string `json:"recognize_uuid"`
Results []struct {
FaceUUID string `json:"face_uuid"`
Matches []struct {
FaceUUID string `json:"face_uuid"`
Confidence float64 `json:"confidence"`
IsMatch bool `json:"is_match"`
PersonID string `json:"person_id"`
} `json:"matches"`
} `json:"results"`
} `json:"recognize"`
}
type Media struct {
MediaUUID string `json:"media_uuid"`
Checksum string `json:"checksum"`
Faces []struct {
FaceUUID string `json:"face_uuid"`
MediaUUID string `json:"media_uuid"`
X float64 `json:"x"`
Y float64 `json:"y"`
Width float64 `json:"width"`
Height float64 `json:"height"`
Angle float64 `json:"angle"`
DetectionScore float64 `json:"detection_score"`
Points []struct {
X float64 `json:"x"`
Y float64 `json:"y"`
Type int `json:"type"`
Name string `json:"name"`
} `json:"points"`
UserPoints interface{} `json:"user_points"`
Tags []struct {
Name string `json:"name"`
Value string `json:"value"`
Confidence float64 `json:"confidence"`
} `json:"tags"`
PersonID string `json:"person_id"`
AppearanceID int `json:"appearance_id"`
Start string `json:"start"`
Duration string `json:"duration"`
} `json:"faces"`
Tags []struct {
Name string `json:"name"`
Value string `json:"value"`
Confidence float64 `json:"confidence"`
X float64 `json:"x"`
Y float64 `json:"y"`
Width float64 `json:"width"`
Height float64 `json:"height"`
Angle float64 `json:"angle"`
InstanceID int `json:"instance_id"`
Start string `json:"start"`
Duration string `json:"duration"`
} `json:"tags"`
OriginalFilename string `json:"original_filename"`
Duration string `json:"duration"`
}