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  }