From 690790d3b008c12fe3a746524fc72aac13b279ff Mon Sep 17 00:00:00 2001 From: anton-sidelnikov Date: Mon, 18 Nov 2024 11:07:05 +0100 Subject: [PATCH] [Feat.] CSS certificate download --- .../openstack/css/v1/certificates_test.go | 17 +++++++++ openstack/css/v1/certifcates/Get.go | 35 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 acceptance/openstack/css/v1/certificates_test.go create mode 100644 openstack/css/v1/certifcates/Get.go diff --git a/acceptance/openstack/css/v1/certificates_test.go b/acceptance/openstack/css/v1/certificates_test.go new file mode 100644 index 000000000..4bb70756a --- /dev/null +++ b/acceptance/openstack/css/v1/certificates_test.go @@ -0,0 +1,17 @@ +package v1 + +import ( + "testing" + + "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" + c "github.com/opentelekomcloud/gophertelekomcloud/openstack/css/v1/certifcates" + th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" +) + +func TestCertificateDownload(t *testing.T) { + t.Skip("No need to run this test in CI not secure") + client, err := clients.NewCssV1Client() + th.AssertNoErr(t, err) + _, err = c.Get(client) + th.AssertNoErr(t, err) +} diff --git a/openstack/css/v1/certifcates/Get.go b/openstack/css/v1/certifcates/Get.go new file mode 100644 index 000000000..232d8a711 --- /dev/null +++ b/openstack/css/v1/certifcates/Get.go @@ -0,0 +1,35 @@ +package clusters + +import ( + "fmt" + "io" + "net/http" + + "github.com/opentelekomcloud/gophertelekomcloud" +) + +func Get(client *golangsdk.ServiceClient) (*string, error) { + raw, err := client.Get(client.ServiceURL("cer", "download"), nil, &golangsdk.RequestOpts{ + MoreHeaders: map[string]string{ + "Content-Type": "application/json", + "Accept": "*/*", + }, + }) + if err != nil { + return nil, err + } + + return ExtractCert(err, raw) +} + +func ExtractCert(err error, response *http.Response) (*string, error) { + if err != nil { + return nil, err + } + bodyBytes, err := io.ReadAll(response.Body) + if err != nil { + return nil, fmt.Errorf("failed to read response body: %v", err) + } + cert := string(bodyBytes) + return &cert, nil +}