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

     1  package oidcconfig
     2  
     3  import "github.com/chnsz/golangsdk"
     4  
     5  var RequestOpts = golangsdk.RequestOpts{
     6  	MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"},
     7  }
     8  
     9  type CreateOpts struct {
    10  	AccessMode            string `json:"access_mode" required:"true"`
    11  	IdpURL                string `json:"idp_url" required:"true"`
    12  	ClientID              string `json:"client_id" required:"true"`
    13  	SigningKey            string `json:"signing_key" required:"true"`
    14  	AuthorizationEndpoint string `json:"authorization_endpoint,omitempty"`
    15  	Scope                 string `json:"scope,omitempty"`
    16  	ResponseType          string `json:"response_type,omitempty"`
    17  	ResponseMode          string `json:"response_mode,omitempty"`
    18  }
    19  
    20  type responseBody struct {
    21  	Config OpenIDConnectConfig `json:"openid_connect_config"`
    22  }
    23  
    24  func Create(c *golangsdk.ServiceClient, idpID string, opts CreateOpts) (*OpenIDConnectConfig, error) {
    25  	b, err := golangsdk.BuildRequestBody(opts, "openid_connect_config")
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  
    30  	var rst golangsdk.Result
    31  	_, err = c.Post(resourceURL(c, idpID), b, &rst.Body, &golangsdk.RequestOpts{
    32  		MoreHeaders: RequestOpts.MoreHeaders,
    33  	})
    34  	if err == nil {
    35  		var r responseBody
    36  		rst.ExtractInto(&r)
    37  		return &r.Config, nil
    38  	}
    39  	return nil, err
    40  }
    41  
    42  func Get(c *golangsdk.ServiceClient, idpID string) (*OpenIDConnectConfig, error) {
    43  	var rst golangsdk.Result
    44  	_, err := c.Get(resourceURL(c, idpID), &rst.Body, &golangsdk.RequestOpts{
    45  		MoreHeaders: RequestOpts.MoreHeaders,
    46  	})
    47  
    48  	if err == nil {
    49  		var r responseBody
    50  		rst.ExtractInto(&r)
    51  		return &r.Config, nil
    52  	}
    53  	return nil, err
    54  }
    55  
    56  type UpdateOpenIDConnectConfigOpts struct {
    57  	AccessMode            string `json:"access_mode" required:"true"`
    58  	IdpURL                string `json:"idp_url" required:"true"`
    59  	ClientID              string `json:"client_id" required:"true"`
    60  	SigningKey            string `json:"signing_key" required:"true"`
    61  	AuthorizationEndpoint string `json:"authorization_endpoint,omitempty"`
    62  	Scope                 string `json:"scope,omitempty"`
    63  	ResponseType          string `json:"response_type,omitempty"`
    64  	ResponseMode          string `json:"response_mode,omitempty"`
    65  }
    66  
    67  func Update(c *golangsdk.ServiceClient, idpID string, opts UpdateOpenIDConnectConfigOpts) (*OpenIDConnectConfig, error) {
    68  	b, err := golangsdk.BuildRequestBody(opts, "openid_connect_config")
    69  	if err != nil {
    70  		return nil, err
    71  	}
    72  
    73  	var rst golangsdk.Result
    74  	_, err = c.Put(resourceURL(c, idpID), b, &rst.Body, &golangsdk.RequestOpts{
    75  		MoreHeaders: RequestOpts.MoreHeaders,
    76  	})
    77  	if err == nil {
    78  		var r responseBody
    79  		rst.ExtractInto(&r)
    80  		return &r.Config, nil
    81  	}
    82  	return nil, err
    83  }