getOSRMRoad method

Future<OSRMRoad> getOSRMRoad(
  1. OSRMRequest request
)

Implementation

Future<OSRMRoad> getOSRMRoad(OSRMRequest request) async {
  final urlOption = request.encodeHeader();
  final response = await dio.get(dio.options.baseUrl + urlOption);
  final Map<String, dynamic> responseJson = Map.from(response.data);
  if (response.statusCode != null && response.statusCode! > 299 ||
      response.statusCode! < 200) {
    return OSRMRoad.withError();
  }
  final instructionsHelper = loadInstructionHelperJson(
    language: request.languages,
  );

  final data = (
    json: responseJson,
    request: request,
    helper: instructionsHelper,
  );
  final route = await switch (data.request.profile) {
    Profile.route => parseRoad(
      ParserRoadComputeArg(
        json: data.json,
        langCode: data.request.languages.code,
        alternative: request.hasAlternative ?? false,
      ),
    ),
    Profile.trip => parseTrip(
      ParserTripComputeArg(
        tripJson: data.json,
        langCode: data.request.languages.code,
      ),
    ),
  };
  final instructions = OSRMHelper.buildInstructions(
    road: route,
    instructionsHelper: data.helper,
  );
  return route.copyWith(instructions: instructions);
}