summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/fr/gouv/etalab/mastodon/client
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/fr/gouv/etalab/mastodon/client')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/API.java72
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Schedule.java38
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/StoredStatus.java67
3 files changed, 142 insertions, 35 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 254db6b55..b95181034 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
@@ -120,7 +120,9 @@ public class API {
PEERTUBECOMMENT,
PEERTUBEREPLY,
PEERTUBEDELETECOMMENT,
- PEERTUBEDELETEVIDEO
+ PEERTUBEDELETEVIDEO,
+ UPDATESERVERSCHEDULE,
+ DELETESCHEDULED
}
public enum accountPrivacy {
@@ -1856,33 +1858,12 @@ public class API {
* @param status Status object related to the status
* @return APIResponse
*/
- public APIResponse scheduledAction(String call, Status status, String max_id){
+ public APIResponse scheduledAction(String call, Status status, String max_id, String targetedId){
HashMap<String, String> params = new HashMap<>();
if( call.equals("PUT")){
- try {
- params.put("status", URLEncoder.encode(status.getContent(), "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- params.put("status", status.getContent());
- }
- if( status.getIn_reply_to_id() != null)
- params.put("in_reply_to_id", status.getIn_reply_to_id());
- if( status.getMedia_attachments() != null && status.getMedia_attachments().size() > 0 ) {
- StringBuilder parameters = new StringBuilder();
- for(Attachment attachment: status.getMedia_attachments())
- parameters.append("media_ids[]=").append(attachment.getId()).append("&");
- parameters = new StringBuilder(parameters.substring(0, parameters.length() - 1).substring(12));
- params.put("media_ids[]", parameters.toString());
- }
- if( status.isSensitive())
- params.put("sensitive", Boolean.toString(status.isSensitive()));
- if( status.getSpoiler_text() != null)
- try {
- params.put("spoiler_text", URLEncoder.encode(status.getSpoiler_text(), "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- params.put("spoiler_text", status.getSpoiler_text());
- }
- params.put("visibility", status.getVisibility());
+ if( status.getScheduled_at() != null)
+ params.put("scheduled_at", status.getScheduled_at());
}else if(call.equals("GET")){
if( max_id != null )
params.put("max_id", max_id);
@@ -1891,30 +1872,30 @@ public class API {
try {
HttpsConnection httpsConnection = new HttpsConnection(context);
String response = null;
- int responseCode;
+ int responseCode = -1;
if( call.equals("GET"))
response = httpsConnection.get(getAbsoluteUrl("/scheduled_statuses/"), 60, null, prefKeyOauthTokenT);
else if( call.equals("PUT"))
- response = httpsConnection.get(getAbsoluteUrl(String.format("/scheduled_statuses/%s", status.getId())), 60, params, prefKeyOauthTokenT);
+ response = httpsConnection.put(getAbsoluteUrl(String.format("/scheduled_statuses/%s", targetedId)), 60, params, prefKeyOauthTokenT);
else if( call.equals("DELETE"))
- responseCode = httpsConnection.delete(getAbsoluteUrl(String.format("/scheduled_statuses/%s", status.getId())), 60, params, prefKeyOauthTokenT);
+ responseCode = httpsConnection.delete(getAbsoluteUrl(String.format("/scheduled_statuses/%s",targetedId)), 60, null, prefKeyOauthTokenT);
if(call.equals("GET")) {
apiResponse.setSince_id(httpsConnection.getSince_id());
apiResponse.setMax_id(httpsConnection.getMax_id());
}
if (response != null && call.equals("PUT")) {
- Status statusreturned = parseStatuses(context, new JSONObject(response));
+ Schedule schedule = parseSimpleSchedule(context, new JSONObject(response));
StoredStatus st = new StoredStatus();
st.setCreation_date(status.getCreated_at());
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(statusreturned);
+ st.setStatus(schedule.getStatus());
storedStatus.add(st);
}else if (response != null && call.equals("GET")) {
List<Schedule> scheduleList = parseSchedule(context, new JSONArray(response));
@@ -1923,7 +1904,7 @@ public class API {
for(Schedule schedule: scheduleList){
StoredStatus st = new StoredStatus();
st.setCreation_date(null);
- st.setId(-1);
+ st.setScheduledServerdId(schedule.getId());
st.setJobId(-1);
st.setScheduled_date(schedule.getScheduled_at());
st.setStatusReply(null);
@@ -3196,6 +3177,29 @@ public class API {
return conversation;
}
+ /**
+ * Parse json response for several scheduled toots
+ * @param jsonObject JSONObject
+ * @return List<Status>
+ */
+ private static Schedule parseSimpleSchedule(Context context, JSONObject jsonObject){
+ Schedule schedule = new Schedule();
+ try {
+ JSONObject resobj = jsonObject.getJSONObject("params");
+ Status status = parseSchedule(context, resobj);
+ List<Attachment> attachements = parseAttachmentResponse(jsonObject.getJSONArray("media_attachments"));
+ status.setMedia_attachments((ArrayList<Attachment>) attachements);
+ schedule.setStatus(status);
+ schedule.setAttachmentList(attachements);
+ schedule.setId(jsonObject.get("id").toString());
+ schedule.setScheduled_at(Helper.mstStringToDate(context, jsonObject.get("scheduled_at").toString()));
+ } catch (JSONException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return schedule;
+ }
/**
* Parse json response for several scheduled toots
@@ -3217,11 +3221,13 @@ public class API {
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()));
+ schedule.setScheduled_at(Helper.mstStringToDate(context, jsonArray.getJSONObject(i).get("scheduled_at").toString()));
i++;
}
} catch (JSONException e) {
e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
}
return schedules;
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Schedule.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Schedule.java
index 6013e4c9d..11de94c1e 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Schedule.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Schedule.java
@@ -15,6 +15,9 @@
package fr.gouv.etalab.mastodon.client.Entities;
+import android.os.Parcel;
+import android.os.Parcelable;
+
import java.util.Date;
import java.util.List;
@@ -23,7 +26,7 @@ import java.util.List;
* Manages scheduled toots
*/
-public class Schedule {
+public class Schedule implements Parcelable {
private String id;
private Date scheduled_at;
@@ -64,4 +67,37 @@ public class Schedule {
public void setAttachmentList(List<Attachment> attachmentList) {
this.attachmentList = attachmentList;
}
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(this.id);
+ dest.writeLong(this.scheduled_at != null ? this.scheduled_at.getTime() : -1);
+ dest.writeParcelable(this.status, flags);
+ dest.writeTypedList(this.attachmentList);
+ }
+
+ protected Schedule(Parcel in) {
+ this.id = in.readString();
+ long tmpScheduled_at = in.readLong();
+ this.scheduled_at = tmpScheduled_at == -1 ? null : new Date(tmpScheduled_at);
+ this.status = in.readParcelable(Status.class.getClassLoader());
+ this.attachmentList = in.createTypedArrayList(Attachment.CREATOR);
+ }
+
+ public static final Parcelable.Creator<Schedule> CREATOR = new Parcelable.Creator<Schedule>() {
+ @Override
+ public Schedule createFromParcel(Parcel source) {
+ return new Schedule(source);
+ }
+
+ @Override
+ public Schedule[] newArray(int size) {
+ return new Schedule[size];
+ }
+ };
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/StoredStatus.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/StoredStatus.java
index 82d0c428b..6062fbad6 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/StoredStatus.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/StoredStatus.java
@@ -1,5 +1,8 @@
package fr.gouv.etalab.mastodon.client.Entities;
+import android.os.Parcel;
+import android.os.Parcelable;
+
import java.util.Date;
@@ -8,7 +11,7 @@ import java.util.Date;
* Manage Stored status
*/
-public class StoredStatus {
+public class StoredStatus implements Parcelable {
private int id;
private Date creation_date;
@@ -20,6 +23,7 @@ public class StoredStatus {
private Status statusReply;
private String instance;
private String userId;
+ private String scheduledServerdId;
public int getId() {
return id;
@@ -101,4 +105,65 @@ public class StoredStatus {
public void setStatusReply(Status statusReply) {
this.statusReply = statusReply;
}
+
+
+ public String getScheduledServerdId() {
+ return scheduledServerdId;
+ }
+
+ public void setScheduledServerdId(String scheduledServerdId) {
+ this.scheduledServerdId = scheduledServerdId;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(this.id);
+ dest.writeLong(this.creation_date != null ? this.creation_date.getTime() : -1);
+ dest.writeLong(this.scheduled_date != null ? this.scheduled_date.getTime() : -1);
+ dest.writeLong(this.sent_date != null ? this.sent_date.getTime() : -1);
+ dest.writeInt(this.jobId);
+ dest.writeByte(this.isSent ? (byte) 1 : (byte) 0);
+ dest.writeParcelable(this.status, flags);
+ dest.writeParcelable(this.statusReply, flags);
+ dest.writeString(this.instance);
+ dest.writeString(this.userId);
+ dest.writeString(this.scheduledServerdId);
+ }
+
+ public StoredStatus() {
+ }
+
+ protected StoredStatus(Parcel in) {
+ this.id = in.readInt();
+ long tmpCreation_date = in.readLong();
+ this.creation_date = tmpCreation_date == -1 ? null : new Date(tmpCreation_date);
+ long tmpScheduled_date = in.readLong();
+ this.scheduled_date = tmpScheduled_date == -1 ? null : new Date(tmpScheduled_date);
+ long tmpSent_date = in.readLong();
+ this.sent_date = tmpSent_date == -1 ? null : new Date(tmpSent_date);
+ this.jobId = in.readInt();
+ this.isSent = in.readByte() != 0;
+ this.status = in.readParcelable(Status.class.getClassLoader());
+ this.statusReply = in.readParcelable(Status.class.getClassLoader());
+ this.instance = in.readString();
+ this.userId = in.readString();
+ this.scheduledServerdId = in.readString();
+ }
+
+ public static final Creator<StoredStatus> CREATOR = new Creator<StoredStatus>() {
+ @Override
+ public StoredStatus createFromParcel(Parcel source) {
+ return new StoredStatus(source);
+ }
+
+ @Override
+ public StoredStatus[] newArray(int size) {
+ return new StoredStatus[size];
+ }
+ };
}