Files
survive-app/lib/data/wikipedia/repository.dart
Oliwier Adamczyk 4804732340 initial commit
2025-10-05 10:07:06 +02:00

49 lines
1.2 KiB
Dart

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:survive_app/data/endpoint.dart';
import 'package:survive_app/data/wikipedia/model.dart';
abstract class IWikipediaRepository {
Future<void> downloadArticles();
Future<List<WikiArticleModel>> queryArticles(WikiArticleQueryModel data);
}
class WikipediaRepository implements IWikipediaRepository {
@override
Future<void> downloadArticles() async {
final url = Uri.parse(WikipediaEndpoints.downloadArticles);
try {
final res = await http.get(url);
if (res.statusCode != 200) {
return Future.value();
}
} catch (e) {
return Future.value();
}
}
@override
Future<List<WikiArticleModel>> queryArticles(
WikiArticleQueryModel data,
) async {
final url = Uri.parse(WikipediaEndpoints.getAllArticles(data.title));
List<WikiArticleModel> articles = [];
try {
final res = await http.get(url);
final data = jsonDecode(res.body) as List<Map<String, String>>;
for (final articleMap in data) {
final a = WikiArticleModel.fromMap(articleMap);
articles.add(a);
}
} catch (e) {
return articles;
}
return articles;
}
}