package com.zulip.android.service; import com.zulip.android.filters.NarrowFilter; import com.zulip.android.networking.response.EditResponse; import com.zulip.android.networking.response.GetMessagesResponse; import com.zulip.android.networking.response.LoginResponse; import com.zulip.android.networking.response.RawMessageResponse; import com.zulip.android.networking.response.StarResponse; import com.zulip.android.networking.response.UploadResponse; import com.zulip.android.networking.response.UserConfigurationResponse; import com.zulip.android.networking.response.ZulipBackendResponse; import com.zulip.android.networking.response.events.GetEventResponse; import okhttp3.MultipartBody; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.Multipart; import retrofit2.http.PATCH; import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Part; import retrofit2.http.Path; import retrofit2.http.Query; import retrofit2.http.Streaming; public interface ZulipServices { @GET("v1/messages?apply_markdown=true") Call<GetMessagesResponse> getMessages(@Query("anchor") String anchor, @Query("num_before") String numBefore, @Query("num_after") String numAfter, @Query("narrow") NarrowFilter narrowFilter); @GET("v1/events") Call<GetEventResponse> getEvents(@Query("dont_block") Boolean dontLongPoll, @Query("last_event_id") int id, @Query("queue_id") String queueId); @FormUrlEncoded @POST("v1/register") Call<UserConfigurationResponse> register(@Field("apply_markdown") boolean applyMarkdown); @FormUrlEncoded @POST("v1/register") Call<String> registerDebug(@Field("apply_markdown") boolean applyMarkdown); @FormUrlEncoded @PUT("v1/users/me/pointer") Call<ResponseBody> updatePointer(@Field("pointer") String pointer); @GET("v1/get_auth_backends") Call<ZulipBackendResponse> getAuthBackends(); @FormUrlEncoded @POST("v1/fetch_api_key") Call<LoginResponse> login(@Field("username") String username, @Field("password") String password); @FormUrlEncoded @POST("v1/dev_fetch_api_key") Call<LoginResponse> loginDEV(@Field("username") String username); @Streaming @Multipart @POST("v1/user_uploads") Call<UploadResponse> upload(@Part MultipartBody.Part file); @FormUrlEncoded @PATCH("v1/messages/{id}") Call<EditResponse> editMessage(@Path("id") String messageId, @Field("content") String messageContent); @GET("v1/messages/{id}") Call<RawMessageResponse> fetchRawMessage(@Path("id") int messageId); @FormUrlEncoded @POST("v1/messages/flags") Call<StarResponse> starMessage(@Field("flag") String flag, @Field("op") String operation, @Field("messages") String message); }