find-stone-beer / commit
Scheduled execution failed with an error that seems to be caused by a bad Bing Maps response, adding some checks to verify that we get what we're expecting.
.vscode/settings.json | 1 + bing-maps.go | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index bb71aa4..484a74f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,6 +3,7 @@ "findstone", "geodist", "jftuga", + "unmarshalling", "Vincenty" ] } \ No newline at end of file diff --git a/bing-maps.go b/bing-maps.go index ab7b403..e30a15b 100644 --- a/bing-maps.go +++ b/bing-maps.go @@ -38,9 +38,22 @@ func _getDistBetweenPoints(lat1, lon1, lat2, lon2 float64) (float64, error) { autoGenerated := autoGenerated{} err = json.Unmarshal(data, &autoGenerated) if err != nil { - return 0, err + return 0, fmt.Errorf("encountered error '%s' while unmarshalling response: %s ", err, string(data)) + } + resourceSets := autoGenerated.ResourceSets + if len(resourceSets) == 0 { + return 0, fmt.Errorf("no ResourceSets found in response: %s", string(data)) + } + resources := resourceSets[0].Resources + if len(resources) == 0 { + return 0, fmt.Errorf("no Resources found in response: %s", string(data)) + } + routeLegs := resources[0].RouteLegs + if len(routeLegs) == 0 { + return 0, fmt.Errorf("no RouteLegs found in response: %s", string(data)) } - dist := autoGenerated.ResourceSets[0].Resources[0].RouteLegs[0].TravelDistance + firstLeg := routeLegs[0] + dist := firstLeg.TravelDistance return dist, nil }