feat(provider/pia): try parsing JSON on bad port forwarding API status codes

This commit is contained in:
Quentin McGaw
2026-05-08 04:15:30 +00:00
parent 4ea9884c6c
commit 5cae870745
@@ -470,6 +470,18 @@ func makeNOKStatusError(response *http.Response, substitutions map[string]string
url = replaceInString(url, substitutions) url = replaceInString(url, substitutions)
b, _ := io.ReadAll(response.Body) b, _ := io.ReadAll(response.Body)
var responseData struct {
Status string `json:"status"`
Message string `json:"message"`
}
if err := json.Unmarshal(b, &responseData); err == nil {
responseData.Message = replaceInString(responseData.Message, substitutions)
return fmt.Errorf("HTTP status code not OK: %s: %d %s: response received: status %q and message %q",
url, response.StatusCode, response.Status, responseData.Status, responseData.Message)
}
// Fallback on non JSON response body
shortenMessage := string(b) shortenMessage := string(b)
shortenMessage = strings.ReplaceAll(shortenMessage, "\n", "") shortenMessage = strings.ReplaceAll(shortenMessage, "\n", "")
shortenMessage = strings.ReplaceAll(shortenMessage, " ", " ") shortenMessage = strings.ReplaceAll(shortenMessage, " ", " ")