123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package messages
- import (
- "devel.mephi.ru/iacherepanov/openstack-gophercloud"
- "devel.mephi.ru/iacherepanov/openstack-gophercloud/pagination"
- )
- // commonResult is the response of a base result.
- type commonResult struct {
- gophercloud.Result
- }
- // CreateResult is the response of a Create operations.
- type CreateResult struct {
- gophercloud.Result
- }
- // MessagePage contains a single page of all clusters from a ListDetails call.
- type MessagePage struct {
- pagination.LinkedPageBase
- }
- // DeleteResult is the result from a Delete operation. Call its ExtractErr
- // method to determine if the call succeeded or failed.
- type DeleteResult struct {
- gophercloud.ErrResult
- }
- // CreateResult is the response of a Create operations.
- type PopResult struct {
- gophercloud.Result
- }
- // GetMessagesResult is the response of a GetMessages operations.
- type GetMessagesResult struct {
- gophercloud.Result
- }
- // GetResult is the response of a Get operations.
- type GetResult struct {
- gophercloud.Result
- }
- // Message represents a message on a queue.
- type Message struct {
- Body map[string]interface{} `json:"body"`
- Age int `json:"age"`
- Href string `json:"href"`
- ID string `json:"id"`
- TTL int `json:"ttl"`
- Checksum string `json:"checksum"`
- }
- // PopMessage represents a message returned from PopMessages.
- type PopMessage struct {
- Body map[string]interface{} `json:"body"`
- Age int `json:"age"`
- ID string `json:"id"`
- TTL int `json:"ttl"`
- ClaimCount int `json:"claim_count"`
- ClaimID string `json:"claim_id"`
- }
- // ResourceList represents the result of creating a message.
- type ResourceList struct {
- Resources []string `json:"resources"`
- }
- // Extract interprets any CreateResult as a ResourceList.
- func (r CreateResult) Extract() (ResourceList, error) {
- var s ResourceList
- err := r.ExtractInto(&s)
- return s, err
- }
- // Extract interprets any PopResult as a list of PopMessage.
- func (r PopResult) Extract() ([]PopMessage, error) {
- var s struct {
- PopMessages []PopMessage `json:"messages"`
- }
- err := r.ExtractInto(&s)
- return s.PopMessages, err
- }
- // Extract interprets any GetMessagesResult as a list of Message.
- func (r GetMessagesResult) Extract() ([]Message, error) {
- var s struct {
- Messages []Message `json:"messages"`
- }
- err := r.ExtractInto(&s)
- return s.Messages, err
- }
- // Extract interprets any GetResult as a Message.
- func (r GetResult) Extract() (Message, error) {
- var s Message
- err := r.ExtractInto(&s)
- return s, err
- }
- // ExtractMessage extracts message into a list of Message.
- func ExtractMessages(r pagination.Page) ([]Message, error) {
- var s struct {
- Messages []Message `json:"messages"`
- }
- err := (r.(MessagePage)).ExtractInto(&s)
- return s.Messages, err
- }
- // IsEmpty determines if a MessagePage contains any results.
- func (r MessagePage) IsEmpty() (bool, error) {
- s, err := ExtractMessages(r)
- return len(s) == 0, err
- }
- // NextPageURL uses the response's embedded link reference to navigate to the
- // next page of results.
- func (r MessagePage) NextPageURL() (string, error) {
- var s struct {
- Links []gophercloud.Link `json:"links"`
- }
- err := r.ExtractInto(&s)
- if err != nil {
- return "", err
- }
- next, err := gophercloud.ExtractNextURL(s.Links)
- if err != nil {
- return "", err
- }
- return nextPageURL(r.URL.String(), next)
- }
|