summaryrefslogtreecommitdiffstats
path: root/module/remote/pyload.thrift
diff options
context:
space:
mode:
Diffstat (limited to 'module/remote/pyload.thrift')
-rw-r--r--module/remote/pyload.thrift538
1 files changed, 0 insertions, 538 deletions
diff --git a/module/remote/pyload.thrift b/module/remote/pyload.thrift
deleted file mode 100644
index 57d7e0a0a..000000000
--- a/module/remote/pyload.thrift
+++ /dev/null
@@ -1,538 +0,0 @@
-namespace java org.pyload.thrift
-
-typedef i32 FileID
-typedef i32 PackageID
-typedef i32 ResultID
-typedef i32 InteractionID
-typedef i32 UserID
-typedef i64 UTCDate
-typedef i64 ByteCount
-typedef list<string> LinkList
-typedef string PluginName
-typedef string JSONString
-
-// NA - Not Available
-enum DownloadStatus {
- NA,
- Offline,
- Online,
- Queued,
- Paused,
- Finished,
- Skipped,
- Failed,
- Starting,
- Waiting,
- Downloading,
- TempOffline,
- Aborted,
- Decrypting,
- Processing,
- Custom,
- Unknown
-}
-
-// Download states, combination of several downloadstatuses
-// defined in Api
-enum DownloadState {
- All,
- Finished,
- Unfinished,
- Failed,
- Unmanaged // internal state
-}
-
-enum MediaType {
- All = 0
- Other = 1,
- Audio = 2,
- Image = 4,
- Video = 8,
- Document = 16,
- Archive = 32,
-}
-
-enum FileStatus {
- Ok,
- Missing,
- Remote, // file is available at remote location
-}
-
-enum PackageStatus {
- Ok,
- Paused,
- Folder,
- Remote,
-}
-
-// types for user interaction
-// some may only be place holder currently not supported
-// also all input - output combination are not reasonable, see InteractionManager for further info
-// Todo: how about: time, ip, s.o.
-enum InputType {
- NA,
- Text,
- Int,
- File,
- Folder,
- Textbox,
- Password,
- Bool, // confirm like, yes or no dialog
- Click, // for positional captchas
- Select, // select from list
- Multiple, // multiple choice from list of elements
- List, // arbitary list of elements
- Table // table like data structure
-}
-// more can be implemented by need
-
-// this describes the type of the outgoing interaction
-// ensure they can be logcial or'ed
-enum Interaction {
- All = 0,
- Notification = 1,
- Captcha = 2,
- Query = 4,
-}
-
-enum Permission {
- All = 0, // requires no permission, but login
- Add = 1, // can add packages
- Delete = 2, // can delete packages
- Modify = 4, // modify some attribute of downloads
- Download = 8, // can download from webinterface
- Accounts = 16, // can access accounts
- Interaction = 32, // can interact with plugins
- Plugins = 64 // user can configure plugins and activate addons
-}
-
-enum Role {
- Admin = 0, //admin has all permissions implicit
- User = 1
-}
-
-struct Input {
- 1: InputType type,
- 2: optional JSONString data,
-}
-
-struct DownloadProgress {
- 1: FileID fid,
- 2: PackageID pid,
- 3: ByteCount speed, // per second
- 4: DownloadStatus status,
-}
-
-struct ProgressInfo {
- 1: PluginName plugin,
- 2: string name,
- 3: string statusmsg,
- 4: i32 eta, // in seconds
- 5: ByteCount done,
- 6: ByteCount total, // arbitary number, size in case of files
- 7: optional DownloadProgress download
-}
-
-// download info for specific file
-struct DownloadInfo {
- 1: string url,
- 2: PluginName plugin,
- 3: string hash,
- 4: DownloadStatus status,
- 5: string statusmsg,
- 6: string error,
-}
-
-struct FileInfo {
- 1: FileID fid,
- 2: string name,
- 3: PackageID package,
- 4: UserID owner,
- 5: ByteCount size,
- 6: FileStatus status,
- 7: MediaType media,
- 8: UTCDate added,
- 9: i16 fileorder,
- 10: optional DownloadInfo download,
-}
-
-struct PackageStats {
- 1: i16 linkstotal,
- 2: i16 linksdone,
- 3: ByteCount sizetotal,
- 4: ByteCount sizedone,
-}
-
-struct PackageInfo {
- 1: PackageID pid,
- 2: string name,
- 3: string folder,
- 4: PackageID root,
- 5: UserID owner,
- 6: string site,
- 7: string comment,
- 8: string password,
- 9: UTCDate added,
- 10: list<string> tags,
- 11: PackageStatus status,
- 12: bool shared,
- 13: i16 packageorder,
- 14: PackageStats stats,
- 15: list<FileID> fids,
- 16: list<PackageID> pids,
-}
-
-// thrift does not allow recursive datatypes, so all data is accumulated and mapped with id
-struct TreeCollection {
- 1: PackageInfo root,
- 2: map<FileID, FileInfo> files,
- 3: map<PackageID, PackageInfo> packages
-}
-
-// general info about link, used for collector and online results
-struct LinkStatus {
- 1: string url,
- 2: string name,
- 3: PluginName plugin,
- 4: ByteCount size, // size <= 0 : unknown
- 5: DownloadStatus status,
- 6: string packagename,
-}
-
-struct ServerStatus {
- 1: ByteCount speed,
- 2: i16 linkstotal,
- 3: i16 linksqueue,
- 4: ByteCount sizetotal,
- 5: ByteCount sizequeue,
- 6: bool notifications,
- 7: bool paused,
- 8: bool download,
- 9: bool reconnect,
-}
-
-struct InteractionTask {
- 1: InteractionID iid,
- 2: Interaction type,
- 3: Input input,
- 4: optional JSONString default_value,
- 5: string title,
- 6: string description,
- 7: PluginName plugin,
-}
-
-struct AddonService {
- 1: string func_name,
- 2: string description,
- 3: list<string> arguments,
- 4: optional i16 media,
-}
-
-struct AddonInfo {
- 1: string func_name,
- 2: string description,
- 3: JSONString value,
-}
-
-struct ConfigItem {
- 1: string name,
- 2: string label,
- 3: string description,
- 4: Input input,
- 5: JSONString default_value,
- 6: JSONString value,
-}
-
-struct ConfigHolder {
- 1: string name, // for plugin this is the PluginName
- 2: string label,
- 3: string description,
- 4: string long_description,
- 5: list<ConfigItem> items,
- 6: optional list<AddonInfo> info,
-}
-
-struct ConfigInfo {
- 1: string name
- 2: string label,
- 3: string description,
- 4: string category,
- 5: bool user_context,
- 6: optional bool activated,
-}
-
-struct EventInfo {
- 1: string eventname,
- 2: list<JSONString> event_args, //will contain json objects
-}
-
-struct UserData {
- 1: UserID uid,
- 2: string name,
- 3: string email,
- 4: i16 role,
- 5: i16 permission,
- 6: string folder,
- 7: ByteCount traffic
- 8: i16 dllimit
- 9: string dlquota,
- 10: ByteCount hddquota,
- 11: UserID user,
- 12: string templateName
-}
-
-struct AccountInfo {
- 1: PluginName plugin,
- 2: string loginname,
- 3: UserID owner,
- 4: bool valid,
- 5: UTCDate validuntil,
- 6: ByteCount trafficleft,
- 7: ByteCount maxtraffic,
- 8: bool premium,
- 9: bool activated,
- 10: bool shared,
- 11: map<string, string> options,
-}
-
-struct OnlineCheck {
- 1: ResultID rid, // -1 -> nothing more to get
- 2: map<string, LinkStatus> data, // url to result
-}
-
-// exceptions
-
-exception PackageDoesNotExists {
- 1: PackageID pid
-}
-
-exception FileDoesNotExists {
- 1: FileID fid
-}
-
-exception UserDoesNotExists {
- 1: string user
-}
-
-exception ServiceDoesNotExists {
- 1: string plugin
- 2: string func
-}
-
-exception ServiceException {
- 1: string msg
-}
-
-exception InvalidConfigSection {
- 1: string section
-}
-
-exception Unauthorized {
-}
-
-exception Forbidden {
-}
-
-
-service Pyload {
-
- ///////////////////////
- // Core Status
- ///////////////////////
-
- string getServerVersion(),
- string getWSAddress(),
- ServerStatus getServerStatus(),
- list<ProgressInfo> getProgressInfo(),
-
- list<string> getLog(1: i32 offset),
- ByteCount freeSpace(),
-
- void pauseServer(),
- void unpauseServer(),
- bool togglePause(),
- bool toggleReconnect(),
-
- void quit(),
- void restart(),
-
- ///////////////////////
- // Configuration
- ///////////////////////
-
- map<string, ConfigHolder> getConfig(),
- string getConfigValue(1: string section, 2: string option),
-
- // two methods with ambigous classification, could be configuration or addon/plugin related
- list<ConfigInfo> getCoreConfig(),
- list<ConfigInfo> getPluginConfig(),
- list<ConfigInfo> getAvailablePlugins(),
-
- ConfigHolder loadConfig(1: string name),
-
- void setConfigValue(1: string section, 2: string option, 3: string value),
- void saveConfig(1: ConfigHolder config),
- void deleteConfig(1: PluginName plugin),
-
- ///////////////////////
- // Download Preparing
- ///////////////////////
-
- map<PluginName, LinkList> checkURLs(1: LinkList urls),
- map<PluginName, LinkList> parseURLs(1: string html, 2: string url),
-
- // parses results and generates packages
- OnlineCheck checkOnlineStatus(1: LinkList urls),
- OnlineCheck checkOnlineStatusContainer(1: LinkList urls, 2: string filename, 3: binary data)
-
- // poll results from previously started online check
- OnlineCheck pollResults(1: ResultID rid),
-
- // packagename -> urls
- map<string, LinkList> generatePackages(1: LinkList links),
-
- ///////////////////////
- // Download
- ///////////////////////
-
- list<PackageID> generateAndAddPackages(1: LinkList links, 2: bool paused),
-
- PackageID createPackage(1: string name, 2: string folder, 3: PackageID root, 4: string password,
- 5: string site, 6: string comment, 7: bool paused),
-
- PackageID addPackage(1: string name, 2: LinkList links, 3: string password),
- // same as above with paused attribute
- PackageID addPackageP(1: string name, 2: LinkList links, 3: string password, 4: bool paused),
-
- // pid -1 is toplevel
- PackageID addPackageChild(1: string name, 2: LinkList links, 3: string password, 4: PackageID root, 5: bool paused),
-
- PackageID uploadContainer(1: string filename, 2: binary data),
-
- void addLinks(1: PackageID pid, 2: LinkList links) throws (1: PackageDoesNotExists e),
- void addLocalFile(1: PackageID pid, 2: string name, 3: string path) throws (1: PackageDoesNotExists e)
-
- // these are real file operations and WILL delete files on disk
- void deleteFiles(1: list<FileID> fids),
- void deletePackages(1: list<PackageID> pids), // delete the whole folder recursive
-
- // Modify Downloads
-
- void restartPackage(1: PackageID pid),
- void restartFile(1: FileID fid),
- void recheckPackage(1: PackageID pid),
- void restartFailed(),
- void stopDownloads(1: list<FileID> fids),
- void stopAllDownloads(),
-
- ///////////////////////
- // Collector
- ///////////////////////
-
- list<LinkStatus> getCollector(),
-
- void addToCollector(1: LinkList links),
- PackageID addFromCollector(1: string name, 2: bool paused),
- void renameCollPack(1: string name, 2: string new_name),
- void deleteCollPack(1: string name),
- void deleteCollLink(1: string url),
-
- ////////////////////////////
- // File Information retrieval
- ////////////////////////////
-
- TreeCollection getAllFiles(),
- TreeCollection getFilteredFiles(1: DownloadState state),
-
- // pid -1 for root, full=False only delivers first level in tree
- TreeCollection getFileTree(1: PackageID pid, 2: bool full),
- TreeCollection getFilteredFileTree(1: PackageID pid, 2: bool full, 3: DownloadState state),
-
- // same as above with full=False
- TreeCollection getPackageContent(1: PackageID pid),
-
- PackageInfo getPackageInfo(1: PackageID pid) throws (1: PackageDoesNotExists e),
- FileInfo getFileInfo(1: FileID fid) throws (1: FileDoesNotExists e),
-
- TreeCollection findFiles(1: string pattern),
- TreeCollection findPackages(1: list<string> tags),
- list<string> searchSuggestions(1: string pattern),
-
- // Modify Files/Packages
-
- // moving package while downloading is not possible, so they will return bool to indicate success
- void updatePackage(1: PackageInfo pack) throws (1: PackageDoesNotExists e),
- bool setPackageFolder(1: PackageID pid, 2: string path) throws (1: PackageDoesNotExists e),
-
- // as above, this will move files on disk
- bool movePackage(1: PackageID pid, 2: PackageID root) throws (1: PackageDoesNotExists e),
- bool moveFiles(1: list<FileID> fids, 2: PackageID pid) throws (1: PackageDoesNotExists e),
-
- void orderPackage(1: list<PackageID> pids, 2: i16 position),
- void orderFiles(1: list<FileID> fids, 2: PackageID pid, 3: i16 position),
-
- ///////////////////////
- // User Interaction
- ///////////////////////
-
- // mode = interaction types binary ORed
- bool isInteractionWaiting(1: i16 mode),
- list<InteractionTask> getInteractionTasks(1: i16 mode),
- void setInteractionResult(1: InteractionID iid, 2: JSONString result),
-
- // generate a download link, everybody can download the file until timeout reached
- string generateDownloadLink(1: FileID fid, 2: i16 timeout),
-
- ///////////////////////
- // Account Methods
- ///////////////////////
-
- list<AccountInfo> getAccounts(1: bool refresh),
- list<string> getAccountTypes(),
- void updateAccount(1: PluginName plugin, 2: string login, 3: string password),
- void updateAccountInfo(1: AccountInfo account),
- void removeAccount(1: AccountInfo account),
-
- /////////////////////////
- // Auth+User Information
- /////////////////////////
-
- bool login(1: string username, 2: string password),
- // returns own user data
- UserData getUserData(),
-
- // all user, for admins only
- map<UserID, UserData> getAllUserData(),
-
- UserData addUser(1: string username, 2:string password),
-
- // normal user can only update their own userdata and not all attributes
- void updateUserData(1: UserData data),
- void removeUser(1: UserID uid),
-
- // works contextual, admin can change every password
- bool setPassword(1: string username, 2: string old_password, 3: string new_password),
-
- ///////////////////////
- // Addon Methods
- ///////////////////////
-
- //map<PluginName, list<AddonInfo>> getAllInfo(),
- //list<AddonInfo> getInfoByPlugin(1: PluginName plugin),
-
- map<PluginName, list<AddonService>> getAddonHandler(),
- bool hasAddonHandler(1: PluginName plugin, 2: string func),
-
- void callAddon(1: PluginName plugin, 2: string func, 3: list<JSONString> arguments)
- throws (1: ServiceDoesNotExists e, 2: ServiceException ex),
-
- // special variant of callAddon that works on the media types, acccepting integer
- void callAddonHandler(1: PluginName plugin, 2: string func, 3: PackageID pid_or_fid)
- throws (1: ServiceDoesNotExists e, 2: ServiceException ex),
-
-
- //scheduler
-
- // TODO
-
-}