import '../mappers/rule34_mapper.dart'; import '../models/post.dart'; import '../models/top_period_filter.dart'; import 'gelbooru_provider.dart'; class Rule34Provider extends GelbooruProvider { Rule34Provider({ required super.id, required super.name, required super.baseUrl, required super.dioClient, super.queryParameters, }); @override Future> searchPosts({ required List tags, required int page, int limit = 50, String? rating, TopPeriodFilter topPeriod = TopPeriodFilter.none, }) async { final topTags = switch (topPeriod) { TopPeriodFilter.none => const [], TopPeriodFilter.month || TopPeriodFilter.year => const [], TopPeriodFilter.allTime => const ['sort:score:desc'], }; final response = await dio.get( '/index.php', queryParameters: { 'page': 'dapi', 's': 'post', 'q': 'index', 'json': '1', 'pid': page, 'limit': limit, 'tags': [ ...tags, if (rating != null) 'rating:$rating', ...topTags, ].join(' '), ...queryParameters, }, ); return Rule34Mapper.postsFromResponse( response.data, providerId: id, providerName: name, ); } }