import 'package:lunasea/api/overseerr/models/content/movie.dart'; import 'package:lunasea/api/overseerr/models/content/series.dart'; import 'package:lunasea/api/overseerr/models/issues/issue.dart'; import 'package:lunasea/api/overseerr/models/issues/issue_page.dart'; import 'package:lunasea/api/overseerr/models/requests/request.dart'; import 'package:lunasea/api/overseerr/models/requests/request_count.dart'; import 'package:lunasea/api/overseerr/models/requests/request_page.dart'; import 'package:lunasea/api/overseerr/models/status/status.dart'; import 'package:lunasea/api/overseerr/models/status/status_appdata.dart'; import 'package:lunasea/api/overseerr/models/users/user_page.dart'; import 'package:lunasea/api/overseerr/models/users/user_quota.dart'; import 'package:lunasea/vendor.dart'; part 'api.g.dart'; @RestApi() abstract class OverseerrAPI { factory OverseerrAPI({ required String host, required String apiKey, Map headers = const {}, }) { String _baseUrl = host.endsWith('/') ? '${host}api/v1/' : '$host/api/v1/'; Dio _dio = Dio( BaseOptions( headers: { 'X-Api-Key': apiKey, ...headers, }, contentType: Headers.jsonContentType, responseType: ResponseType.json, followRedirects: true, maxRedirects: 5, ), ); return _OverseerrAPI(_dio, baseUrl: _baseUrl); } @GET('issue') Future getIssues({ @Query('take') int? take, @Query('skip') int? skip, @Query('filter') String? filter, @Query('sort') String? sort, }); @GET('issue/{id}') Future getIssue( @Path('id') int id, ); @GET('movie/{id}') Future getMovie( @Path('id') int id, { @Query('language') String? language, }); @GET('request') Future getRequests({ @Query('take') int? take, @Query('skip') int? skip, @Query('filter') String? filter, @Query('sort') String? sort, @Query('requestedBy') int? requestedBy, }); @GET('request/{id}') Future getRequest( @Path('id') String id, ); @GET('request/count') Future getRequestCount(); @GET('status') Future getStatus(); @GET('status/appdata') Future getStatusAppData(); @GET('tv/{id}') Future getSeries( @Path('id') int id, { @Query('language') String? language, }); @GET('user') Future getUsers({ @Query('take') int? take, @Query('skip') int? skip, @Query('sort') String? sort, }); @GET('user/{id}') Future getUser( @Path('id') String id, ); @GET('user/{id}/quota') Future getUserQuota( @Path('id') String id, ); }