Skip to content

Commit a9b131f

Browse files
committed
Support get multireddit data api method
1 parent 28c2370 commit a9b131f

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

src/main/java/org/quantumbadger/redreader/reddit/RedditAPI.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,74 @@ public void onFailure(@NonNull final RRError error) {
959959
));
960960
}
961961

962+
public static void requestMultiredditSubredditList(
963+
@NonNull final CacheManager cm,
964+
@NonNull final String multiredditName,
965+
@NonNull final RedditAccount user,
966+
@NonNull final Context context,
967+
@NonNull final APIResponseHandler.ValueResponseHandler<List<String>> handler,
968+
@NonNull final DownloadStrategy downloadStrategy) {
969+
970+
final UriString uriString = UriString.from(Constants.Reddit.getUriBuilder(
971+
Constants.Reddit.PATH_MULTIREDDIT)
972+
.appendPath("user")
973+
.appendPath(user.username)
974+
.appendPath("m")
975+
.appendPath(multiredditName)
976+
.build());
977+
978+
cm.makeRequest(createGetRequest(
979+
uriString,
980+
user,
981+
new Priority(Constants.Priority.API_SUBREDDIT_LIST),
982+
Constants.FileType.SUBREDDIT_LIST,
983+
downloadStrategy,
984+
context,
985+
new CacheRequestJSONParser.Listener() {
986+
@Override
987+
public void onJsonParsed(
988+
@NonNull final JsonValue result,
989+
final TimestampUTC timestamp,
990+
@NonNull final UUID session,
991+
final boolean fromCache) {
992+
993+
try {
994+
final Optional<JsonArray> subreddits
995+
= result.getArrayAtPath("data", "subreddits");
996+
997+
final ArrayList<String> subredditNames = new ArrayList<>();
998+
999+
if (subreddits.isPresent()) {
1000+
for(final JsonValue value : subreddits.get()) {
1001+
final Optional<JsonValue> subredditName = value.getAtPath(
1002+
"name");
1003+
if (subredditName.isPresent()) {
1004+
subredditNames.add(subredditName.get().asString());
1005+
}
1006+
}
1007+
}
1008+
1009+
handler.notifySuccess(subredditNames);
1010+
1011+
} catch(final Exception e) {
1012+
onFailure(General.getGeneralErrorForFailure(
1013+
context,
1014+
CacheRequest.RequestFailureType.PARSE,
1015+
e,
1016+
null,
1017+
uriString,
1018+
Optional.of(new FailedRequestBody(result))));
1019+
}
1020+
}
1021+
1022+
@Override
1023+
public void onFailure(@NonNull final RRError error) {
1024+
handler.notifyFailure(error);
1025+
}
1026+
}
1027+
));
1028+
}
1029+
9621030
public static void removeSubredditFromMultireddit(
9631031
final CacheManager cm,
9641032
final APIResponseHandler.ActionResponseHandler handler,

0 commit comments

Comments
 (0)