DecodingError: ManeuverDirection "reverse" not found
Hi there
We are frequently getting an error from mapbox when trying to calculate a route using the MapboxDirections API:
▿ underlying : Optional<Error>
▿ some : DecodingError
▿ dataCorrupted : Context
▿ codingPath : 10 elements
- 0 : CodingKeys(stringValue: "routes", intValue: nil)
▿ 1 : _JSONKey(stringValue: "Index 0", intValue: 0)
- stringValue : "Index 0"
▿ intValue : Optional<Int>
- some : 0
- 2 : CodingKeys(stringValue: "legs", intValue: nil)
▿ 3 : _JSONKey(stringValue: "Index 9", intValue: 9)
- stringValue : "Index 9"
▿ intValue : Optional<Int>
- some : 9
- 4 : CodingKeys(stringValue: "steps", intValue: nil)
▿ 5 : _JSONKey(stringValue: "Index 0", intValue: 0)
- stringValue : "Index 0"
▿ intValue : Optional<Int>
- some : 0
- 6 : CodingKeys(stringValue: "bannerInstructions", intValue: nil)
▿ 7 : _JSONKey(stringValue: "Index 0", intValue: 0)
- stringValue : "Index 0"
▿ intValue : Optional<Int>
- some : 0
- 8 : CodingKeys(stringValue: "primary", intValue: nil)
- 9 : CodingKeys(stringValue: "modifier", intValue: nil)
- debugDescription : "Cannot initialize ManeuverDirection from invalid String value reverse"
- underlyingError : nil
- code : nil
- message : nil
When diving in to this further, it looks like this enum value indeed does not exist in the code:
https://github.com/mapbox/mapbox-directions-swift/blob/main/Sources/MapboxDirections/RouteStep.swift
Here is a snippet of an example of one of the offending JSON responses:
"bannerInstructions": [
{
"primary": {
"components": [
{
"type": "text",
"text": "Enter Winwick Interchange and take the 3rd exit"
}
],
"degrees": 307,
"driving_side": "left",
"type": "roundabout",
"modifier": "reverse", <---- ????
"text": "Enter Winwick Interchange and take the 3rd exit"
},
"distanceAlongGeometry": 0
}
],
Unless i am mistaken it appears the library is not equipped to decode this object.
Keen to hear of a solution, hope this is helpful!
Thanks.
Thank you @sj1914 for the taking time to create a detailed issue 👍. We are looking into this issue, meanwhile, can you please share the request to Directions that causes this issue?
A minimal example that reproduce the issue would help even more.
(If modifier is coming out of the Directions API as reverse, then that would be a bug in the Directions API, since this field is documented as returning uturn in that case. reverse is only a valid value for the turn:lanes key in OpenStreetMap, not a maneuver or lane indication in the DIrections API.)
We don't have enough data to reproduce the issue for now. Directions API returns "modifier": "uturn" in test requests.