Skip to content

Commit b77035d

Browse files
authored
Merge pull request #274 from michimani/feature/269/support-backfill-minutes-parameter
feat: support backfill_minutes parameter at GET /2/tweets/sample/stream #269
2 parents b6de378 + 607c849 commit b77035d

2 files changed

Lines changed: 51 additions & 19 deletions

File tree

tweet/volumestream/types/parameter.go

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,43 @@ package types
22

33
import (
44
"io"
5+
"strconv"
56

67
"github.com/michimani/gotwi/fields"
78
"github.com/michimani/gotwi/internal/util"
89
)
910

11+
type SampleStreamBackfillMinutes int
12+
13+
func (v SampleStreamBackfillMinutes) Valid() bool {
14+
return int(v) > 0 && int(v) <= 5
15+
}
16+
17+
func (v SampleStreamBackfillMinutes) String() string {
18+
return strconv.Itoa(int(v))
19+
}
20+
1021
type SampleStreamInput struct {
1122
accessToken string
1223

1324
// Query parameters
14-
Expansions fields.ExpansionList
15-
MediaFields fields.MediaFieldList
16-
PlaceFields fields.PlaceFieldList
17-
PollFields fields.PollFieldList
18-
TweetFields fields.TweetFieldList
19-
UserFields fields.UserFieldList
25+
BackfillMinutes SampleStreamBackfillMinutes
26+
Expansions fields.ExpansionList
27+
MediaFields fields.MediaFieldList
28+
PlaceFields fields.PlaceFieldList
29+
PollFields fields.PollFieldList
30+
TweetFields fields.TweetFieldList
31+
UserFields fields.UserFieldList
2032
}
2133

2234
var getQueryParameters = map[string]struct{}{
23-
"expansions": {},
24-
"media.fields": {},
25-
"place.fields": {},
26-
"poll.fields": {},
27-
"tweet.fields": {},
28-
"user.fields": {},
35+
"backfill_minutes": {},
36+
"expansions": {},
37+
"media.fields": {},
38+
"place.fields": {},
39+
"poll.fields": {},
40+
"tweet.fields": {},
41+
"user.fields": {},
2942
}
3043

3144
func (p *SampleStreamInput) SetAccessToken(token string) {
@@ -60,5 +73,9 @@ func (p *SampleStreamInput) ParameterMap() map[string]string {
6073
m := map[string]string{}
6174
m = fields.SetFieldsParams(m, p.Expansions, p.MediaFields, p.PlaceFields, p.PollFields, p.TweetFields, p.UserFields)
6275

76+
if p.BackfillMinutes.Valid() {
77+
m["backfill_minutes"] = p.BackfillMinutes.String()
78+
}
79+
6380
return m
6481
}

tweet/volumestream/types/parameter_test.go

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,20 @@ func Test_SampleStreamInput_ResolveEndpoint(t *testing.T) {
4747
params: &types.SampleStreamInput{},
4848
expect: endpoint,
4949
},
50+
{
51+
name: "with backfill_minutes",
52+
params: &types.SampleStreamInput{
53+
BackfillMinutes: types.SampleStreamBackfillMinutes(2),
54+
},
55+
expect: endpoint + "?backfill_minutes=2",
56+
},
57+
{
58+
name: "with invalid backfill_minutes",
59+
params: &types.SampleStreamInput{
60+
BackfillMinutes: types.SampleStreamBackfillMinutes(100),
61+
},
62+
expect: endpoint,
63+
},
5064
{
5165
name: "with expansions",
5266
params: &types.SampleStreamInput{
@@ -92,14 +106,15 @@ func Test_SampleStreamInput_ResolveEndpoint(t *testing.T) {
92106
{
93107
name: "all query parameters",
94108
params: &types.SampleStreamInput{
95-
Expansions: fields.ExpansionList{"ex"},
96-
MediaFields: fields.MediaFieldList{"mf"},
97-
PlaceFields: fields.PlaceFieldList{"plf"},
98-
PollFields: fields.PollFieldList{"pof"},
99-
UserFields: fields.UserFieldList{"uf"},
100-
TweetFields: fields.TweetFieldList{"tf"},
109+
BackfillMinutes: types.SampleStreamBackfillMinutes(4),
110+
Expansions: fields.ExpansionList{"ex"},
111+
MediaFields: fields.MediaFieldList{"mf"},
112+
PlaceFields: fields.PlaceFieldList{"plf"},
113+
PollFields: fields.PollFieldList{"pof"},
114+
UserFields: fields.UserFieldList{"uf"},
115+
TweetFields: fields.TweetFieldList{"tf"},
101116
},
102-
expect: endpoint + "?expansions=ex&media.fields=mf&place.fields=plf&poll.fields=pof&tweet.fields=tf&user.fields=uf",
117+
expect: endpoint + "?backfill_minutes=4&expansions=ex&media.fields=mf&place.fields=plf&poll.fields=pof&tweet.fields=tf&user.fields=uf",
103118
},
104119
{
105120
name: "nil",

0 commit comments

Comments
 (0)