[@types/deluge] Add types for the deluge library

This commit is contained in:
Felix Plymouth
2018-06-22 22:54:36 +02:00
parent 4ca75191c7
commit c7118e8c8f
4 changed files with 172 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
import * as deluge from ".";
import * as http from 'http';
const delugeInstance: deluge.Deluge = deluge("deluge-webui-api-url", "password");
delugeInstance.getHosts((error, result : deluge.Host[], response : http.ServerResponse) => {
})
delugeInstance.connect("id", (error, result : boolean, response : http.ServerResponse) => {
})
delugeInstance.add("magnet_link", "path", (error, result : boolean, response: http.ServerResponse ) => {
})
delugeInstance.getTorrentRecord((error, result : deluge.TorrentRecord, response : http.ServerResponse) => {
})
delugeInstance.isConnected((error, result : boolean, response : http.ServerResponse) => {
})
delugeInstance.setCookies({ "http://www.some-private-tracker.com/": "my_cookie1=xxx;my_cookie2=yyy;" },
(error, result : boolean, response : http.ServerResponse) => {
})
+126
View File
@@ -0,0 +1,126 @@
// 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{
export interface Host {
id: string,
ip: string,
port: number,
status: string
}
export 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
}
export 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
}
export interface TorrentRecord {
stats: DelugeStats,
connected: boolean,
torrents: {
[key: string]: Torrent
},
filters: {
state: [string, number][],
tracker_host: [string, number][]
}
}
export 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
}
export 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;
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": 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" }