All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.leancloud.service.APIService Maven / Gradle / Ivy

package cn.leancloud.service;

import cn.leancloud.*;
import cn.leancloud.query.AVQueryResult;
import cn.leancloud.search.AVSearchResponse;
import cn.leancloud.sms.AVCaptchaDigest;
import cn.leancloud.sms.AVCaptchaValidateResult;
import cn.leancloud.types.AVDate;
import cn.leancloud.types.AVNull;
import cn.leancloud.upload.FileUploadToken;
import io.reactivex.Observable;
import retrofit2.Call;
import retrofit2.http.*;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.*;

public interface APIService {
  /**
   * Object Operations.
   */

  @GET("/1.1/classes/{className}")
  Observable> findObjects(@Path("className") String className);

  @GET("/1.1/classes/{className}")
  Observable queryObjects(@Path("className") String className, @QueryMap Map query);

  @GET("/1.1/cloudQuery")
  Observable cloudQuery(@QueryMap Map query);

  @GET("/1.1/classes/{className}/{objectId}")
  Observable fetchObject(@Path("className") String className, @Path("objectId") String objectId);

  @GET("/1.1/classes/{className}/{objectId}")
  Observable fetchObject(@Path("className") String className, @Path("objectId") String objectId,
                                   @Query("include") String includeKeys);

  @POST("/1.1/classes/{className}")
  Observable createObject(@Path("className") String className, @Body JSONObject object,
                                    @Query("fetchWhenSave") boolean fetchFlag,
                                    @Query("where") JSONObject where);

  @PUT("/1.1/classes/{className}/{objectId}")
  Observable updateObject(@Path("className") String className, @Path("objectId") String objectId,
                                    @Body JSONObject object, @Query("fetchWhenSave") boolean fetchFlag,
                                    @Query("where") JSONObject where);

//  @DELETEWITHBODY("/1.1/classes/{className}/{objectId}")
  @HTTP(method = "DELETE", path = "/1.1/classes/{className}/{objectId}", hasBody = true)
  Observable deleteObject(@Path("className") String className, @Path("objectId") String objectId,
                                  @Body Map param);

  @POST("/1.1/batch")
  Observable batchCreate(@Body JSONObject param);

  /**
   * AVInstalltion methods.
   */

  @POST("/1.1/{endpointClass}")
  Observable saveWholeObject(@Path("endpointClass") String endpointClass, @Body JSONObject object,
                                       @Query("fetchWhenSave") boolean fetchFlag,
                                       @Query("where") JSONObject where);
  @PUT("/1.1/{endpointClass}/{objectId}")
  Observable saveWholeObject(@Path("endpointClass") String endpointClass, @Path("objectId") String objectId,
                                       @Body JSONObject object, @Query("fetchWhenSave") boolean fetchFlag,
                                       @Query("where") JSONObject where);
  @GET("/1.1/{endpointClass}/{objectId}")
  Observable getWholeObject(@Path("endpointClass") String endpointClass, @Path("objectId") String objectId,
                                      @Query("include") String includeKeys);
//  @DELETE("/1.1/{endpointClass}/{objectId}")
  @HTTP(method = "DELETE", path = "/1.1/{endpointClass}/{objectId}", hasBody = true)
  Observable deleteWholeObject(@Path("endpointClass") String endpointClass, @Path("objectId") String objectId,
                                       @Body Map param);

  /**
   * request format:
   *    requests: [unit, unit]
   * unit format:
   *    {"path":"/1.1/classes/{class}/{objectId}",
   *     "method":"PUT",
   *     "body":{"{field}":operationJson,
   *             "__internalId":"{objectId}",
   *             "__children":[]},
   *     "params":{}
   *    }
   * for update same field with multiple operations, we must use batchUpdate instead of batchSave,
   * otherwise, `__internalId` will become a common field of target instance.
   */
  @POST("/1.1/batch/save")
  Observable batchUpdate(@Body JSONObject param);

  /**
   * Cloud Functions
   */
  @POST("/1.1/functions/{name}")
  Observable> cloudFunction(@Path("name") String functionName, @Body Map param);

  @POST("/1.1/call/{name}")
  Observable> cloudRPC(@Path("name") String functionName, @Body Object param);

  /**
   * File Operations.
   */

  @POST("/1.1/fileTokens")
  Observable createUploadToken(@Body JSONObject fileData);

  @POST("/1.1/fileCallback")
  Call fileCallback(@Body JSONObject result);

  @GET("/1.1/files/{objectId}")
  Observable fetchFile(@Path("objectId") String objectId);

