Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / connection / services / BooksService.java
diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/connection/services/BooksService.java b/Android/app/src/main/java/com/moiseum/wolnelektury/connection/services/BooksService.java
new file mode 100644 (file)
index 0000000..1657930
--- /dev/null
@@ -0,0 +1,81 @@
+package com.moiseum.wolnelektury.connection.services;
+
+import com.moiseum.wolnelektury.connection.models.BookDetailsModel;
+import com.moiseum.wolnelektury.connection.models.BookModel;
+import com.moiseum.wolnelektury.connection.models.FavouriteStateModel;
+import com.moiseum.wolnelektury.connection.models.ReadingStateModel;
+
+import java.util.List;
+
+import io.reactivex.Single;
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+import retrofit2.http.Streaming;
+import retrofit2.http.Url;
+
+/**
+ * Created by Piotr Ostrowski on 16.11.2017.
+ */
+
+public interface BooksService {
+
+       @Headers("New-Api: true")
+       @GET("filter-books/")
+       Call<List<BookModel>> getSearchBooks(@Query("search") String search, @Query("epochs") String epochs, @Query("genres") String genres, @Query("kinds") String kinds,
+                                            @Query("audiobook") Boolean audiobook, @Query("lektura") Boolean lecture, @Query("after") String lastKey, @Query("count") int count);
+
+       @GET("books/{slug}")
+       Single<BookDetailsModel> getBookDetails(@Path("slug") String slug);
+
+       @Streaming
+       @GET
+       Call<ResponseBody> downloadFileWithUrl(@Url String fileUrl);
+
+       @Headers("New-Api: true")
+       @GET("newest/")
+       Call<List<BookModel>> getNewest();
+
+       @Headers("New-Api: true")
+       @GET("recommended/")
+       Call<List<BookModel>> getRecommended();
+
+       @Headers("New-Api: true")
+       @GET("audiobooks/")
+       Call<List<BookModel>> getAudiobooks(@Query("after") String lastKey, @Query("count") int count);
+
+       @Headers("Authentication-Required: true")
+       @POST("reading/{slug}/{state}/")
+       Single<ReadingStateModel> setReadingState(@Path("slug") String slug, @Path("state") String state);
+
+       @Headers("Authentication-Required: true")
+       @GET("reading/{slug}/")
+       Single<ReadingStateModel> getReadingState(@Path("slug") String slug);
+
+       @Headers({"Authentication-Required: true", "New-Api: true"})
+       @GET("shelf/{state}/")
+       Call<List<BookModel>> getReadenBooks(@Path("state") String state, @Query("after") String lastKey, @Query("count") int count);
+
+       @Headers("Authentication-Required: true")
+       @POST("like/{slug}/")
+       Single<FavouriteStateModel> setFavouriteState(@Path("slug") String slug, @Query("action") String action);
+
+       @Headers("Authentication-Required: true")
+       @GET("like/{slug}/")
+       Single<FavouriteStateModel> getFavouriteState(@Path("slug") String slug);
+
+       @GET("preview/")
+       Call<List<BookDetailsModel>> getPreview();
+
+       @GET("books/{slug}")
+       Call<BookDetailsModel> getPreviewMockup(@Path("slug") String slug);
+
+       @Headers({"Authentication-Required: true", "New-Api: true"})
+       @GET("shelf/likes/")
+       Call<List<BookModel>> getFavourites(@Query("after") String lastKey, @Query("count") int count);
+
+}