-
Notifications
You must be signed in to change notification settings - Fork 0
/
request_config.go
49 lines (45 loc) · 1.1 KB
/
request_config.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
package common
import (
"net/url"
"strings"
)
type RequestConfig struct {
Expansions []string `json:",omitempty"`
TweetFields []string `json:",omitempty"`
MediaFields []string `json:",omitempty"`
CustomFlags []string `json:",omitmepty"`
}
func (c RequestConfig) QueryParams() url.Values {
params := url.Values{}
if len(c.Expansions) > 0 {
params.Set("expansions", strings.Join(c.Expansions, ","))
}
if len(c.TweetFields) > 0 {
params.Set("tweet.fields", strings.Join(c.TweetFields, ","))
}
if len(c.MediaFields) > 0 {
params.Set("media.fields", strings.Join(c.MediaFields, ","))
}
return params
}
func (c RequestConfig) Equal(other RequestConfig) bool {
setEqual := func(a []string, b []string) bool {
if len(a) != len(b) {
return false
}
as := map[string]bool{}
for _, aa := range a {
as[aa] = true
}
for _, bb := range b {
if !as[bb] {
return false
}
}
return true
}
return setEqual(c.Expansions, other.Expansions) &&
setEqual(c.TweetFields, other.TweetFields) &&
setEqual(c.MediaFields, other.MediaFields) &&
setEqual(c.CustomFlags, other.CustomFlags)
}