initial commit
This commit is contained in:
10
lib/data/endpoint.dart
Normal file
10
lib/data/endpoint.dart
Normal file
@@ -0,0 +1,10 @@
|
||||
class WikipediaEndpoints {
|
||||
WikipediaEndpoints._();
|
||||
|
||||
static const String wikipediaUrl = "http://192.168.170.86:8080";
|
||||
|
||||
static String getAllArticles(String title) =>
|
||||
'$wikipediaUrl/articles?title=$title';
|
||||
|
||||
static const String downloadArticles = '$wikipediaUrl/download-articles';
|
||||
}
|
||||
6
lib/data/waypoint/model.dart
Normal file
6
lib/data/waypoint/model.dart
Normal file
@@ -0,0 +1,6 @@
|
||||
class WaypointModel {
|
||||
final String name;
|
||||
final double x, y;
|
||||
|
||||
WaypointModel({required this.name, required this.x, required this.y});
|
||||
}
|
||||
3
lib/data/waypoint/repository.dart
Normal file
3
lib/data/waypoint/repository.dart
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract class IWaypointRepository {}
|
||||
|
||||
class WaypointRepository implements IWaypointRepository {}
|
||||
18
lib/data/wikipedia/model.dart
Normal file
18
lib/data/wikipedia/model.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
typedef WikiArticleMapModel = Map<String, String>;
|
||||
|
||||
class WikiArticleModel {
|
||||
final String title;
|
||||
final String content;
|
||||
|
||||
WikiArticleModel({required this.title, required this.content});
|
||||
|
||||
WikiArticleModel.fromMap(WikiArticleMapModel map)
|
||||
: title = map['title']!,
|
||||
content = map['content']!;
|
||||
}
|
||||
|
||||
class WikiArticleQueryModel {
|
||||
final String title;
|
||||
|
||||
WikiArticleQueryModel({required this.title});
|
||||
}
|
||||
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