github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/networking/v2/peeringconnections/requests.go (about) 1 package peeringconnections 2 3 import ( 4 "context" 5 6 "github.com/vnpaycloud-console/gophercloud/v2" 7 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 8 ) 9 10 type ListOptsBuilder interface { 11 ToPeeringConnectionListQuery() (string, error) 12 } 13 14 type ListOpts struct { 15 } 16 17 func (opts ListOpts) ToPeeringConnectionListQuery() (string, error) { 18 q, err := gophercloud.BuildQueryString(opts) 19 return q.String(), err 20 } 21 22 func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { 23 url := listURL(c) 24 if opts != nil { 25 query, err := opts.ToPeeringConnectionListQuery() 26 if err != nil { 27 return pagination.Pager{Err: err} 28 } 29 url += query 30 } 31 return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { 32 return PeeringConnectionPage{pagination.LinkedPageBase{PageResult: r}} 33 }) 34 } 35 36 func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { 37 resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) 38 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 39 return 40 } 41 42 type UpdateOptsBuilder interface { 43 ToPeeringConnectionUpdateMap() (map[string]any, error) 44 } 45 46 type UpdateOpts struct { 47 } 48 49 func (opts UpdateOpts) ToPeeringConnectionUpdateMap() (map[string]any, error) { 50 return gophercloud.BuildRequestBody(opts, "peering-connection") 51 } 52 53 func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { 54 b, err := opts.ToPeeringConnectionUpdateMap() 55 if err != nil { 56 r.Err = err 57 return 58 } 59 60 h, err := gophercloud.BuildHeaders(opts) 61 if err != nil { 62 r.Err = err 63 return 64 } 65 66 resp, err := c.Put(ctx, updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ 67 MoreHeaders: h, 68 OkCodes: []int{200, 201}, 69 }) 70 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 71 return 72 } 73 74 func Delete(ctx context.Context, c *gophercloud.ServiceClient, id string) (r DeleteResult) { 75 resp, err := c.Delete(ctx, deleteURL(c, id), nil) 76 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 77 return 78 }