feat(api): add nicer error message to format issues indicating permission denied
All checks were successful
test / test (push) Successful in 42s

This commit is contained in:
Martin McCaffery 2025-11-14 12:11:24 +01:00
parent ece2955a2a
commit 2909e0d1b4
Signed by: martin.mccaffery
GPG key ID: 7C4D0F375BCEE533
2 changed files with 10 additions and 1 deletions

View file

@ -213,6 +213,10 @@ func (c *Client) parseStreamingAppInstanceResponse(resp *http.Response, result i
var errorMessage string
parseErr := sdkhttp.ParseJSONLines(resp.Body, func(line []byte) error {
// On permission denied, Edge API returns just an empty array []!
if len(line) == 0 || line[0] == '[' {
return fmt.Errorf("%w", ErrFaultyResponsePerhaps403)
}
// Try parsing as ResultResponse first (error format)
var resultResp ResultResponse
if err := json.Unmarshal(line, &resultResp); err == nil && resultResp.Result.Message != "" {

View file

@ -15,7 +15,8 @@ import (
var (
// ErrResourceNotFound indicates the requested resource was not found
ErrResourceNotFound = fmt.Errorf("resource not found")
ErrResourceNotFound = fmt.Errorf("resource not found")
ErrFaultyResponsePerhaps403 = fmt.Errorf("faulty response from API, may indicate permission denied")
)
// CreateApp creates a new application in the specified region
@ -179,6 +180,10 @@ func (c *Client) parseStreamingResponse(resp *http.Response, result interface{})
var responses []Response[App]
parseErr := sdkhttp.ParseJSONLines(resp.Body, func(line []byte) error {
// On permission denied, Edge API returns just an empty array []!
if len(line) == 0 || line[0] == '[' {
return fmt.Errorf("%w", ErrFaultyResponsePerhaps403)
}
var response Response[App]
if err := json.Unmarshal(line, &response); err != nil {
return err