github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/certificatemanager/certificate.go (about) 1 package certificatemanager 2 3 import ( 4 "fmt" 5 "net/url" 6 7 "github.com/IBM-Cloud/bluemix-go/client" 8 "github.com/IBM-Cloud/bluemix-go/models" 9 ) 10 11 //Certificate Interface 12 type Certificate interface { 13 ImportCertificate(InstanceID string, importData models.CertificateImportData) (models.CertificateInfo, error) 14 OrderCertificate(InstanceID string, orderData models.CertificateOrderData) (models.CertificateInfo, error) 15 RenewCertificate(CertID string, RenewData models.CertificateRenewData) (models.CertificateInfo, error) 16 GetMetaData(CertID string) (models.CertificateInfo, error) 17 GetCertData(CertID string) (models.CertificateGetData, error) 18 DeleteCertificate(CertID string) error 19 UpdateCertificateMetaData(CertID string, updateData models.CertificateMetadataUpdate) error 20 ReimportCertificate(CertID string, reimportData models.CertificateReimportData) (models.CertificateInfo, error) 21 ListCertificates(InstanceID string) ([]models.CertificateInfo, error) 22 UpdateOrderPolicy(CertID string, autoRenew models.OrderPolicy) (models.OrderPolicy, error) 23 } 24 25 //Certificates client struct 26 type Certificates struct { 27 client *client.Client 28 } 29 30 func newCertificateAPI(c *client.Client) Certificate { 31 return &Certificates{ 32 client: c, 33 } 34 } 35 36 //ImportCertificate .. 37 func (r *Certificates) ImportCertificate(InstanceID string, importData models.CertificateImportData) (models.CertificateInfo, error) { 38 certInfo := models.CertificateInfo{} 39 _, err := r.client.Post(fmt.Sprintf("/api/v3/%s/certificates/import", url.QueryEscape(InstanceID)), importData, &certInfo) 40 if err != nil { 41 return certInfo, err 42 } 43 return certInfo, err 44 } 45 46 //OrderCertificate ... 47 func (r *Certificates) OrderCertificate(InstanceID string, orderdata models.CertificateOrderData) (models.CertificateInfo, error) { 48 certInfo := models.CertificateInfo{} 49 _, err := r.client.Post(fmt.Sprintf("/api/v1/%s/certificates/order", url.QueryEscape(InstanceID)), orderdata, &certInfo) 50 if err != nil { 51 return certInfo, err 52 } 53 return certInfo, err 54 } 55 56 //RenewCertificate ... 57 func (r *Certificates) RenewCertificate(CertID string, renewdata models.CertificateRenewData) (models.CertificateInfo, error) { 58 certInfo := models.CertificateInfo{} 59 _, err := r.client.Post(fmt.Sprintf("/api/v1/certificate/%s/renew", url.QueryEscape(CertID)), renewdata, &certInfo) 60 if err != nil { 61 return certInfo, err 62 } 63 return certInfo, err 64 } 65 66 //GetMetaData ... 67 func (r *Certificates) GetMetaData(CertID string) (models.CertificateInfo, error) { 68 certInfo := models.CertificateInfo{} 69 _, err := r.client.Get(fmt.Sprintf("/api/v1/certificate/%s/metadata", url.QueryEscape(CertID)), &certInfo) 70 if err != nil { 71 return certInfo, err 72 } 73 return certInfo, err 74 } 75 76 //GetCertData ... 77 func (r *Certificates) GetCertData(CertID string) (models.CertificateGetData, error) { 78 certInfo := models.CertificateGetData{} 79 _, err := r.client.Get(fmt.Sprintf("/api/v2/certificate/%s", url.QueryEscape(CertID)), &certInfo) 80 if err != nil { 81 return certInfo, err 82 } 83 return certInfo, err 84 } 85 86 // DeleteCertificate ... 87 func (r *Certificates) DeleteCertificate(CertID string) error { 88 _, err := r.client.Delete(fmt.Sprintf("/api/v2/certificate/%s", url.QueryEscape(CertID))) 89 return err 90 } 91 92 // UpdateCertificateMetaData ... 93 func (r *Certificates) UpdateCertificateMetaData(CertID string, updatemetaData models.CertificateMetadataUpdate) error { 94 _, err := r.client.Post(fmt.Sprintf("/api/v3/certificate/%s", url.QueryEscape(CertID)), updatemetaData, nil) 95 return err 96 } 97 98 // ReimportCertificate ... 99 func (r *Certificates) ReimportCertificate(CertID string, reimportData models.CertificateReimportData) (models.CertificateInfo, error) { 100 certInfo := models.CertificateInfo{} 101 _, err := r.client.Put(fmt.Sprintf("/api/v1/certificate/%s", url.QueryEscape(CertID)), reimportData, &certInfo) 102 if err != nil { 103 return certInfo, err 104 } 105 return certInfo, err 106 } 107 108 //ListCertificates ... 109 func (r *Certificates) ListCertificates(InstanceID string) ([]models.CertificateInfo, error) { 110 certificatesInfo := models.CertificatesInfo{} 111 rawURL := fmt.Sprintf("/api/v3/%s/certificates?page_size=200", url.QueryEscape(InstanceID)) 112 if _, err := r.client.GetPaginated(rawURL, NewCMSPaginatedResources(models.CertificateInfo{}), func(resource interface{}) bool { 113 if certificate, ok := resource.(models.CertificateInfo); ok { 114 certificatesInfo.CertificateList = append(certificatesInfo.CertificateList, certificate) 115 return true 116 } 117 return false 118 }); err != nil { 119 return nil, fmt.Errorf("failed to list paginated Certificates: %s", err) 120 } 121 return certificatesInfo.CertificateList, nil 122 } 123 124 //UpdateOrderPolicy .. 125 func (r *Certificates) UpdateOrderPolicy(CertID string, autoRenew models.OrderPolicy) (models.OrderPolicy, error) { 126 orderPolicyInfo := models.OrderPolicy{} 127 _, err := r.client.Put(fmt.Sprintf("/api/v1/certificate/%s/order/policy", url.QueryEscape(CertID)), autoRenew, &orderPolicyInfo) 128 if err != nil { 129 return orderPolicyInfo, err 130 } 131 return orderPolicyInfo, err 132 }