Improved error handling: Skips stock instead of panicing when API fails
This commit is contained in:
22
main.go
22
main.go
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
@@ -30,6 +31,7 @@ func main() {
|
|||||||
for _, c := range commodities {
|
for _, c := range commodities {
|
||||||
priceString, err := GetPriceString(c, *apiToken)
|
priceString, err := GetPriceString(c, *apiToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Println("Skipped " + c)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
pricedb.WriteString("P " + GetTimeString() + " " + c + " " + priceString + "\n")
|
pricedb.WriteString("P " + GetTimeString() + " " + c + " " + priceString + "\n")
|
||||||
@@ -50,13 +52,25 @@ func GetPriceString(ticker string, apiToken string) (string, error) {
|
|||||||
|
|
||||||
var f interface{}
|
var f interface{}
|
||||||
json.Unmarshal(body, &f)
|
json.Unmarshal(body, &f)
|
||||||
m := f.(map[string]interface{})
|
m, ok := f.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("Conversion Error")
|
||||||
|
}
|
||||||
dataInterface := m["data"]
|
dataInterface := m["data"]
|
||||||
arr := dataInterface.([]interface{})
|
arr, ok := dataInterface.([]interface{})
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("Conversion Error")
|
||||||
|
}
|
||||||
elem := arr[0]
|
elem := arr[0]
|
||||||
ma := elem.(map[string]interface{})
|
ma, ok := elem.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("Conversion Error")
|
||||||
|
}
|
||||||
priceInterface := ma["price"]
|
priceInterface := ma["price"]
|
||||||
price := priceInterface.(string)
|
price, ok := priceInterface.(string)
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("Conversion Error")
|
||||||
|
}
|
||||||
return "$" + price, nil
|
return "$" + price, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user