[OOM-K8S-CERT-EXTERNAL-PROVIDER] Add API exceptions handling
[oom/platform/cert-service.git] / certServiceK8sExternalProvider / src / certserviceclient / cert_service_client.go
index 15b9062..4806c4a 100644 (file)
@@ -29,7 +29,7 @@ import (
 
 const (
        CsrHeaderName = "CSR"
-       PkHeaderName = "PK"
+       PkHeaderName  = "PK"
 )
 
 type CertServiceClient interface {
@@ -38,7 +38,7 @@ type CertServiceClient interface {
 }
 
 type CertServiceClientImpl struct {
-       healthUrl string
+       healthUrl        string
        certificationUrl string
        httpClient       HTTPClient
 }
@@ -52,6 +52,10 @@ type CertificatesResponse struct {
        TrustedCertificates []string `json:"trustedCertificates"`
 }
 
+type ResponseException struct {
+       ErrorMessage string `json:"errorMessage"`
+}
+
 func (client *CertServiceClientImpl) CheckHealth() error {
        request, err := http.NewRequest("GET", client.healthUrl, nil)
        if err != nil {
@@ -63,14 +67,13 @@ func (client *CertServiceClientImpl) CheckHealth() error {
                return err
        }
 
-       if response.StatusCode != 200 {
+       if response.StatusCode != http.StatusOK {
                return fmt.Errorf("health check retured status code [%d]", response.StatusCode)
        }
 
        return nil
 }
 
-
 func (client *CertServiceClientImpl) GetCertificates(csr []byte, key []byte) (*CertificatesResponse, error) {
 
        request, err := http.NewRequest("GET", client.certificationUrl, nil)
@@ -85,6 +88,13 @@ func (client *CertServiceClientImpl) GetCertificates(csr []byte, key []byte) (*C
                return nil, err
        }
 
+       if response.StatusCode != http.StatusOK {
+               var responseException ResponseException
+               err = json.NewDecoder(response.Body).Decode(&responseException)
+               return nil, fmt.Errorf("CertService API returned status code [%d] and message [%s]",
+                       response.StatusCode, responseException.ErrorMessage)
+       }
+
        var certificatesResponse CertificatesResponse
        err = json.NewDecoder(response.Body).Decode(&certificatesResponse)
        if err != nil {