github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/networking/v2/peeringconnectionapprovals/results.go (about) 1 package peeringconnectionapprovals 2 3 import ( 4 "encoding/json" 5 6 "github.com/vnpaycloud-console/gophercloud/v2" 7 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 8 ) 9 10 type commonResult struct { 11 gophercloud.Result 12 } 13 14 func (r commonResult) Extract() (*PeeringConnectApproval, error) { 15 var s PeeringConnectApproval 16 err := r.ExtractInto(&s) 17 return &s, err 18 } 19 20 func (r commonResult) ExtractInto(v any) error { 21 return r.Result.ExtractIntoStructPtr(v, "peering_connection_approval") 22 } 23 24 type GetResult struct { 25 commonResult 26 } 27 28 type UpdateResult struct { 29 commonResult 30 } 31 32 type PeeringConnectApproval struct { 33 ID string `json:"id"` 34 PeerId string `json:"peering_connection_id"` 35 Name string `json:"name"` 36 Description string `json:"description"` 37 VpcId string `json:"src_vpc_id"` 38 PeerOrgId string `json:"dest_org_id"` 39 PeerVpcId string `json:"dest_vpc_id"` 40 Status string `json:"status"` 41 } 42 43 func (r *PeeringConnectApproval) UnmarshalJSON(b []byte) error { 44 type tmp PeeringConnectApproval 45 var s struct { 46 tmp 47 } 48 49 err := json.Unmarshal(b, &s) 50 51 if err != nil { 52 return err 53 } 54 55 *r = PeeringConnectApproval(s.tmp) 56 57 return nil 58 } 59 60 type PeeringConnectApprovalPage struct { 61 pagination.LinkedPageBase 62 } 63 64 func (r PeeringConnectApprovalPage) NextPageURL() (string, error) { 65 var s struct { 66 Links []gophercloud.Link `json:"peering_connection_approvals_links"` 67 } 68 err := r.ExtractInto(&s) 69 if err != nil { 70 return "", err 71 } 72 return gophercloud.ExtractNextURL(s.Links) 73 } 74 75 func (r PeeringConnectApprovalPage) IsEmpty() (bool, error) { 76 vpcs, err := ExtractPeeringConnectApprovals(r) 77 if err != nil { 78 return true, err 79 } 80 return len(vpcs) == 0, nil 81 } 82 83 func ExtractPeeringConnectApprovals(r pagination.Page) ([]PeeringConnectApproval, error) { 84 var s []PeeringConnectApproval 85 err := ExtractPeeringConnectApprovalsInto(r, &s) 86 if err != nil { 87 return nil, err 88 } 89 return s, nil 90 } 91 92 func ExtractPeeringConnectApprovalsInto(r pagination.Page, v any) error { 93 return r.(PeeringConnectApprovalPage).ExtractIntoSlicePtr(v, "peering_connection_approvals") 94 }