223 lines
5.4 KiB
Go
223 lines
5.4 KiB
Go
package koofrclient
|
|
|
|
import (
|
|
"path"
|
|
)
|
|
|
|
type TokenRequest struct {
|
|
Email string `json:"email"`
|
|
Password string `json:"password"`
|
|
}
|
|
|
|
type Token struct {
|
|
Token string
|
|
}
|
|
|
|
type MountType string
|
|
|
|
const (
|
|
MountDeviceType = "device"
|
|
MountExportType = "export"
|
|
MountImportType = "import"
|
|
)
|
|
|
|
type Mount struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
Type MountType `json:"type"`
|
|
Origin string `json:"origin"`
|
|
SpaceTotal int64 `json:"spaceTotal"`
|
|
SpaceUsed int64 `json:"spaceUsed"`
|
|
Online bool `json:"online"`
|
|
Owner MountUser `json:"owner"`
|
|
Users []MountUser `json:"users"`
|
|
Groups []MountGroup `json:"groups"`
|
|
Version int `json:"version"`
|
|
Permissions MountPermissions `json:"permissions"`
|
|
IsPrimary bool `json:"isPrimary"`
|
|
IsShared bool `json:"isShared"`
|
|
}
|
|
|
|
type MountUser struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
Email string `json:"email"`
|
|
Permissions MountPermissions `json:"permissions"`
|
|
}
|
|
|
|
type MountGroup struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
Permissions MountPermissions `json:"permissions"`
|
|
}
|
|
|
|
type MountPermissions struct {
|
|
Read bool `json:"READ"`
|
|
Write bool `json:"write"`
|
|
Owner bool `json:"OWNER"`
|
|
Mount bool `json:"MOUNT"`
|
|
CreateReceiver bool `json:"CREATE_RECEIVER"`
|
|
CreateLink bool `json:"CREATE_LINK"`
|
|
CreateAction bool `json:"CREATE_ACTION"`
|
|
Comment bool `json:"COMMENT"`
|
|
}
|
|
|
|
type DeviceProvider string
|
|
|
|
const (
|
|
StorageHubProvider = "storagehub"
|
|
StorageBlobProvider = "storageblob"
|
|
)
|
|
|
|
type Device struct {
|
|
Id string `json:"id"`
|
|
ApiKey string `json:"apiKey"`
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
SpaceTotal int64 `json:"spaceTotal"`
|
|
SpaceUsed int64 `json:"spaceUsed"`
|
|
SpaceFree int64 `json:"spaceFree"`
|
|
Version int `json:"version"`
|
|
Provider struct {
|
|
Name string `json:"name"`
|
|
Data interface{} `json:"data"`
|
|
} `json:"provider"`
|
|
ReadOnly bool `json:"readonly"`
|
|
RootMountId string `json:"rootMountId"`
|
|
}
|
|
|
|
type DeviceCreate struct {
|
|
Name string `json:"name"`
|
|
ProviderName DeviceProvider `json:"providerName"`
|
|
}
|
|
|
|
type DeviceUpdate struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type FolderCreate struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type FileCopy struct {
|
|
ToMountId string `json:"toMountId"`
|
|
TPath string `json:"toPath"`
|
|
Modified *int64 `json:"modified,omitempty"`
|
|
}
|
|
|
|
type FileMove struct {
|
|
ToMountId string `json:"toMountId"`
|
|
TPath string `json:"toPath"`
|
|
}
|
|
|
|
type FileSpan struct {
|
|
Start int64
|
|
End int64
|
|
}
|
|
|
|
type FileUpload struct {
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type PutOptions struct {
|
|
OverwriteIfModified *int64
|
|
OverwriteIfSize *int64
|
|
OverwriteIfHash *string
|
|
OverwriteIgnoreNonExisting bool
|
|
NoRename bool
|
|
ForceOverwrite bool
|
|
SetModified *int64
|
|
}
|
|
|
|
type CopyOptions struct {
|
|
SetModified *int64
|
|
}
|
|
|
|
type DeleteOptions struct {
|
|
RemoveIfModified *int64
|
|
RemoveIfSize *int64
|
|
RemoveIfHash *string
|
|
RemoveIfEmpty bool
|
|
}
|
|
|
|
type FileInfo struct {
|
|
Name string `json:"name"`
|
|
Type string `json:"type"`
|
|
Modified int64 `json:"modified"`
|
|
Size int64 `json:"size"`
|
|
ContentType string `json:"contentType"`
|
|
Path string `json:"path"`
|
|
Hash string `json:"hash"`
|
|
}
|
|
|
|
type FileTree struct {
|
|
FileInfo
|
|
Children []*FileTree `json:"children"`
|
|
}
|
|
|
|
func (tree *FileTree) Flatten() []FileInfo {
|
|
trees := []*FileTree{tree}
|
|
for i := 0; i < len(trees); i++ {
|
|
tree := trees[i]
|
|
for _, child := range tree.Children {
|
|
child.Name = path.Join(tree.Name, child.Name)
|
|
trees = append(trees, child)
|
|
}
|
|
}
|
|
infos := make([]FileInfo, len(trees))
|
|
for i, tree := range trees {
|
|
infos[i] = tree.FileInfo
|
|
}
|
|
return infos
|
|
}
|
|
|
|
type User struct {
|
|
Id string `json:"id"`
|
|
FirstName string `json:"firstName"`
|
|
LastName string `json:"lastName"`
|
|
Email string `json:"email"`
|
|
}
|
|
|
|
type Shared struct {
|
|
Name string `json:name`
|
|
Type MountType `json:type`
|
|
Modified int64 `json:modified`
|
|
Size int64 `json:size`
|
|
ContentType string `json:contentType`
|
|
Hash string `json:hash`
|
|
Mount Mount `json:mount`
|
|
Link Link `json:link`
|
|
Receiver Receiver `json:receiver`
|
|
}
|
|
|
|
type Link struct {
|
|
Id string `json:id`
|
|
Name string `json:name`
|
|
Path string `json:path`
|
|
Counter int64 `json:counter`
|
|
Url string `json:url`
|
|
ShortUrl string `json:shortUrl`
|
|
Hash string `json:hash`
|
|
Host string `json:host`
|
|
HasPassword bool `json:hasPassword`
|
|
Password string `json:password`
|
|
ValidFrom int64 `json:validFrom`
|
|
ValidTo int64 `json:validTo`
|
|
PasswordRequired bool `json:passwordRequired`
|
|
}
|
|
|
|
type Receiver struct {
|
|
Id string `json:id`
|
|
Name string `json:name`
|
|
Path string `json:path`
|
|
Counter int64 `json:counter`
|
|
Url string `json:url`
|
|
ShortUrl string `json:shortUrl`
|
|
Hash string `json:hash`
|
|
Host string `json:host`
|
|
HasPassword bool `json:hasPassword`
|
|
Password string `json:password`
|
|
ValidFrom int64 `json:validFrom`
|
|
ValidTo int64 `json:validTo`
|
|
Alert bool `json:alert`
|
|
}
|