github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/identity/v3/federation/protocols/requests.go (about) 1 package protocols 2 3 import ( 4 "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/pagination" 6 ) 7 8 func List(client *golangsdk.ServiceClient, provider string) pagination.Pager { 9 pager := pagination.NewPager(client, listURL(client, provider), func(r pagination.PageResult) pagination.Page { 10 return ProtocolPage{LinkedPageBase: pagination.LinkedPageBase{PageResult: r}} 11 }) 12 pager.Headers = map[string]string{ 13 "Content-Type": "application/json", 14 } 15 return pager 16 } 17 18 type CreateOptsBuilder interface { 19 ToProtocolCreateMap() (map[string]interface{}, error) 20 } 21 22 type CreateOpts struct { 23 MappingID string `json:"mapping_id"` 24 } 25 26 func (opts CreateOpts) ToProtocolCreateMap() (map[string]interface{}, error) { 27 return golangsdk.BuildRequestBody(opts, "protocol") 28 } 29 30 func Create(client *golangsdk.ServiceClient, provider, protocol string, opts CreateOptsBuilder) (r CreateResult) { 31 b, err := opts.ToProtocolCreateMap() 32 if err != nil { 33 r.Err = err 34 return 35 } 36 url := singleURL(client, provider, protocol) 37 _, r.Err = client.Put(url, b, &r.Body, nil) 38 return 39 } 40 41 func Get(client *golangsdk.ServiceClient, provider, protocol string) (r GetResult) { 42 _, r.Err = client.Get(singleURL(client, provider, protocol), &r.Body, &golangsdk.RequestOpts{ 43 MoreHeaders: map[string]string{"Content-Type": "application/json"}, 44 }) 45 return 46 } 47 48 type UpdateOptsBuilder interface { 49 ToProtocolUpdateMap() (map[string]interface{}, error) 50 } 51 52 type UpdateOpts struct { 53 MappingID string `json:"mapping_id"` 54 } 55 56 func (opts UpdateOpts) ToProtocolUpdateMap() (map[string]interface{}, error) { 57 return golangsdk.BuildRequestBody(opts, "protocol") 58 } 59 60 func Update(client *golangsdk.ServiceClient, provider, protocol string, opts UpdateOptsBuilder) (r UpdateResult) { 61 b, err := opts.ToProtocolUpdateMap() 62 if err != nil { 63 r.Err = err 64 return 65 } 66 _, r.Err = client.Patch(singleURL(client, provider, protocol), b, &r.Body, nil) 67 return 68 } 69 70 func Delete(client *golangsdk.ServiceClient, provider, protocol string) (r DeleteResult) { 71 _, r.Err = client.Delete(singleURL(client, provider, protocol), nil) 72 return 73 }