github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/identity/federatedauth/providers/requests.go (about)

     1  package providers
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  )
     6  
     7  var RequestOpts = golangsdk.RequestOpts{
     8  	MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"},
     9  }
    10  
    11  type CreateProviderOpts struct {
    12  	SsoType     string `json:"sso_type,omitempty"`
    13  	Description string `json:"description,omitempty"`
    14  	Enabled     bool   `json:"enabled,omitempty"`
    15  }
    16  
    17  type responseBody struct {
    18  	IdentityProvider Provider `json:"identity_provider"`
    19  }
    20  
    21  func Create(c *golangsdk.ServiceClient, id string, opts CreateProviderOpts) (*Provider, error) {
    22  	b, err := golangsdk.BuildRequestBody(opts, "identity_provider")
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  
    27  	var rst golangsdk.Result
    28  	_, err = c.Put(resourceURL(c, id), b, &rst.Body, &golangsdk.RequestOpts{
    29  		MoreHeaders: RequestOpts.MoreHeaders,
    30  	})
    31  	if err == nil {
    32  		var r responseBody
    33  		rst.ExtractInto(&r)
    34  		return &r.IdentityProvider, nil
    35  	}
    36  	return nil, err
    37  }
    38  
    39  func Get(c *golangsdk.ServiceClient, id string) (*Provider, error) {
    40  	var rst golangsdk.Result
    41  	_, err := c.Get(resourceURL(c, id), &rst.Body, &golangsdk.RequestOpts{
    42  		MoreHeaders: RequestOpts.MoreHeaders,
    43  	})
    44  	if err == nil {
    45  		var r responseBody
    46  		rst.ExtractInto(&r)
    47  		return &r.IdentityProvider, nil
    48  	}
    49  	return nil, err
    50  }
    51  
    52  type UpdateOpts struct {
    53  	Description *string `json:"description,omitempty"`
    54  	Enabled     *bool   `json:"enabled,omitempty"`
    55  }
    56  
    57  func Update(c *golangsdk.ServiceClient, id string, opts UpdateOpts) (*Provider, error) {
    58  	b, err := golangsdk.BuildRequestBody(opts, "identity_provider")
    59  	if err != nil {
    60  		return nil, err
    61  	}
    62  
    63  	var rst golangsdk.Result
    64  	_, err = c.Patch(resourceURL(c, id), b, &rst.Body, &golangsdk.RequestOpts{
    65  		MoreHeaders: RequestOpts.MoreHeaders,
    66  	})
    67  	if err == nil {
    68  		var r responseBody
    69  		rst.ExtractInto(&r)
    70  		return &r.IdentityProvider, nil
    71  	}
    72  	return nil, err
    73  }
    74  
    75  func Delete(c *golangsdk.ServiceClient, regionID string) error {
    76  	_, err := c.Delete(resourceURL(c, regionID), &golangsdk.RequestOpts{
    77  		MoreHeaders: RequestOpts.MoreHeaders,
    78  	})
    79  	return err
    80  }