github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/functions/functions.go (about)

     1  package functions
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/IBM-Cloud/bluemix-go/client"
     7  )
     8  
     9  // const ..
    10  const (
    11  	NamespaceTypeCFBased     = 1
    12  	NamespaceTypeIamMigrated = 2
    13  	NamespaceTypeIamBased    = 3
    14  
    15  	DefaultServiceURL  = "https://gateway.watsonplatform.net/servicebroker/API/v1"
    16  	DefaultServiceName = "ibm_cloud_functions_namespace_API"
    17  )
    18  
    19  // functions
    20  type functions struct {
    21  	client *client.Client
    22  }
    23  
    24  // Functions ..
    25  type Functions interface {
    26  	GetCloudFoundaryNamespaces() (NamespaceResponseList, error)
    27  	DeleteNamespace(namespaceID string) (NamespaceResponse, error)
    28  	CreateNamespace(CreateNamespaceOptions) (NamespaceResponse, error)
    29  	GetNamespaces() (NamespaceResponseList, error)
    30  	GetNamespace(payload GetNamespaceOptions) (NamespaceResponse, error)
    31  	UpdateNamespace(payload UpdateNamespaceOptions) (NamespaceResponse, error)
    32  }
    33  
    34  func newFunctionsAPI(c *client.Client) Functions {
    35  	return &functions{
    36  		client: c,
    37  	}
    38  }
    39  
    40  func (r *functions) GetCloudFoundaryNamespaces() (NamespaceResponseList, error) {
    41  	var successV NamespaceResponseList
    42  	formData := make(map[string]string)
    43  	formData["accessToken"] = r.client.Config.UAAAccessToken[7:len(r.client.Config.UAAAccessToken)]
    44  	formData["refreshToken"] = r.client.Config.UAARefreshToken
    45  	_, err := r.client.PostWithForm("/bluemix/v2/authenticate", formData, &successV)
    46  	return successV, err
    47  }
    48  
    49  func (r *functions) GetNamespaces() (NamespaceResponseList, error) {
    50  	var successV NamespaceResponseList
    51  	_, err := r.client.Get("/api/v1/namespaces", &successV)
    52  	return successV, err
    53  }
    54  
    55  func (r *functions) CreateNamespace(payload CreateNamespaceOptions) (NamespaceResponse, error) {
    56  	var successV NamespaceResponse
    57  	_, err := r.client.Post("/api/v1/namespaces", payload, &successV)
    58  	return successV, err
    59  }
    60  
    61  func (r *functions) GetNamespace(payload GetNamespaceOptions) (NamespaceResponse, error) {
    62  	var successV NamespaceResponse
    63  	_, err := r.client.Get(fmt.Sprintf("/api/v1/namespaces/%s", *payload.ID), &successV)
    64  	return successV, err
    65  }
    66  
    67  func (r *functions) DeleteNamespace(namespaceID string) (NamespaceResponse, error) {
    68  	var successV NamespaceResponse
    69  	_, err := r.client.Delete(fmt.Sprintf("/api/v1/namespaces/%s", namespaceID))
    70  	return successV, err
    71  }
    72  
    73  func (r *functions) UpdateNamespace(payload UpdateNamespaceOptions) (NamespaceResponse, error) {
    74  	var successV NamespaceResponse
    75  	_, err := r.client.Patch(fmt.Sprintf("/api/v1/namespaces/%s", *payload.ID), payload, &successV)
    76  	return successV, err
    77  }