@@ -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