40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package vlc
|
|
|
|
import "github.com/goccy/go-json"
|
|
|
|
// File struct represents a single item in the browsed directory. Can be a file or a dir
|
|
type File struct {
|
|
Type string `json:"type"` // file or dir
|
|
Path string `json:"path"`
|
|
Name string `json:"name"`
|
|
AccessTime uint `json:"access_time"`
|
|
UID uint `json:"uid"`
|
|
CreationTime uint `json:"creation_time"`
|
|
GID uint `json:"gid"`
|
|
ModificationTime uint `json:"modification_time"`
|
|
Mode uint `json:"mode"`
|
|
URI string `json:"uri"`
|
|
Size uint `json:"size"`
|
|
}
|
|
|
|
// ParseBrowse parses Browse() responses to []File
|
|
func ParseBrowse(browseResponse string) (files []File, err error) {
|
|
var temp struct {
|
|
Files []File `json:"element"`
|
|
}
|
|
err = json.Unmarshal([]byte(browseResponse), &temp)
|
|
files = temp.Files
|
|
return
|
|
}
|
|
|
|
// Browse returns a File array with the items of the provided directory URI
|
|
func (vlc *VLC) Browse(uri string) (files []File, err error) {
|
|
var response string
|
|
response, err = vlc.RequestMaker("/requests/browse.json?uri=" + uri)
|
|
if err != nil {
|
|
return
|
|
}
|
|
files, err = ParseBrowse(response)
|
|
return
|
|
}
|