  @GET("/1.1/date")
  Observable currentTimeMillis();

  /**
   * Role Operations.
   */
  @POST("/1.1/roles")
  Observable createRole(@Body JSONObject object);

  /**
   * User Operations.
   */

  @POST("/1.1/users")
  Observable signup(@Body JSONObject object);
  @POST("/1.1/users")
  Observable signup(@Body JSONObject object, @Query("failOnNotExist") boolean failOnNotExist);
  @GET("/1.1/users")
  Observable queryUsers(@QueryMap Map query);

  @POST("/1.1/usersByMobilePhone")
  Observable signupByMobilePhone(@Body JSONObject object);

  @POST("/1.1/login")
  Observable login(@Body JSONObject object);

  @PUT("/1.1/users/{objectId}/updatePassword")
  Observable updatePassword(@Path("objectId") String objectId, @Body JSONObject object);

  @PUT("/1.1/resetPasswordBySmsCode/{smsCode}")
  Observable resetPasswordBySmsCode(@Path("smsCode") String smsCode, @Body Map param);

  @GET("/1.1/users/me")
  Observable checkAuthenticated(@QueryMap Map query);

  @PUT("/1.1/users/{objectId}/refreshSessionToken")
  Observable refreshSessionToken(@Path("objectId") String objectId);

  @POST("/1.1/requestPasswordReset")
  Observable requestResetPassword(@Body Map param);

  @POST("/1.1/requestPasswordResetBySmsCode")
  Observable requestResetPasswordBySmsCode(@Body Map param);

  @POST("/1.1/requestEmailVerify")
  Observable requestEmailVerify(@Body Map param);

  @POST("/1.1/requestMobilePhoneVerify")
  Observable requestMobilePhoneVerify(@Body Map param);

  @POST("/1.1/requestLoginSmsCode")
  Observable requestLoginSmsCode(@Body Map param);

  @POST("/1.1/verifyMobilePhone/{verifyCode}")
  Observable verifyMobilePhone(@Path("verifyCode") String verifyCode);

  @POST("/1.1/users/{followee}/friendship/{follower}")
  Observable followUser(@Path("followee") String followee, @Path("follower") String follower,
                                    @Body Map param);

  @DELETE("/1.1/users/{followee}/friendship/{follower}")
  Observable unfollowUser(@Path("followee") String followee, @Path("follower") String follower);

  @GET("/1.1/users/{userId}/followers")
  Observable getFollowers(@Path("userId") String userId);

  @GET("/1.1/users/{userId}/followees")
  Observable getFollowees(@Path("userId") String userId);

  @GET("/1.1/users/{userId}/followersAndFollowees")
  Observable getFollowersAndFollowees(@Path("userId") String userId);

  /**
   * Status API
   */
  @POST("/1.1/statuses")
  Observable postStatus(@Body Map param);

  @GET("/1.1/statuses/{statusId}")
  Observable fetchSingleStatus(@Path("statusId") String statusId);

  @GET("/1.1/statuses")
  Observable fetchStatuses(@QueryMap Map query);

  @DELETE("/1.1/statuses/{statusId}")
  Observable deleteStatus(@Path("statusId") String statusId);

  @DELETE("/1.1/subscribe/statuses/inbox")
  Observable deleteInboxStatus(@QueryMap Map query);

  @GET("/1.1/subscribe/statuses")
  Observable queryInbox(@QueryMap Map query);

  @GET("/1.1/subscribe/statuses/count")
  Observable getInboxCount(@QueryMap Map query);

  @POST("/1.1/subscribe/statuses/resetUnreadCount")
  Observable resetInboxUnreadCount();


  /**
   * SMS / Capture requests
   */
  @GET("/1.1/requestCaptcha")
  Observable requestCaptcha(@QueryMap Map query);

  @POST("/1.1/verifyCaptcha")
  Observable verifyCaptcha(@Body Map param);

  @POST("/1.1/requestSmsCode")
  Observable requestSMSCode(@Body Map param);

  @POST("/1.1/verifySmsCode/{code}")
  Observable verifySMSCode(@Path("code") String code, @Body Map param);

  @POST("/1.1/requestChangePhoneNumber")
  Observable requestSMSCodeForUpdatingPhoneNumber(@Body Map param);

  @POST("/1.1/changePhoneNumber")
  Observable verifySMSCodeForUpdatingPhoneNumber(@Body Map param);

  /**
   * FullText Search API
   */
  @GET("/1.1/search/select")
  Observable search(@QueryMap Map query);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy