github.com/gophercloud/gophercloud@v1.11.0/openstack/imageservice/v2/members/results.go (about) 1 package members 2 3 import ( 4 "time" 5 6 "github.com/gophercloud/gophercloud" 7 "github.com/gophercloud/gophercloud/pagination" 8 ) 9 10 // Member represents a member of an Image. 11 type Member struct { 12 CreatedAt time.Time `json:"created_at"` 13 ImageID string `json:"image_id"` 14 MemberID string `json:"member_id"` 15 Schema string `json:"schema"` 16 Status string `json:"status"` 17 UpdatedAt time.Time `json:"updated_at"` 18 } 19 20 // Extract Member model from a request. 21 func (r commonResult) Extract() (*Member, error) { 22 var s *Member 23 err := r.ExtractInto(&s) 24 return s, err 25 } 26 27 // MemberPage is a single page of Members results. 28 type MemberPage struct { 29 pagination.SinglePageBase 30 } 31 32 // ExtractMembers returns a slice of Members contained in a single page 33 // of results. 34 func ExtractMembers(r pagination.Page) ([]Member, error) { 35 var s struct { 36 Members []Member `json:"members"` 37 } 38 err := r.(MemberPage).ExtractInto(&s) 39 return s.Members, err 40 } 41 42 // IsEmpty determines whether or not a MemberPage contains any results. 43 func (r MemberPage) IsEmpty() (bool, error) { 44 if r.StatusCode == 204 { 45 return true, nil 46 } 47 48 members, err := ExtractMembers(r) 49 return len(members) == 0, err 50 } 51 52 type commonResult struct { 53 gophercloud.Result 54 } 55 56 // CreateResult represents the result of a Create operation. Call its Extract 57 // method to interpret it as a Member. 58 type CreateResult struct { 59 commonResult 60 } 61 62 // DetailsResult represents the result of a Get operation. Call its Extract 63 // method to interpret it as a Member. 64 type DetailsResult struct { 65 commonResult 66 } 67 68 // UpdateResult represents the result of an Update operation. Call its Extract 69 // method to interpret it as a Member. 70 type UpdateResult struct { 71 commonResult 72 } 73 74 // DeleteResult represents the result of a Delete operation. Call its 75 // ExtractErr method to determine if the request succeeded or failed. 76 type DeleteResult struct { 77 gophercloud.ErrResult 78 }