Skip to content

Commit 9df4dea

Browse files
committed
Support Create Multireddit api method
1 parent cfabdb5 commit 9df4dea

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

src/main/java/org/quantumbadger/redreader/common/Constants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ public static final class Reddit {
149149
public static final String PATH_MULTIREDDITS_MINE = "/api/multi/mine.json";
150150
public static final String PATH_COMMENTS = "/comments/";
151151
public static final String PATH_ME = "/api/v1/me";
152+
public static final String PATH_MULTIREDDIT = "/api/multi";
153+
152154

153155
public static String getScheme() {
154156
return SCHEME_HTTPS;

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
import androidx.annotation.Nullable;
2626
import androidx.appcompat.app.AppCompatActivity;
2727

28+
import org.json.JSONArray;
29+
import org.json.JSONException;
30+
import org.json.JSONObject;
2831
import org.quantumbadger.redreader.account.RedditAccount;
2932
import org.quantumbadger.redreader.activities.BugReportActivity;
3033
import org.quantumbadger.redreader.cache.CacheManager;
@@ -959,6 +962,45 @@ public void onFailure(@NonNull final RRError error) {
959962
));
960963
}
961964

965+
public static void createMultireddit(
966+
final CacheManager cm,
967+
final APIResponseHandler.ActionResponseHandler handler,
968+
final RedditAccount user,
969+
final String multiredditName,
970+
final List<String> subredditNames,
971+
final Context context) {
972+
973+
final Uri.Builder builder = Constants.Reddit.getUriBuilder(
974+
Constants.Reddit.PATH_MULTIREDDIT)
975+
.appendPath("user")
976+
.appendPath(user.username)
977+
.appendPath("m")
978+
.appendPath(multiredditName);
979+
980+
final JSONObject jsonObject = new JSONObject();
981+
try {
982+
jsonObject.put("display_name", multiredditName);
983+
jsonObject.put("subreddits", subredditNamesJson(subredditNames));
984+
} catch (final JSONException e) {
985+
throw new RuntimeException(e);
986+
}
987+
988+
cm.makeRequest(createPostRequest(
989+
UriString.from(builder.build()),
990+
user,
991+
new ArrayList<>(Collections.singleton(
992+
new PostField("model", jsonObject.toString()))),
993+
context,
994+
new GenericResponseHandler(handler)));
995+
}
996+
997+
private static JSONArray subredditNamesJson(final List<String> subredditNames) {
998+
final JSONArray jsonArray = new JSONArray();
999+
subredditNames.stream().forEach(
1000+
sn -> jsonArray.put(new JSONObject(Collections.singletonMap("name", sn))));
1001+
return jsonArray;
1002+
}
1003+
9621004
@Nullable
9631005
private static APIResponseHandler.APIFailureType findFailureType(final JsonValue response) {
9641006

0 commit comments

Comments
 (0)