refactor(stereo): satisfy cleanup lint

This commit is contained in:
Lukáš Lipinský
2026-09-05 11:08:04 +02:00
committed by Tobias Gesellchen
parent 22586da982
commit 4bd548915f
+30 -11
View File
@@ -68,17 +68,11 @@ func DeleteMargeGroupGeneration(httpClient *http.Client, ref GenerationRef) erro
return verifyMargeGroupGenerationDeleted(httpClient, ref)
}
body, readErr := io.ReadAll(io.LimitReader(response.Body, 1025))
closeErr := response.Body.Close()
if readErr != nil {
return fmt.Errorf("read Marge generation cleanup response: %w", readErr)
}
if closeErr != nil {
return fmt.Errorf("close Marge generation cleanup response: %w", closeErr)
}
if len(body) > 1024 {
return fmt.Errorf("delete Marge group generation: HTTP %d response exceeds 1024 bytes", response.StatusCode)
body, err := readMargeGenerationCleanupResponse(response)
if err != nil {
return err
}
if response.StatusCode == http.StatusInternalServerError && margeWrappedGroupNotFound(body, ref) {
return verifyMargeGroupGenerationDeleted(httpClient, ref)
}
@@ -87,6 +81,25 @@ func DeleteMargeGroupGeneration(httpClient *http.Client, ref GenerationRef) erro
response.StatusCode, strings.TrimSpace(string(body)))
}
func readMargeGenerationCleanupResponse(response *http.Response) ([]byte, error) {
body, readErr := io.ReadAll(io.LimitReader(response.Body, 1025))
closeErr := response.Body.Close()
if readErr != nil {
return nil, fmt.Errorf("read Marge generation cleanup response: %w", readErr)
}
if closeErr != nil {
return nil, fmt.Errorf("close Marge generation cleanup response: %w", closeErr)
}
if len(body) > 1024 {
return nil, fmt.Errorf("delete Marge group generation: HTTP %d response exceeds 1024 bytes", response.StatusCode)
}
return body, nil
}
func verifyMargeGroupGenerationDeleted(httpClient *http.Client, ref GenerationRef) error {
group, err := getMargeDeviceGroup(httpClient, ref)
if err != nil {
@@ -105,24 +118,30 @@ func margeWrappedGroupNotFound(body []byte, ref GenerationRef) bool {
XMLName xml.Name
Message string `xml:",chardata"`
}
decoder := xml.NewDecoder(bytes.NewReader(body))
if err := decoder.Decode(&response); err != nil || response.XMLName.Local != "error" {
return false
}
for {
token, err := decoder.Token()
if err == io.EOF {
if errors.Is(err, io.EOF) {
break
}
if err != nil {
return false
}
if data, ok := token.(xml.CharData); !ok || strings.TrimSpace(string(data)) != "" {
return false
}
}
want := fmt.Sprintf("Unexpected error: 404: Group %s does not exist in account %s", ref.GroupID, ref.AccountID)
return strings.TrimSpace(response.Message) == want
}