| package gophercloud |
| |
| // CommonResult acts as a base struct that other results can embed. It contains |
| // the deserialized JSON structure returned from the server (Resp), and any |
| // errors that might have occurred during transport or deserialization. |
| type CommonResult struct { |
| Resp map[string]interface{} |
| Err error |
| } |
| |
| // RFC3339Milli describes a time format used by API responses. |
| const RFC3339Milli = "2006-01-02T15:04:05.999999Z" |
| |
| // Link represents a structure that enables paginated collections how to |
| // traverse backward or forward. The "Rel" field is usually either "next". |
| type Link struct { |
| Href string `mapstructure:"href"` |
| Rel string `mapstructure:"rel"` |
| } |
| |
| // ExtractNextURL attempts to extract the next URL from a JSON structure. It |
| // follows the common structure of nesting back and next links. |
| func ExtractNextURL(links []Link) (string, error) { |
| var url string |
| |
| for _, l := range links { |
| if l.Rel == "next" { |
| url = l.Href |
| } |
| } |
| |
| if url == "" { |
| return "", nil |
| } |
| |
| return url, nil |
| } |