initial commit
This commit is contained in:
48
lib/data/wikipedia/repository.dart
Normal file
48
lib/data/wikipedia/repository.dart
Normal file
@@ -0,0 +1,48 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user