mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-08-14 23:20:46 +02:00
Use out skel for Overpass way/relation pass and add service tests
Switch the second Overpass pass (ways/relations) from out meta to out skel, dropping unused tags/version/changeset fields from the response. The app only reads structural references (node lists, relation members) from these elements. Also inject http.Client into OverpassService for testability (matching RoutingService pattern) and add close() for client lifecycle management. 14 tests covering query building, constraint detection, and error handling. Fixes #108 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
c8e396a6eb
commit
5df0170344
@@ -12,7 +12,10 @@ import '../dev_config.dart';
|
||||
/// Single responsibility: Make requests, handle network errors, return data.
|
||||
class OverpassService {
|
||||
static const String _endpoint = 'https://overpass-api.de/api/interpreter';
|
||||
|
||||
final http.Client _client;
|
||||
|
||||
OverpassService({http.Client? client}) : _client = client ?? http.Client();
|
||||
|
||||
/// Fetch surveillance nodes from Overpass API with proper retry logic.
|
||||
/// Throws NetworkError for retryable failures, NodeLimitError for area splitting.
|
||||
Future<List<OsmNode>> fetchNodes({
|
||||
@@ -28,7 +31,7 @@ class OverpassService {
|
||||
try {
|
||||
debugPrint('[OverpassService] Attempt ${attempt + 1}/${maxRetries + 1} for ${profiles.length} profiles');
|
||||
|
||||
final response = await http.post(
|
||||
final response = await _client.post(
|
||||
Uri.parse(_endpoint),
|
||||
body: {'data': query},
|
||||
).timeout(kOverpassQueryTimeout);
|
||||
@@ -116,7 +119,7 @@ out body;
|
||||
way(bn);
|
||||
rel(bn);
|
||||
);
|
||||
out meta;
|
||||
out skel;
|
||||
''';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user