diff --git a/CHANGELOG.md b/CHANGELOG.md index b24045b..3eac3cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## v0.6.1 +REFACTOR: +- Validate success responses by checking for HTTP status codes in the 2xx range + ## v0.6.0 FEATURES: diff --git a/client/buildingblock.go b/client/buildingblock.go index c9c0358..41c4252 100644 --- a/client/buildingblock.go +++ b/client/buildingblock.go @@ -103,7 +103,7 @@ func (c *MeshStackProviderClient) ReadBuildingBlock(uuid string) (*MeshBuildingB return nil, nil } - if res.StatusCode != 200 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -141,7 +141,7 @@ func (c *MeshStackProviderClient) CreateBuildingBlock(bb *MeshBuildingBlockCreat return nil, err } - if res.StatusCode != 201 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } diff --git a/client/project.go b/client/project.go index eca75ca..683b2ee 100644 --- a/client/project.go +++ b/client/project.go @@ -71,7 +71,7 @@ func (c *MeshStackProviderClient) ReadProject(workspace string, name string) (*M return nil, nil } - if res.StatusCode != 200 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -119,7 +119,7 @@ func (c *MeshStackProviderClient) ReadProjects(workspaceIdentifier string, payme return nil, fmt.Errorf("failed to read response body: %w", err) } - if res.StatusCode != http.StatusOK { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -178,7 +178,7 @@ func (c *MeshStackProviderClient) CreateProject(project *MeshProjectCreate) (*Me return nil, err } - if res.StatusCode != 201 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -219,7 +219,7 @@ func (c *MeshStackProviderClient) UpdateProject(project *MeshProjectCreate) (*Me return nil, err } - if res.StatusCode != 200 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } diff --git a/client/project_binding.go b/client/project_binding.go index fdb71e5..f704efc 100644 --- a/client/project_binding.go +++ b/client/project_binding.go @@ -70,7 +70,7 @@ func (c *MeshStackProviderClient) readProjectBinding(name string, contentType st return nil, nil } - if res.StatusCode != 200 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -120,7 +120,7 @@ func (c *MeshStackProviderClient) createProjectBinding(binding *MeshProjectBindi return nil, err } - if res.StatusCode != 200 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } diff --git a/client/status_code_checker.go b/client/status_code_checker.go new file mode 100644 index 0000000..bd6f24b --- /dev/null +++ b/client/status_code_checker.go @@ -0,0 +1,13 @@ +package client + +import ( + "net/http" +) + +func isSuccessHTTPStatus(resp *http.Response) bool { + if resp.StatusCode < 200 || resp.StatusCode >= 300 { + return false + } + + return true +} diff --git a/client/tag_definition.go b/client/tag_definition.go index 1855b26..67ff98d 100644 --- a/client/tag_definition.go +++ b/client/tag_definition.go @@ -107,7 +107,7 @@ func (c *MeshStackProviderClient) ReadTagDefinitions() (*[]MeshTagDefinition, er return nil, fmt.Errorf("failed to read response body: %w", err) } - if res.StatusCode != http.StatusOK { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -156,7 +156,7 @@ func (c *MeshStackProviderClient) ReadTagDefinition(name string) (*MeshTagDefini } defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { + if !isSuccessHTTPStatus(resp) { return nil, fmt.Errorf("failed to read tag definition: %s", resp.Status) } @@ -191,7 +191,7 @@ func (c *MeshStackProviderClient) CreateTagDefinition(tagDefinition *MeshTagDefi } defer resp.Body.Close() - if resp.StatusCode != http.StatusCreated { + if !isSuccessHTTPStatus(resp) { return nil, fmt.Errorf("failed to create tag definition: %s", resp.Status) } @@ -224,7 +224,7 @@ func (c *MeshStackProviderClient) UpdateTagDefinition(tagDefinition *MeshTagDefi } defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { + if !isSuccessHTTPStatus(resp) { return nil, fmt.Errorf("failed to update tag definition: %s", resp.Status) } diff --git a/client/tenant.go b/client/tenant.go index b83c5e6..d10556d 100644 --- a/client/tenant.go +++ b/client/tenant.go @@ -83,7 +83,7 @@ func (c *MeshStackProviderClient) ReadTenant(workspace string, project string, p return nil, nil } - if res.StatusCode != 200 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) } @@ -121,7 +121,7 @@ func (c *MeshStackProviderClient) CreateTenant(tenant *MeshTenantCreate) (*MeshT return nil, err } - if res.StatusCode != 201 { + if !isSuccessHTTPStatus(res) { return nil, fmt.Errorf("unexpected status code: %d, %s", res.StatusCode, data) }