161 lines
4.9 KiB
Go
161 lines
4.9 KiB
Go
// Package api has type definitions for sugarsync
|
|
//
|
|
// Converted from the API docs with help from https://www.onlinetool.io/xmltogo/
|
|
package api
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"time"
|
|
)
|
|
|
|
// AppAuthorization is used to request a refresh token
|
|
//
|
|
// The token is returned in the Location: field
|
|
type AppAuthorization struct {
|
|
XMLName xml.Name `xml:"appAuthorization"`
|
|
Username string `xml:"username"`
|
|
Password string `xml:"password"`
|
|
Application string `xml:"application"`
|
|
AccessKeyID string `xml:"accessKeyId"`
|
|
PrivateAccessKey string `xml:"privateAccessKey"`
|
|
}
|
|
|
|
// TokenAuthRequest is the request to get Authorization
|
|
type TokenAuthRequest struct {
|
|
XMLName xml.Name `xml:"tokenAuthRequest"`
|
|
AccessKeyID string `xml:"accessKeyId"`
|
|
PrivateAccessKey string `xml:"privateAccessKey"`
|
|
RefreshToken string `xml:"refreshToken"`
|
|
}
|
|
|
|
// Authorization is returned from the TokenAuthRequest
|
|
type Authorization struct {
|
|
XMLName xml.Name `xml:"authorization"`
|
|
Expiration time.Time `xml:"expiration"`
|
|
User string `xml:"user"`
|
|
}
|
|
|
|
// File represents a single file
|
|
type File struct {
|
|
Name string `xml:"displayName"`
|
|
Ref string `xml:"ref"`
|
|
DsID string `xml:"dsid"`
|
|
TimeCreated time.Time `xml:"timeCreated"`
|
|
Parent string `xml:"parent"`
|
|
Size int64 `xml:"size"`
|
|
LastModified time.Time `xml:"lastModified"`
|
|
MediaType string `xml:"mediaType"`
|
|
PresentOnServer bool `xml:"presentOnServer"`
|
|
FileData string `xml:"fileData"`
|
|
Versions string `xml:"versions"`
|
|
PublicLink PublicLink
|
|
}
|
|
|
|
// Collection represents
|
|
// - Workspace Collection
|
|
// - Sync Folders collection
|
|
// - Folder
|
|
type Collection struct {
|
|
Type string `xml:"type,attr"`
|
|
Name string `xml:"displayName"`
|
|
Ref string `xml:"ref"` // only for Folder
|
|
DsID string `xml:"dsid"`
|
|
TimeCreated time.Time `xml:"timeCreated"`
|
|
Parent string `xml:"parent"`
|
|
Collections string `xml:"collections"`
|
|
Files string `xml:"files"`
|
|
Contents string `xml:"contents"`
|
|
// Sharing bool `xml:"sharing>enabled,attr"`
|
|
}
|
|
|
|
// CollectionContents is the result of a list call
|
|
type CollectionContents struct {
|
|
//XMLName xml.Name `xml:"collectionContents"`
|
|
Start int `xml:"start,attr"`
|
|
HasMore bool `xml:"hasMore,attr"`
|
|
End int `xml:"end,attr"`
|
|
Collections []Collection `xml:"collection"`
|
|
Files []File `xml:"file"`
|
|
}
|
|
|
|
// User is returned from the /user call
|
|
type User struct {
|
|
XMLName xml.Name `xml:"user"`
|
|
Username string `xml:"username"`
|
|
Nickname string `xml:"nickname"`
|
|
Quota struct {
|
|
Limit int64 `xml:"limit"`
|
|
Usage int64 `xml:"usage"`
|
|
} `xml:"quota"`
|
|
Workspaces string `xml:"workspaces"`
|
|
SyncFolders string `xml:"syncfolders"`
|
|
Deleted string `xml:"deleted"`
|
|
MagicBriefcase string `xml:"magicBriefcase"`
|
|
WebArchive string `xml:"webArchive"`
|
|
MobilePhotos string `xml:"mobilePhotos"`
|
|
Albums string `xml:"albums"`
|
|
RecentActivities string `xml:"recentActivities"`
|
|
ReceivedShares string `xml:"receivedShares"`
|
|
PublicLinks string `xml:"publicLinks"`
|
|
MaximumPublicLinkSize int `xml:"maximumPublicLinkSize"`
|
|
}
|
|
|
|
// CreateFolder is posted to a folder URL to create a folder
|
|
type CreateFolder struct {
|
|
XMLName xml.Name `xml:"folder"`
|
|
Name string `xml:"displayName"`
|
|
}
|
|
|
|
// MoveFolder is posted to a folder URL to move a folder
|
|
type MoveFolder struct {
|
|
XMLName xml.Name `xml:"folder"`
|
|
Name string `xml:"displayName"`
|
|
Parent string `xml:"parent"`
|
|
}
|
|
|
|
// CreateSyncFolder is posted to the root folder URL to create a sync folder
|
|
type CreateSyncFolder struct {
|
|
XMLName xml.Name `xml:"syncFolder"`
|
|
Name string `xml:"displayName"`
|
|
}
|
|
|
|
// CreateFile is posted to a folder URL to create a file
|
|
type CreateFile struct {
|
|
XMLName xml.Name `xml:"file"`
|
|
Name string `xml:"displayName"`
|
|
MediaType string `xml:"mediaType"`
|
|
}
|
|
|
|
// MoveFile is posted to a file URL to create a file
|
|
type MoveFile struct {
|
|
XMLName xml.Name `xml:"file"`
|
|
Name string `xml:"displayName"`
|
|
Parent string `xml:"parent"`
|
|
}
|
|
|
|
// CopyFile copies a file from source
|
|
type CopyFile struct {
|
|
XMLName xml.Name `xml:"fileCopy"`
|
|
Source string `xml:"source,attr"`
|
|
Name string `xml:"displayName"`
|
|
}
|
|
|
|
// PublicLink is the URL and enabled flag for a public link
|
|
type PublicLink struct {
|
|
XMLName xml.Name `xml:"publicLink"`
|
|
URL string `xml:",chardata"`
|
|
Enabled bool `xml:"enabled,attr"`
|
|
}
|
|
|
|
// SetPublicLink can be used to enable the file for sharing
|
|
type SetPublicLink struct {
|
|
XMLName xml.Name `xml:"file"`
|
|
PublicLink PublicLink
|
|
}
|
|
|
|
// SetLastModified sets the modified time for a file
|
|
type SetLastModified struct {
|
|
XMLName xml.Name `xml:"file"`
|
|
LastModified time.Time `xml:"lastModified"`
|
|
}
|