Merge pull request #26765 from Diasiare/master

[@types/deluge] Add typings for the deluge npm library
This commit is contained in:
Nathan Shively-Sanders
2018-06-25 09:17:45 -07:00
committed by GitHub
4 changed files with 169 additions and 0 deletions
+23
View File
@@ -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) => {
});
+122
View File
@@ -0,0 +1,122 @@
// Type definitions for deluge 1.7
// Project: https://github.com/ginman86/deluge
// Definitions by: Felix Plymouth <https://github.com/Diasiare>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node"/>
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;
}
}
+23
View File
@@ -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"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }