Files
pixeldrain_api_client/pixelapi/filesystem.go
2021-03-10 19:08:58 +01:00

61 lines
1.8 KiB
Go

package pixelapi
import (
"net/url"
"time"
)
// Bucket holds a filesystem
type Bucket struct {
Name string `json:"name"`
ID string `json:"id"`
DateCreated time.Time `json:"date_created"`
DateModified time.Time `json:"date_modified"`
ReadPassword string `json:"read_password"`
WritePassword string `json:"write_password"`
Properties map[string]string `json:"properties"`
Permissions Permissions `json:"permissions"`
}
// FilesystemPath contains a filesystem with a bucket and all its children
// leading up to the requested node
type FilesystemPath struct {
Bucket Bucket `json:"bucket"`
Parents []FilesystemNode `json:"parents"`
Base FilesystemNode `json:"base"`
}
// FilesystemNode is the return value of the GET /filesystem/ API
type FilesystemNode struct {
Type string `json:"type"`
Path string `json:"path"`
Name string `json:"name"`
DateCreated time.Time `json:"date_created"`
DateModified time.Time `json:"date_modified"`
// File params
FileSize int64 `json:"file_size"`
FileType string `json:"file_type"`
Children []FilesystemNode `json:"children"`
}
// Permissions contains the actions a user can perform on an object
type Permissions struct {
Create bool `json:"create"`
Read bool `json:"read"`
Update bool `json:"update"`
Delete bool `json:"delete"`
}
// GetFilesystemBuckets returns a list of buckets for the user. You need to be
// authenticated
func (p *PixelAPI) GetFilesystemBuckets() (resp []Bucket, err error) {
return resp, p.jsonRequest("GET", "filesystem", &resp)
}
// GetFilesystemPath opens a filesystem path
func (p *PixelAPI) GetFilesystemPath(path string) (resp FilesystemPath, err error) {
return resp, p.jsonRequest("GET", "filesystem/"+url.PathEscape(path)+"?stat", &resp)
}