blob: c67bd01a547d0761ef5edc4be2195e5d9c6376b2 [file] [log] [blame]
Jamie Hannaford4721abc2014-09-16 16:29:04 +02001package extensions
2
3import (
4 "github.com/mitchellh/mapstructure"
Jamie Hannafordf0c615b2014-09-17 10:56:52 +02005 "github.com/rackspace/gophercloud/pagination"
Jamie Hannaford4721abc2014-09-16 16:29:04 +02006)
Jamie Hannaford1ce30f22014-09-16 11:23:34 +02007
8type Extension struct {
9 Updated string `json:"updated"`
10 Name string `json:"name"`
11 Links []interface{} `json:"links"`
12 Namespace string `json:"namespace"`
13 Alias string `json:"alias"`
14 Description string `json:"description"`
15}
Jamie Hannaford4721abc2014-09-16 16:29:04 +020016
Jamie Hannafordf0c615b2014-09-17 10:56:52 +020017type ExtensionPage struct {
18 pagination.SinglePageBase
19}
20
21func (r ExtensionPage) IsEmpty() (bool, error) {
22 is, err := ExtractExtensions(r)
23 if err != nil {
24 return true, err
25 }
26 return len(is) == 0, nil
27}
28
29func ExtractExtensions(page pagination.Page) ([]Extension, error) {
Jamie Hannaford4721abc2014-09-16 16:29:04 +020030 var resp struct {
31 Extensions []Extension `mapstructure:"extensions"`
32 }
33
Jamie Hannafordf0c615b2014-09-17 10:56:52 +020034 err := mapstructure.Decode(page.(ExtensionPage).Body, &resp)
Jamie Hannaford4721abc2014-09-16 16:29:04 +020035 if err != nil {
36 return nil, err
37 }
38
39 return resp.Extensions, nil
40}