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