summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/fr/gouv/etalab/mastodon/client/API.java')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/API.java96
1 files changed, 84 insertions, 12 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
index 0082188ce..254db6b55 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
@@ -57,6 +57,7 @@ import fr.gouv.etalab.mastodon.client.Entities.Notification;
import fr.gouv.etalab.mastodon.client.Entities.Peertube;
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
import fr.gouv.etalab.mastodon.client.Entities.Results;
+import fr.gouv.etalab.mastodon.client.Entities.Schedule;
import fr.gouv.etalab.mastodon.client.Entities.Status;
import fr.gouv.etalab.mastodon.client.Entities.StoredStatus;
import fr.gouv.etalab.mastodon.client.Entities.Tag;
@@ -1800,7 +1801,7 @@ public class API {
params.put("spoiler_text", status.getSpoiler_text());
}
params.put("visibility", status.getVisibility());
- break;
+ break;
default:
return -1;
}
@@ -1897,7 +1898,6 @@ public class API {
response = httpsConnection.get(getAbsoluteUrl(String.format("/scheduled_statuses/%s", status.getId())), 60, params, prefKeyOauthTokenT);
else if( call.equals("DELETE"))
responseCode = httpsConnection.delete(getAbsoluteUrl(String.format("/scheduled_statuses/%s", status.getId())), 60, params, prefKeyOauthTokenT);
-
if(call.equals("GET")) {
apiResponse.setSince_id(httpsConnection.getSince_id());
apiResponse.setMax_id(httpsConnection.getMax_id());
@@ -1917,22 +1917,21 @@ public class API {
st.setStatus(statusreturned);
storedStatus.add(st);
}else if (response != null && call.equals("GET")) {
- List<Status> statusreturned = parseStatuses(context, new JSONArray(response));
- for(Status status1: statusreturned){
+ List<Schedule> scheduleList = parseSchedule(context, new JSONArray(response));
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
+ for(Schedule schedule: scheduleList){
StoredStatus st = new StoredStatus();
- st.setCreation_date(status.getCreated_at());
+ st.setCreation_date(null);
st.setId(-1);
st.setJobId(-1);
- st.setScheduled_date(new Date(Long.parseLong(status.getScheduled_at())));
+ st.setScheduled_date(schedule.getScheduled_at());
st.setStatusReply(null);
st.setSent_date(null);
- final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
- String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
st.setUserId(userId);
- st.setStatus(status1);
+ st.setStatus(schedule.getStatus());
storedStatus.add(st);
}
- storedStatus.addAll(storedStatus);
}
} catch (HttpsConnection.HttpsConnectionException e) {
@@ -1975,6 +1974,8 @@ public class API {
parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(12));
params.put("media_ids[]", parameters.toString());
}
+ if( status.getScheduled_at() != null)
+ params.put("scheduled_at", status.getScheduled_at());
if( status.isSensitive())
params.put("sensitive", Boolean.toString(status.isSensitive()));
if( status.getSpoiler_text() != null)
@@ -1985,7 +1986,6 @@ public class API {
}
params.put("visibility", status.getVisibility());
statuses = new ArrayList<>();
-
try {
HttpsConnection httpsConnection = new HttpsConnection(context);
String response = httpsConnection.post(getAbsoluteUrl("/statuses"), 60, params, prefKeyOauthTokenT);
@@ -3195,12 +3195,43 @@ public class API {
}catch (JSONException ignored) {}
return conversation;
}
+
+
+ /**
+ * Parse json response for several scheduled toots
+ * @param jsonArray JSONArray
+ * @return List<Status>
+ */
+ private static List<Schedule> parseSchedule(Context context, JSONArray jsonArray){
+
+ List<Schedule> schedules = new ArrayList<>();
+ try {
+ int i = 0;
+ while (i < jsonArray.length() ){
+ Schedule schedule = new Schedule();
+ JSONObject resobj = jsonArray.getJSONObject(i).getJSONObject("params");
+ Status status = parseSchedule(context, resobj);
+ List<Attachment> attachements = parseAttachmentResponse(jsonArray.getJSONObject(i).getJSONArray("media_attachments"));
+ status.setMedia_attachments((ArrayList<Attachment>) attachements);
+ schedule.setStatus(status);
+ schedule.setAttachmentList(attachements);
+ schedules.add(schedule);
+ schedule.setId(jsonArray.getJSONObject(i).get("id").toString());
+ schedule.setScheduled_at(Helper.stringToDate(context, resobj.get("scheduled_at").toString()));
+ i++;
+ }
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ return schedules;
+ }
+
/**
* Parse json response for several status
* @param jsonArray JSONArray
* @return List<Status>
*/
- public static List<Status> parseStatuses(Context context, JSONArray jsonArray){
+ private static List<Status> parseStatuses(Context context, JSONArray jsonArray){
List<Status> statuses = new ArrayList<>();
try {
@@ -3363,6 +3394,26 @@ public class API {
/**
+ * Parse json response for unique schedule
+ * @param resobj JSONObject
+ * @return Status
+ */
+ @SuppressWarnings("InfiniteRecursion")
+ private static Status parseSchedule(Context context, JSONObject resobj){
+ Status status = new Status();
+ try {
+ status.setIn_reply_to_id(resobj.get("in_reply_to_id").toString());
+ status.setSensitive(Boolean.parseBoolean(resobj.get("sensitive").toString()));
+ status.setSpoiler_text(resobj.get("spoiler_text").toString());
+ try {
+ status.setVisibility(resobj.get("visibility").toString());
+ }catch (Exception e){status.setVisibility("public");}
+ status.setContent(resobj.get("text").toString());
+ } catch (JSONException ignored) {}
+ return status;
+ }
+
+ /**
* Parse json response for several notes (Misskey)
* @param jsonArray JSONArray
* @return List<Status>
@@ -3985,6 +4036,27 @@ public class API {
return context;
}
+
+
+ /**
+ * Parse json response for list of relationship
+ * @param jsonArray JSONArray
+ * @return List<Relationship>
+ */
+ private static List<Attachment> parseAttachmentResponse(JSONArray jsonArray){
+
+ List<Attachment> attachments = new ArrayList<>();
+ try {
+ int i = 0;
+ while (i < jsonArray.length() ) {
+ JSONObject resobj = jsonArray.getJSONObject(i);
+ Attachment attachment = parseAttachmentResponse(resobj);
+ attachments.add(attachment);
+ i++;
+ }
+ } catch (JSONException ignored) { }
+ return attachments;
+ }
/**
* Parse json response an unique attachment
* @param resobj JSONObject