blob: 647ba46dc1ab2ef0fec5a15d9415c787309c87b1 [file] [log] [blame]
Jamie Hannaford8c072a32014-10-16 14:33:32 +02001package gophercloud
2
3// CommonResult acts as a base struct that other results can embed. It contains
4// the deserialized JSON structure returned from the server (Resp), and any
5// errors that might have occurred during transport or deserialization.
6type CommonResult struct {
7 Resp map[string]interface{}
8 Err error
9}
10
11// RFC3339Milli describes a time format used by API responses.
12const RFC3339Milli = "2006-01-02T15:04:05.999999Z"
13
14// Link represents a structure that enables paginated collections how to
15// traverse backward or forward. The "Rel" field is usually either "next".
16type Link struct {
17 Href string `mapstructure:"href"`
18 Rel string `mapstructure:"rel"`
19}
20
21// ExtractNextURL attempts to extract the next URL from a JSON structure. It
22// follows the common structure of nesting back and next links.
23func ExtractNextURL(links []Link) (string, error) {
24 var url string
25
26 for _, l := range links {
27 if l.Rel == "next" {
28 url = l.Href
29 }
30 }
31
32 if url == "" {
33 return "", nil
34 }
35
36 return url, nil
37}