diff --git a/pkg/service/soundtouchweb/handler_stereopair.go b/pkg/service/soundtouchweb/handler_stereopair.go index c852139b..4db82b51 100644 --- a/pkg/service/soundtouchweb/handler_stereopair.go +++ b/pkg/service/soundtouchweb/handler_stereopair.go @@ -385,9 +385,11 @@ func stereoPairHTTPStatus(result stereopair.Result) int { if resultHasStereoPairError(result, stereopair.ErrInvalidRequest) { return http.StatusBadRequest } + if resultHasStereoPairError(result, stereopair.ErrConflict) { return http.StatusConflict } + if result.Status == stereopair.StatusDegraded { return http.StatusBadGateway } diff --git a/pkg/stereopair/marge_cleanup.go b/pkg/stereopair/marge_cleanup.go index 53107c70..b94bb67d 100644 --- a/pkg/stereopair/marge_cleanup.go +++ b/pkg/stereopair/marge_cleanup.go @@ -73,16 +73,26 @@ func DeleteMargeGroupGeneration(httpClient *http.Client, ref GenerationRef) erro return err } - if response.StatusCode == http.StatusInternalServerError && margeWrappedGroupNotFound(body, ref) { + return handleMargeGenerationCleanupFailure(httpClient, ref, response.StatusCode, body) +} + +func handleMargeGenerationCleanupFailure( + httpClient *http.Client, + ref GenerationRef, + statusCode int, + body []byte, +) error { + if statusCode == http.StatusInternalServerError && margeWrappedGroupNotFound(body, ref) { return verifyMargeGroupGenerationDeleted(httpClient, ref) } - if response.StatusCode == http.StatusConflict { + + if statusCode == http.StatusConflict { return fmt.Errorf("%w: delete Marge group generation: HTTP %d: %s", - ErrConflict, response.StatusCode, strings.TrimSpace(string(body))) + ErrConflict, statusCode, strings.TrimSpace(string(body))) } return fmt.Errorf("delete Marge group generation: HTTP %d: %s", - response.StatusCode, strings.TrimSpace(string(body))) + statusCode, strings.TrimSpace(string(body))) } func readMargeGenerationCleanupResponse(response *http.Response) ([]byte, error) {