github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/networking/v2/peeringconnectionapprovals/requests.go (about) 1 package peeringconnectionapprovals 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 ToPeeringConnectionApprovalListQuery() (string, error) 12 } 13 14 type ListOpts struct { 15 PeerVPCId string `q:"src_vpc_id,omitempty"` 16 PeerOrgId string `q:"src_org_id,omitempty"` 17 VPCId string `q:"dest_vpc_id,omitempty"` 18 Status string `q:"status,omitempty"` 19 } 20 21 func (opts ListOpts) ToPeeringConnectionApprovalListQuery() (string, error) { 22 q, err := gophercloud.BuildQueryString(opts) 23 return q.String(), err 24 } 25 26 func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { 27 url := listURL(c) 28 if opts != nil { 29 query, err := opts.ToPeeringConnectionApprovalListQuery() 30 if err != nil { 31 return pagination.Pager{Err: err} 32 } 33 url += query 34 } 35 return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { 36 return PeeringConnectApprovalPage{pagination.LinkedPageBase{PageResult: r}} 37 }) 38 } 39 40 func Get(ctx context.Context, c *gophercloud.ServiceClient, id string) (r GetResult) { 41 resp, err := c.Get(ctx, getURL(c, id), &r.Body, nil) 42 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 43 return 44 } 45 46 type UpdateOptsBuilder interface { 47 ToPeeringConnectionApprovalUpdateMap() (map[string]any, error) 48 } 49 50 type UpdateOpts struct { 51 Accept bool `json:"is_allowed,omitempty"` 52 } 53 54 func (opts UpdateOpts) ToPeeringConnectionApprovalUpdateMap() (map[string]any, error) { 55 return gophercloud.BuildRequestBody(opts, "peering_connection_approval") 56 } 57 58 func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) { 59 b, err := opts.ToPeeringConnectionApprovalUpdateMap() 60 if err != nil { 61 r.Err = err 62 return 63 } 64 65 h, err := gophercloud.BuildHeaders(opts) 66 if err != nil { 67 r.Err = err 68 return 69 } 70 71 resp, err := c.Put(ctx, updateURL(c, id), b, &r.Body, &gophercloud.RequestOpts{ 72 MoreHeaders: h, 73 OkCodes: []int{200, 201}, 74 }) 75 _, r.Header, r.Err = gophercloud.ParseResponse(resp, err) 76 return 77 }