1package lib
2
3import (
4	"sort"
5	"strings"
6)
7
8// ISO image on Vultr
9type ISO struct {
10	ID       int    `json:"ISOID"`
11	Created  string `json:"date_created"`
12	Filename string `json:"filename"`
13	Size     int    `json:"size"`
14	MD5sum   string `json:"md5sum"`
15}
16
17type isos []ISO
18
19func (s isos) Len() int      { return len(s) }
20func (s isos) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
21func (s isos) Less(i, j int) bool {
22	// sort order: filename, created
23	if strings.ToLower(s[i].Filename) < strings.ToLower(s[j].Filename) {
24		return true
25	} else if strings.ToLower(s[i].Filename) > strings.ToLower(s[j].Filename) {
26		return false
27	}
28	return s[i].Created < s[j].Created
29}
30
31// GetISO returns a list of all ISO images on Vultr account
32func (c *Client) GetISO() ([]ISO, error) {
33	var isoMap map[string]ISO
34	if err := c.get(`iso/list`, &isoMap); err != nil {
35		return nil, err
36	}
37
38	var isoList []ISO
39	for _, iso := range isoMap {
40		isoList = append(isoList, iso)
41	}
42	sort.Sort(isos(isoList))
43	return isoList, nil
44}
45