diff --git a/types/deluge/deluge-tests.ts b/types/deluge/deluge-tests.ts new file mode 100644 index 0000000000..2ba8088915 --- /dev/null +++ b/types/deluge/deluge-tests.ts @@ -0,0 +1,23 @@ +import deluge = require("deluge"); +import * as http from 'http'; + +const delugeInstance: deluge.Deluge = deluge("deluge-webui-api-url", "password"); + +delugeInstance.getHosts((error: string, result: deluge.Host[], response: http.ServerResponse) => { +}); + +delugeInstance.connect("id", (error: string, result: boolean, response: http.ServerResponse) => { +}); + +delugeInstance.add("magnet_link", "path", (error: string, result: boolean, response: http.ServerResponse) => { +}); + +delugeInstance.getTorrentRecord((error: string, result: deluge.TorrentRecord, response: http.ServerResponse) => { +}); + +delugeInstance.isConnected((error: string, result: boolean, response: http.ServerResponse) => { +}); + +delugeInstance.setCookies({ "http://www.some-private-tracker.com/": "my_cookie1=xxx;my_cookie2=yyy;" }, + (error: string, result: boolean, response: http.ServerResponse) => { +}); diff --git a/types/deluge/index.d.ts b/types/deluge/index.d.ts new file mode 100644 index 0000000000..8ca69daedd --- /dev/null +++ b/types/deluge/index.d.ts @@ -0,0 +1,122 @@ +// Type definitions for deluge 1.7 +// Project: https://github.com/ginman86/deluge +// Definitions by: Felix Plymouth +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +import * as http from "http"; + +export = deluge; + +declare function deluge(deluge_url: string, password: string): deluge.Deluge; + +declare namespace deluge { + interface Host { + id: string; + ip: string; + port: number; + status: string; + } + + interface DelugeStats { + upload_protocol_rate: number; + max_upload: number; + download_protocol_rate: number; + download_rate: number; + has_incoming_connections: boolean; + num_connections: number; + max_download: number; + upload_rate: number; + dht_nodes: number; + free_space: number; + max_num_connections: number; + } + + interface Torrent { + max_download_speed: number; + upload_payload_rate: number; + download_payload_rate: number; + num_peers: number; + ratio: number; + total_peers: number; + state: string; + max_upload_speed: number; + eta: number; + save_path: string; + progress: number; + time_added: number; + tracker_host: string; + total_uploaded: number; + total_done: number; + total_wanted: number; + total_seeds: number; + seeds_peers_ratio: number; + num_seeds: number; + name: string; + is_auto_managed: boolean; + queue: number; + distributed_copies: number; + } + + interface TorrentRecord { + stats: DelugeStats; + connected: boolean; + torrents: { + [key: string]: Torrent; + }; + filters: { + state: Array<[string, number]>; + tracker_host: Array<[string, number]>; + }; + } + + interface DownloadOptions { + file_priorities: any[]; + add_paused: boolean; + compact_allocation: boolean; + download_location: string; + max_connections: number; + max_download_speed: number; + max_upload_slots: number; + max_upload_speed: number; + prioritize_first_last_pieces: boolean; + } + + interface Deluge { + /** + * Add the torrent to Deluge + * @param magnet + * @param dlPath + * @param callback + */ + add(magnet: string, dlPath: string | DownloadOptions, callback: (error: string, result: boolean, response: http.ServerResponse) => void): void; + /** + * Connect the WebUI to the wanted daemon + * @param hostID + * @param callback + */ + connect(hostID: string, callback: (error: string, result: boolean, response: http.ServerResponse) => void): void; + /** + * Get the list of all the hosts that the WebUI can connect to + * @param callback + */ + getHosts(callback: (error: string, result: Host[], response: http.ServerResponse) => void): void; + /** + * Get the list of all torrents and changing data that represents their status in the WebUI + * @param callback + */ + getTorrentRecord(callback: (error: string, result: TorrentRecord, response: http.ServerResponse) => void): void; + /** + * Check if the WebUI is connected to a deamon. Return true or false as result of the callback. + * @param callback + */ + isConnected(callback: (error: string, result: boolean, response: http.ServerResponse) => void): void; + /** + * Set cookies in COOKIE_JAR, cookies is an object with urls as keys, example: + * {'http://example.org/': 'uid=1234;pass=xxxx;'} + * @object cookies + */ + setCookies(cookies: { [key: string]: string }, callback: (error: string, result: boolean, response: http.ServerResponse) => void): void; + } +} diff --git a/types/deluge/tsconfig.json b/types/deluge/tsconfig.json new file mode 100644 index 0000000000..05deb4bcb2 --- /dev/null +++ b/types/deluge/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes" : true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "deluge-tests.ts" + ] +} diff --git a/types/deluge/tslint.json b/types/deluge/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/deluge/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }