From 53085d34d050fc23e8545fc26fbee94c502496fc Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Fri, 29 Dec 2023 09:18:27 +0100 Subject: [PATCH] btc: make API errors more verbose --- btc/explorer_api.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/btc/explorer_api.go b/btc/explorer_api.go index e24357a..c36b902 100644 --- a/btc/explorer_api.go +++ b/btc/explorer_api.go @@ -196,13 +196,17 @@ func (a *ExplorerAPI) PublishTx(rawTxHex string) (string, error) { url := fmt.Sprintf("%s/tx", a.BaseURL) resp, err := http.Post(url, "text/plain", strings.NewReader(rawTxHex)) if err != nil { - return "", err + return "", fmt.Errorf("error posting data to API '%s', "+ + "server might be experiencing temporary issues, try "+ + "again later; error details: %w", url, err) } defer resp.Body.Close() body := new(bytes.Buffer) _, err = body.ReadFrom(resp.Body) if err != nil { - return "", err + return "", fmt.Errorf("error fetching data from API '%s', "+ + "server might be experiencing temporary issues, try "+ + "again later; error details: %w", url, err) } return body.String(), nil } @@ -210,20 +214,29 @@ func (a *ExplorerAPI) PublishTx(rawTxHex string) (string, error) { func fetchJSON(url string, target interface{}) error { resp, err := http.Get(url) if err != nil { - return err + return fmt.Errorf("error fetching data from API '%s', "+ + "server might be experiencing temporary issues, try "+ + "again later; error details: %w", url, err) } defer resp.Body.Close() body := new(bytes.Buffer) _, err = body.ReadFrom(resp.Body) if err != nil { - return err + return fmt.Errorf("error fetching data from API '%s', "+ + "server might be experiencing temporary issues, try "+ + "again later; error details: %w", url, err) } err = json.Unmarshal(body.Bytes(), target) if err != nil { if body.String() == "Transaction not found" { return ErrTxNotFound } + + return fmt.Errorf("error decoding data from API '%s', "+ + "server might be experiencing temporary issues, try "+ + "again later; error details: %w", url, err) } - return err + + return nil }