Skip to content

Commit 0386e59

Browse files
committed
added Parameter object for searchStream and sampleStream methods in TweetsApi
1 parent 36ed311 commit 0386e59

File tree

9 files changed

+397
-116
lines changed

9 files changed

+397
-116
lines changed

examples/src/main/java/com/twitter/clientlib/HelloWorldStreaming.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import com.twitter.clientlib.TweetsStreamListenersExecutor;
3333
import com.twitter.clientlib.api.TwitterApi;
3434
import com.twitter.clientlib.model.*;
35+
import com.twitter.clientlib.query.StreamQueryParameters;
36+
import com.twitter.clientlib.query.model.TweetField;
3537

3638

3739
public class HelloWorldStreaming {
@@ -47,13 +49,11 @@ public static void main(String[] args) {
4749
TwitterApi apiInstance = new TwitterApi();
4850
apiInstance.setTwitterCredentials(credentials);
4951

50-
Set<String> tweetFields = new HashSet<>();
51-
tweetFields.add("author_id");
52-
tweetFields.add("id");
53-
tweetFields.add("created_at");
54-
5552
try {
56-
InputStream streamResult = apiInstance.tweets().sampleStream(null, tweetFields, null , null, null, null, 0);
53+
InputStream streamResult = apiInstance.tweets().sampleStream(
54+
new StreamQueryParameters.Builder()
55+
.withTweetFields(TweetField.AUTHOR_ID, TweetField.ID, TweetField.CREATED_AT)
56+
.build());
5757
// sampleStream with TweetsStreamListenersExecutor
5858
Responder responder = new Responder();
5959
TweetsStreamListenersExecutor tsle = new TweetsStreamListenersExecutor(streamResult);

src/main/java/com/twitter/clientlib/api/TweetsApi.java

Lines changed: 62 additions & 110 deletions
Large diffs are not rendered by default.
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.twitter.clientlib.query;
2+
3+
import com.twitter.clientlib.query.model.*;
4+
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.Collections;
8+
import java.util.List;
9+
import java.util.stream.Collectors;
10+
11+
public class StreamQueryParameters {
12+
private List<TweetField> tweetFields;
13+
private List<Expansion> expansions;
14+
private List<MediaField> mediaFields;
15+
private List<PollField> pollFields;
16+
private List<UserField> userFields;
17+
private List<PlaceField> placeFields;
18+
private Integer backFillMinutes;
19+
20+
private StreamQueryParameters(Builder builder) {
21+
this.tweetFields = builder.tweetFields;
22+
this.expansions = builder.expansions;
23+
this.mediaFields = builder.mediaFields;
24+
this.pollFields = builder.pollFields;
25+
this.userFields = builder.userFields;
26+
this.placeFields = builder.placeFields;
27+
this.backFillMinutes = builder.backFillMinutes;
28+
}
29+
30+
public List<String> getTweetFields() {
31+
return tweetFields.stream().map(TweetField::getName).collect(Collectors.toList());
32+
}
33+
34+
public void setTweetFields(List<TweetField> tweetFields) {
35+
this.tweetFields = tweetFields;
36+
}
37+
38+
public List<String> getExpansions() {
39+
return expansions.stream().map(Expansion::getName).collect(Collectors.toList());
40+
}
41+
42+
public void setExpansions(List<Expansion> expansions) {
43+
this.expansions = expansions;
44+
}
45+
46+
public List<String> getMediaFields() {
47+
return mediaFields.stream().map(MediaField::getName).collect(Collectors.toList());
48+
}
49+
50+
public void setMediaFields(List<MediaField> mediaFields) {
51+
this.mediaFields = mediaFields;
52+
}
53+
54+
public List<String> getPollFields() {
55+
return pollFields.stream().map(PollField::getName).collect(Collectors.toList());
56+
}
57+
58+
public void setPollFields(List<PollField> pollFields) {
59+
this.pollFields = pollFields;
60+
}
61+
62+
public List<String> getUserFields() {
63+
return userFields.stream().map(UserField::getName).collect(Collectors.toList());
64+
}
65+
66+
public void setUserFields(List<UserField> userFields) {
67+
this.userFields = userFields;
68+
}
69+
70+
public List<String> getPlaceFields() {
71+
return placeFields.stream().map(PlaceField::getName).collect(Collectors.toList());
72+
}
73+
74+
public void setPlaceFields(List<PlaceField> placeFields) {
75+
this.placeFields = placeFields;
76+
}
77+
78+
public Integer getBackFillMinutes() {
79+
return backFillMinutes;
80+
}
81+
82+
public void setBackFillMinutes(Integer backFillMinutes) {
83+
this.backFillMinutes = backFillMinutes;
84+
}
85+
86+
public static class Builder {
87+
private final List<TweetField> tweetFields;
88+
private final List<Expansion> expansions;
89+
private final List<MediaField> mediaFields;
90+
private final List<PollField> pollFields;
91+
private final List<UserField> userFields;
92+
private final List<PlaceField> placeFields;
93+
private Integer backFillMinutes = 0;
94+
95+
public Builder() {
96+
this.tweetFields = new ArrayList<>();
97+
this.expansions = new ArrayList<>();
98+
this.mediaFields = new ArrayList<>();
99+
this.pollFields = new ArrayList<>();
100+
this.userFields = new ArrayList<>();
101+
this.placeFields = new ArrayList<>();
102+
}
103+
104+
public Builder withTweetFields(TweetField... tweetFields) {
105+
this.tweetFields.addAll(Arrays.asList(tweetFields));
106+
return this;
107+
}
108+
109+
public Builder withMediaFields(MediaField... mediaFields) {
110+
this.mediaFields.addAll(Arrays.asList(mediaFields));
111+
return this;
112+
}
113+
114+
public Builder withPollFields(PollField... pollFields) {
115+
this.pollFields.addAll(Arrays.asList(pollFields));
116+
return this;
117+
}
118+
119+
public Builder withUserFields(UserField... userFields) {
120+
this.userFields.addAll(Arrays.asList(userFields));
121+
return this;
122+
}
123+
124+
public Builder withPlaceFields(PlaceField... placeFields) {
125+
this.placeFields.addAll(Arrays.asList(placeFields));
126+
return this;
127+
}
128+
129+
public Builder withBackfillMinutes(Integer backFillMinutes) {
130+
this.backFillMinutes = backFillMinutes;
131+
return this;
132+
}
133+
134+
public StreamQueryParameters build() {
135+
return new StreamQueryParameters(this);
136+
}
137+
}
138+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.twitter.clientlib.query.model;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public enum Expansion {
7+
ATTACHMENTS_MEDIA_KEYS("attachments.media_keys"),
8+
ATTACHMENTS_POLL_IDS("attachments.poll_ids"),
9+
AUTHOR_ID("author_id"),
10+
ENTITIES_MENTIONS_USERNAME("entities.mentions.username"),
11+
GEO_PLACE_ID("geo.place_id"),
12+
IN_REPLY_TO_USER_ID("in_reply_to_user_id"),
13+
REFERENCED_TWEETS_ID("referenced_tweets.id"),
14+
REFERENCED_TWEETS_ID_AUTHOR_ID("referenced_tweets.id.author_id");
15+
16+
private final String name;
17+
18+
Expansion(String name) {
19+
this.name = name;
20+
}
21+
22+
public String getName() {
23+
return name;
24+
}
25+
26+
public static List<Expansion> all() {
27+
return Arrays.asList(Expansion.values());
28+
}
29+
30+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.twitter.clientlib.query.model;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public enum MediaField {
7+
ALT_TEXT("alt_text"),
8+
DURATION_MS("duration_ms"),
9+
HEIGHT("height"),
10+
MEDIA_KEY("media_key"),
11+
PREVIEW_IMAGE_URL("preview_image_url"),
12+
PUBLIC_METRICS("public_metrics"),
13+
TYPE("type"),
14+
URL("url"),
15+
VARIANTS("variants"),
16+
WIDTH("width"),;
17+
18+
private final String name;
19+
20+
MediaField(String name) {
21+
this.name = name;
22+
}
23+
24+
public String getName() {
25+
return name;
26+
}
27+
28+
public static List<MediaField> all() {
29+
return Arrays.asList(MediaField.values());
30+
}
31+
32+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.twitter.clientlib.query.model;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public enum PlaceField {
7+
CONTAINED_WITHIN("contained_within"),
8+
COUNTRY("country"),
9+
COUNTRY_CODE("country_code"),
10+
FULL_NAME("full_name"),
11+
GEO("geo"),
12+
ID("id"),
13+
NAME("name"),
14+
PLACE_TYPE("place_type");
15+
16+
private final String name;
17+
18+
PlaceField(String name) {
19+
this.name = name;
20+
}
21+
22+
public static List<PlaceField> all() {
23+
return Arrays.asList(PlaceField.values());
24+
}
25+
26+
public String getName() {
27+
return name;
28+
}
29+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.twitter.clientlib.query.model;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public enum PollField {
7+
DURATION_MINUTES("duration_minutes"),
8+
END_DATETIME("end_datetime"),
9+
ID("id"),
10+
OPTIONS("options"),
11+
VOTING_STATUS("voting_status");
12+
13+
private final String name;
14+
15+
PollField(String name) {
16+
this.name = name;
17+
}
18+
19+
public String getName() {
20+
return name;
21+
}
22+
23+
public static List<PollField> all() {
24+
return Arrays.asList(PollField.values());
25+
}
26+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.twitter.clientlib.query.model;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public enum TweetField {
7+
ATTACHMENTS("attachments"),
8+
AUTHOR_ID("author_id"),
9+
CONTEXT_ANNOTATIONS("context_annotations"),
10+
CONVERSATION_ID("conversation_id"),
11+
CREATED_AT("created_at"),
12+
ENTITIES("entities"),
13+
GEO("geo"),
14+
ID("id"),
15+
IN_REPLY_TO_USER_ID("in_reply_to_user_id"),
16+
LANG("lang"),
17+
POSSIBLE_SENSITIVE("possibly_sensitive"),
18+
PUBLIC_METRICS("public_metrics"),
19+
REFERENCED_TWEETS("referenced_tweets"),
20+
REPLY_SETTINGS("reply_settings"),
21+
SOURCE("source"),
22+
TEXT("text"),
23+
WITHHELD("withheld");
24+
25+
private final String name;
26+
27+
TweetField(String name) {
28+
this.name = name;
29+
}
30+
31+
public String getName() {
32+
return name;
33+
}
34+
35+
public static List<TweetField> all() {
36+
return Arrays.asList(TweetField.values());
37+
}
38+
39+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.twitter.clientlib.query.model;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public enum UserField {
7+
CREATED_AT("created_at"),
8+
DESCRIPTION("description"),
9+
ENTITIES("entities"),
10+
ID("id"),
11+
LOCATION("location"),
12+
NAME("name"),
13+
PINNED_TWEET_ID("pinned_tweet_id"),
14+
PROFILE_IMAGE_URL("profile_image_url"),
15+
PROTECTED("protected"),
16+
PUBLIC_METRICS("public_metrics"),
17+
URL("url"),
18+
USERNAME("username"),
19+
VERIFIED("verified"),
20+
WITHHELD("withheld");
21+
22+
private final String name;
23+
24+
UserField(String name) {
25+
this.name = name;
26+
}
27+
28+
public static List<UserField> all() {
29+
return Arrays.asList(UserField.values());
30+
}
31+
32+
public String getName() {
33+
return name;
34+
}
35+
}

0 commit comments

Comments
 (0)