package com.tb24.fn.network; import com.google.gson.JsonObject; import com.tb24.fn.model.friends.*; import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.http.*; public interface FriendsService { String BASE_URL_PROD = "https://friends-public-service-prod.ol.epicgames.com/friends/"; String BASE_URL_PROD_ALT = "https://friends-public-service-prod.ak.epicgames.com/friends/"; String BASE_URL_STAGE = "https://friends-public-service-stage.ol.epicgames.com/friends/"; @GET("api/v1/{id}/summary") Call queryFriendsSummary(@Path("id") String id, @Query("displayNames") Boolean displayNames); @GET("api/v1/{id}/friends") Call queryFriends(@Path("id") String id, @Query("displayNames") Boolean displayNames); @GET("api/v1/{id}/friends/{friend}") Call queryFriend(@Path("id") String id, @Path("friend") String friend, @Query("displayNames") Boolean displayNames); @POST("api/v1/{id}/friends/{friend}") Call sendInviteOrAcceptInvite(@Path("id") String id, @Path("friend") String friend); @DELETE("api/v1/{id}/friends/{friend}") Call deleteFriendOrRejectInvite(@Path("id") String id, @Path("friend") String friend); @PUT("api/v1/{id}/friends/{friend}/alias") Call setFriendAlias(@Path("id") String id, @Path("friend") String friend, @Body RequestBody newAlias); @DELETE("api/v1/{id}/friends/{friend}/alias") Call deleteFriendAlias(@Path("id") String id, @Path("friend") String friend); @PUT("api/v1/{id}/friends/{friend}/note") Call setFriendNote(@Path("id") String id, @Path("friend") String friend, @Body RequestBody newNote); @DELETE("api/v1/{id}/friends/{friend}/note") Call deleteFriendNote(@Path("id") String id, @Path("friend") String friend); @GET("api/v1/{id}/incoming") Call queryIncomingFriendRequests(@Path("id") String id, @Query("displayNames") Boolean displayNames); @GET("api/v1/{id}/outgoing") Call queryOutgoingFriendRequests(@Path("id") String id, @Query("displayNames") Boolean displayNames); @GET("api/v1/{id}/blocklist") Call queryBlockedPlayers(@Path("id") String id, @Query("displayNames") Boolean displayNames); @POST("api/v1/{id}/blocklist/{block}") Call sendBlock(@Path("id") String id, @Path("block") String block); @DELETE("api/v1/{id}/blocklist/{block}") Call sendUnblock(@Path("id") String id, @Path("block") String block); /** * @param namespace ex: "fortnite" */ @GET("api/v1/{id}/recent/{namespace}") Call queryRecentPlayers(@Path("id") String id, @Path("namespace") String namespace); // TODO unknown parameters, 403 for user access token @POST("api/v1/recent/{namespace}") Call addBulkRecentPlayers(@Path("namespace") String namespace); @GET("api/v1/{id}/settings") Call queryFriendSettings(@Path("id") String id); @PUT("api/v1/{id}/settings") Call setFriendSettings(@Path("id") String id, @Body FriendsSettings newSettings); /** * @param source ex: "steam" */ @GET("api/v1/{id}/settings/externalSources/{source}") Call queryFriendExternalSourceSettings(@Path("id") String id, @Path("source") String source); @PUT("api/v1/{id}/settings/externalSources/{source}") Call setFriendExternalSourceSettings(@Path("id") String id, @Path("source") String source, @Body JsonObject newSettings); @Deprecated @GET("api/public/friends/{id}") Call LEGACY_queryFriends(@Path("id") String id, @Query("includePending") Boolean includePending); @Deprecated @GET("api/public/blocklist/{id}") Call LEGACY_queryBlockedPlayers(@Path("id") String id); }