using Refit; using WatchIt.DTO.Models.Controllers.Genres.Genre; using WatchIt.DTO.Models.Controllers.Media.Medium.Query; using WatchIt.DTO.Models.Controllers.Media.Medium.Request; using WatchIt.DTO.Models.Controllers.Media.Medium.Response; using WatchIt.DTO.Models.Controllers.Photos.Photo; using WatchIt.DTO.Models.Generics.Image; using WatchIt.DTO.Models.Generics.Rating; using WatchIt.DTO.Query; namespace WatchIt.Website.Clients; public interface IMediaClient { #region Main [Get("/")] Task>> GetMedia([Query(CollectionFormat.Multi)] MediumFilterQuery? filterQuery = null, [Query] OrderQuery? orderQuery = null, [Query] PagingQuery? pagingQuery = null, [Query][AliasAs("include_pictures")] bool includePictures = false); [Get("/{id}")] Task> GetMedium(long id, [Query][AliasAs("include_pictures")] bool includePictures = false); [Get("/movies")] Task>> GetMediumMovies([Query(CollectionFormat.Multi)] MediumMovieFilterQuery? filterQuery = null, [Query] OrderQuery? orderQuery = null, [Query] PagingQuery? pagingQuery = null, [Query][AliasAs("include_pictures")] bool includePictures = false); [Get("/movies/{id}")] Task> GetMediumMovie(long id, [Query][AliasAs("include_pictures")] bool includePictures = false); [Get("/series")] Task>> GetMediumSeries([Query(CollectionFormat.Multi)] MediumSeriesFilterQuery? filterQuery = null, [Query] OrderQuery? orderQuery = null, [Query] PagingQuery? pagingQuery = null, [Query][AliasAs("include_pictures")] bool includePictures = false); [Get("/series/{id}")] Task> GetMediumSeries(long id, [Query][AliasAs("include_pictures")] bool includePictures = false); [Post("/movies")] Task> PostMediumMovie([Authorize]string token, [Body] MediumMovieRequest body); [Post("/series")] Task> PostMediumSeries([Authorize]string token, [Body] MediumSeriesRequest body); [Put("/movies/{id}")] Task> PutMediumMovie([Authorize]string token, long id, [Body] MediumMovieRequest body); [Put("/series/{id}")] Task> PutMediumSeries([Authorize]string token, long id, [Body] MediumSeriesRequest body); [Delete("/{id}")] Task DeleteMedium([Authorize]string token, long id); #endregion #region Genres [Get("/{id}/genres")] Task>> GetMediumGenres(long id, [Query] GenreFilterQuery? filterQuery = null, [Query] OrderQuery? orderQuery = null, [Query] PagingQuery? pagingQuery = null); [Post("/{id}/genres/{genre_id}")] Task PostMediumGenre([Authorize]string token, long id, [AliasAs("genre_id")] short genreId); [Delete("/{id}/genres/{genre_id}")] Task DeleteMediumGenre([Authorize]string token, long id, [AliasAs("genre_id")] short genreId); #endregion #region Rating [Get("/{id}/rating")] Task> GetMediumRating(long id); [Get("/{id}/rating/{account_id}")] Task> GetMediumUserRating(long id, [AliasAs("account_id")] long accountId); [Put("/{id}/rating")] Task PutMediumRating([Authorize]string token, long id, [Body] RatingRequest body); [Delete("/{id}/rating")] Task DeleteMediumRating([Authorize]string token, long id); #endregion #region View Count [Put("/{id}/view_count")] Task PutMediumViewCount(long id); #endregion #region Picture [Get("/{id}/picture")] Task> GetMediumPicture(long id); [Put("/{id}/picture")] Task> PutMediumPicture([Authorize]string token, long id, [Body] ImageRequest body); [Delete("/{id}/picture")] Task DeleteMediumPicture([Authorize]string token, long id); #endregion #region Photos [Get("/{id}/photos/background")] Task> GetMediumBackgroundPhoto(long id); #endregion }