Start work on integrating Retrofit - Mastodon API definition
This commit is contained in:
parent
86f8bf3c2f
commit
cff0f35269
5 changed files with 240 additions and 0 deletions
|
@ -35,4 +35,5 @@ dependencies {
|
|||
compile 'com.github.peter9870:sparkbutton:master'
|
||||
testCompile 'junit:junit:4.12'
|
||||
compile 'com.mikhaellopez:circularfillableloaders:1.2.0'
|
||||
compile 'com.squareup.retrofit2:retrofit:2.2.0'
|
||||
}
|
||||
|
|
105
app/src/main/java/com/keylesspalace/tusky/MastodonService.java
Normal file
105
app/src/main/java/com/keylesspalace/tusky/MastodonService.java
Normal file
|
@ -0,0 +1,105 @@
|
|||
package com.keylesspalace.tusky;
|
||||
|
||||
import com.keylesspalace.tusky.entity.Media;
|
||||
import com.keylesspalace.tusky.entity.Relationship;
|
||||
import com.keylesspalace.tusky.entity.StatusContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import okhttp3.RequestBody;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.http.DELETE;
|
||||
import retrofit2.http.Field;
|
||||
import retrofit2.http.FormUrlEncoded;
|
||||
import retrofit2.http.GET;
|
||||
import retrofit2.http.Multipart;
|
||||
import retrofit2.http.POST;
|
||||
import retrofit2.http.Part;
|
||||
import retrofit2.http.Path;
|
||||
import retrofit2.http.Query;
|
||||
|
||||
public interface MastodonService {
|
||||
@GET("api/v1/timelines/home")
|
||||
Call<List<Status>> homeTimeline(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@GET("api/v1/timelines/public")
|
||||
Call<List<Status>> publicTimeline(@Query("local") boolean local, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@GET("api/v1/timelines/tag/{hashtag}")
|
||||
Call<List<Status>> hashtagTimeline(@Path("hashtag") String hashtag, @Query("local") boolean local, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
|
||||
@GET("api/v1/notifications")
|
||||
Call<List<Notification>> notifications(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@POST("api/v1/notifications/clear")
|
||||
Call clearNotifications();
|
||||
@GET("api/v1/notifications/{id}")
|
||||
Call<Notification> notification(@Path("id") int notificationId);
|
||||
|
||||
@Multipart
|
||||
@POST("api/v1/media")
|
||||
Call<Media> uploadMedia(@Part("file") RequestBody file);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("api/v1/statuses")
|
||||
Call<Status> createStatus(@Field("status") String text, @Field("in_reply_to_id") int inReplyToId, @Field("spoiler_text") String warningText, @Field("visibility") String visibility, @Field("sensitive") boolean sensitive, @Field("media_ids[]") List<Integer> mediaIds);
|
||||
@GET("api/v1/statuses/{id}")
|
||||
Call<Status> status(@Path("id") int statusId);
|
||||
@GET("api/v1/statuses/{id}/context")
|
||||
Call<StatusContext> statusContext(@Path("id") int statusId);
|
||||
@GET("api/v1/statuses/{id}/reblogged_by")
|
||||
Call<List<Account>> statusRebloggedBy(@Path("id") int statusId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@GET("api/v1/statuses/{id}/favourited_by")
|
||||
Call<List<Account>> statusFavouritedBy(@Path("id") int statusId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@DELETE("api/v1/statuses/{id}")
|
||||
Call deleteStatus(@Path("id") int statusId);
|
||||
@POST("api/v1/statuses/{id}/reblog")
|
||||
Call<Status> reblogStatus(@Path("id") int statusId);
|
||||
@POST("api/v1/statuses/{id}/unreblog")
|
||||
Call<Status> unreblogStatus(@Path("id") int statusId);
|
||||
@POST("api/v1/statuses/{id}/favourite")
|
||||
Call<Status> favouriteStatus(@Path("id") int statusId);
|
||||
@POST("api/v1/statuses/{id}/unfavourite")
|
||||
Call<Status> unfavouriteStatus(@Path("id") int statusId);
|
||||
|
||||
@GET("api/v1/accounts/verify_credentials")
|
||||
Call<Account> accountVerifyCredentials();
|
||||
@GET("api/v1/accounts/search")
|
||||
Call<List<Account>> searchAccounts(@Query("q") String q, @Query("resolve") boolean resolve, @Query("limit") int limit);
|
||||
@GET("api/v1/accounts/{id}")
|
||||
Call<Account> account(@Path("id") int accountId);
|
||||
@GET("api/v1/accounts/{id}/statuses")
|
||||
Call<List<Status>> accountStatuses(@Path("id") int accountId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@GET("api/v1/accounts/{id}/followers")
|
||||
Call<List<Account>> accountFollowers(@Path("id") int accountId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@GET("api/v1/accounts/{id}/following")
|
||||
Call<List<Account>> accountFollowing(@Path("id") int accountId, @Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@POST("api/v1/accounts/{id}/follow")
|
||||
Call<Relationship> followAccount(@Path("id") int accountId);
|
||||
@POST("api/v1/accounts/{id}/unfollow")
|
||||
Call<Relationship> unfollowAccount(@Path("id") int accountId);
|
||||
@POST("api/v1/accounts/{id}/block")
|
||||
Call<Relationship> blockAccount(@Path("id") int accountId);
|
||||
@POST("api/v1/accounts/{id}/unblock")
|
||||
Call<Relationship> unblockAccount(@Path("id") int accountId);
|
||||
@POST("api/v1/accounts/{id}/mute")
|
||||
Call<Relationship> muteAccount(@Path("id") int accountId);
|
||||
@POST("api/v1/accounts/{id}/unmute")
|
||||
Call<Relationship> unmuteAccount(@Path("id") int accountId);
|
||||
|
||||
@GET("api/v1/accounts/relationships")
|
||||
Call<List<Relationship>> relationships(@Query("id[]") List<Integer> accountIds);
|
||||
|
||||
@GET("api/v1/blocks")
|
||||
Call<List<Account>> blocks(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
|
||||
@GET("api/v1/mutes")
|
||||
Call<List<Account>> mutes(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
|
||||
@GET("api/v1/favourites")
|
||||
Call<List<Account>> favourites(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
|
||||
@GET("api/v1/follow_requests")
|
||||
Call<List<Account>> followRequests(@Query("max_id") int maxId, @Query("since_id") int sinceId, @Query("limit") int limit);
|
||||
@POST("api/v1/follow_requests/{id}/authorize")
|
||||
Call<Relationship> authorizeFollowRequest(@Path("id") int accountId);
|
||||
@POST("api/v1/follow_requests/{id}/reject")
|
||||
Call<Relationship> rejectFollowRequest(@Path("id") int accountId);
|
||||
}
|
49
app/src/main/java/com/keylesspalace/tusky/entity/Media.java
Normal file
49
app/src/main/java/com/keylesspalace/tusky/entity/Media.java
Normal file
|
@ -0,0 +1,49 @@
|
|||
package com.keylesspalace.tusky.entity;
|
||||
|
||||
public class Media {
|
||||
int id;
|
||||
String type;
|
||||
String url;
|
||||
String preview_url;
|
||||
String text_url;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getPreview_url() {
|
||||
return preview_url;
|
||||
}
|
||||
|
||||
public void setPreview_url(String preview_url) {
|
||||
this.preview_url = preview_url;
|
||||
}
|
||||
|
||||
public String getText_url() {
|
||||
return text_url;
|
||||
}
|
||||
|
||||
public void setText_url(String text_url) {
|
||||
this.text_url = text_url;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,58 @@
|
|||
package com.keylesspalace.tusky.entity;
|
||||
|
||||
public class Relationship {
|
||||
public boolean isFollowing() {
|
||||
return following;
|
||||
}
|
||||
|
||||
public void setFollowing(boolean following) {
|
||||
this.following = following;
|
||||
}
|
||||
|
||||
public boolean isFollowed_by() {
|
||||
return followed_by;
|
||||
}
|
||||
|
||||
public void setFollowed_by(boolean followed_by) {
|
||||
this.followed_by = followed_by;
|
||||
}
|
||||
|
||||
public boolean isBlocking() {
|
||||
return blocking;
|
||||
}
|
||||
|
||||
public void setBlocking(boolean blocking) {
|
||||
this.blocking = blocking;
|
||||
}
|
||||
|
||||
public boolean isMuting() {
|
||||
return muting;
|
||||
}
|
||||
|
||||
public void setMuting(boolean muting) {
|
||||
this.muting = muting;
|
||||
}
|
||||
|
||||
public boolean isRequested() {
|
||||
return requested;
|
||||
}
|
||||
|
||||
public void setRequested(boolean requested) {
|
||||
this.requested = requested;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
int id;
|
||||
boolean following;
|
||||
boolean followed_by;
|
||||
boolean blocking;
|
||||
boolean muting;
|
||||
boolean requested;
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.keylesspalace.tusky.entity;
|
||||
|
||||
import com.keylesspalace.tusky.Status;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class StatusContext {
|
||||
List<Status> ancestors;
|
||||
|
||||
public List<Status> getAncestors() {
|
||||
return ancestors;
|
||||
}
|
||||
|
||||
public void setAncestors(List<Status> ancestors) {
|
||||
this.ancestors = ancestors;
|
||||
}
|
||||
|
||||
public List<Status> getDescendants() {
|
||||
return descendants;
|
||||
}
|
||||
|
||||
public void setDescendants(List<Status> descendants) {
|
||||
this.descendants = descendants;
|
||||
}
|
||||
|
||||
List<Status> descendants;
|
||||
}
|
Loading…
Reference in a new issue