github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/pkg/clients/spi/uploads.go (about) 1 package spi 2 3 import ( 4 "bytes" 5 "context" 6 "crypto/tls" 7 "fmt" 8 "net/http" 9 "time" 10 11 v1 "k8s.io/api/core/v1" 12 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 13 ) 14 15 // UploadWithK8sSecret returns the requested Secret object 16 func (s *SPIController) UploadWithK8sSecret(secretName, namespace, spiTokenName, providerURL, username, tokenData string) (*v1.Secret, error) { 17 k8sSecret := &v1.Secret{ 18 ObjectMeta: metav1.ObjectMeta{ 19 Namespace: namespace, 20 Name: secretName, 21 Labels: map[string]string{ 22 "spi.appstudio.redhat.com/upload-secret": "token", 23 }, 24 }, 25 Type: "Opaque", 26 StringData: map[string]string{ 27 "tokenData": tokenData, 28 }, 29 } 30 if spiTokenName != "" { 31 k8sSecret.StringData["spiTokenName"] = spiTokenName 32 } 33 if providerURL != "" { 34 k8sSecret.StringData["providerUrl"] = providerURL 35 } 36 if username != "" { 37 k8sSecret.StringData["userName"] = username 38 } 39 40 ctx, cancel := context.WithTimeout(context.Background(), time.Minute*1) 41 defer cancel() 42 err := s.KubeRest().Create(ctx, k8sSecret) 43 if err != nil { 44 return nil, err 45 } 46 return k8sSecret, nil 47 } 48 49 // Perform http POST call to upload a token at the given upload URL 50 func (s *SPIController) UploadWithRestEndpoint(uploadURL string, oauthCredentials string, bearerToken string) (int, error) { 51 http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} 52 req, err := http.NewRequest("POST", uploadURL, bytes.NewBuffer([]byte(oauthCredentials))) 53 if err != nil { 54 return 0, err 55 } 56 req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", string(bearerToken))) 57 req.Header.Set("Content-Type", "application/json") 58 59 client := &http.Client{} 60 resp, err := client.Do(req) 61 if err != nil { 62 return resp.StatusCode, err 63 } 64 defer resp.Body.Close() 65 return resp.StatusCode, nil 66 }