initial commit

This commit is contained in:
Oliwier Adamczyk
2025-10-05 10:07:06 +02:00
commit 4804732340
150 changed files with 5563 additions and 0 deletions

10
lib/data/endpoint.dart Normal file
View 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';
}

View File

@@ -0,0 +1,6 @@
class WaypointModel {
final String name;
final double x, y;
WaypointModel({required this.name, required this.x, required this.y});
}

View File

@@ -0,0 +1,3 @@
abstract class IWaypointRepository {}
class WaypointRepository implements IWaypointRepository {}

View 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});
}

View 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;
}
}