trans-api 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +12 -0
- data/.vagrant/bootstrap/settings.json +70 -0
- data/.vagrant/bootstrap/testing.sh +34 -0
- data/Gemfile.lock +34 -8
- data/README.md +121 -38
- data/Rakefile +14 -0
- data/Vagrantfile +18 -0
- data/lib/trans-api/client.rb +8 -2
- data/lib/trans-api/connect.rb +59 -133
- data/lib/trans-api/session.rb +8 -0
- data/lib/trans-api/torrent.rb +39 -9
- data/lib/trans-api/version.rb +1 -1
- data/lib/trans-api.rb +3 -1
- data/test/test_helper.rb +6 -0
- data/test/unit/trans_connect.rb +14 -150
- data/test/unit/trans_session_object.rb +15 -9
- data/test/unit/trans_torrent_object.rb +129 -26
- data/trans-api.gemspec +3 -1
- metadata +48 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d01cbf84b3889d9915b90cafc5d77f2616568f3
|
4
|
+
data.tar.gz: 82999c9a1f31862aedfb2e7f08202bb6bf916502
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9e138a46699147e1afbf586d1fdc78a467f3e5c7ddcbbbf8421d6151b0e36bed7754a2c990ae16ec61b996dc972f2b41cdda694bff36db2d1ed501f05baef8d
|
7
|
+
data.tar.gz: 648590c449721d663b85003c779f83abbcdde2b1c72dc606b5875bcc02282cb3715aeb66126cdcb128349e541d17859a5b4aeea987123f89de3331af9072b849
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
{
|
2
|
+
"alt-speed-down": 50,
|
3
|
+
"alt-speed-enabled": false,
|
4
|
+
"alt-speed-time-begin": 540,
|
5
|
+
"alt-speed-time-day": 127,
|
6
|
+
"alt-speed-time-enabled": false,
|
7
|
+
"alt-speed-time-end": 1020,
|
8
|
+
"alt-speed-up": 50,
|
9
|
+
"bind-address-ipv4": "0.0.0.0",
|
10
|
+
"bind-address-ipv6": "::",
|
11
|
+
"blocklist-enabled": false,
|
12
|
+
"blocklist-url": "http://www.example.com/blocklist",
|
13
|
+
"cache-size-mb": 4,
|
14
|
+
"dht-enabled": true,
|
15
|
+
"download-dir": "/home/vagrant/downloads/",
|
16
|
+
"download-limit": 100,
|
17
|
+
"download-limit-enabled": 0,
|
18
|
+
"download-queue-enabled": true,
|
19
|
+
"download-queue-size": 5,
|
20
|
+
"encryption": 2,
|
21
|
+
"idle-seeding-limit": 30,
|
22
|
+
"idle-seeding-limit-enabled": false,
|
23
|
+
"incomplete-dir": "/root/Downloads",
|
24
|
+
"incomplete-dir-enabled": false,
|
25
|
+
"lpd-enabled": false,
|
26
|
+
"max-peers-global": 200,
|
27
|
+
"message-level": 2,
|
28
|
+
"peer-congestion-algorithm": "",
|
29
|
+
"peer-limit-global": 240,
|
30
|
+
"peer-limit-per-torrent": 60,
|
31
|
+
"peer-port": 51413,
|
32
|
+
"peer-port-random-high": 65535,
|
33
|
+
"peer-port-random-low": 49152,
|
34
|
+
"peer-port-random-on-start": false,
|
35
|
+
"peer-socket-tos": "default",
|
36
|
+
"pex-enabled": true,
|
37
|
+
"port-forwarding-enabled": false,
|
38
|
+
"preallocation": 1,
|
39
|
+
"prefetch-enabled": 1,
|
40
|
+
"queue-stalled-enabled": true,
|
41
|
+
"queue-stalled-minutes": 30,
|
42
|
+
"ratio-limit": 2,
|
43
|
+
"ratio-limit-enabled": false,
|
44
|
+
"rename-partial-files": true,
|
45
|
+
"rpc-authentication-required": true,
|
46
|
+
"rpc-bind-address": "0.0.0.0",
|
47
|
+
"rpc-enabled": true,
|
48
|
+
"rpc-password": "{f95980ad4f56d462b8c27311d7091373b3fdcbc8jwb6VOkY",
|
49
|
+
"rpc-port": 9091,
|
50
|
+
"rpc-url": "/transmission/",
|
51
|
+
"rpc-username": "admin",
|
52
|
+
"rpc-whitelist": "*",
|
53
|
+
"rpc-whitelist-enabled": true,
|
54
|
+
"scrape-paused-torrents-enabled": true,
|
55
|
+
"script-torrent-done-enabled": false,
|
56
|
+
"script-torrent-done-filename": "",
|
57
|
+
"seed-queue-enabled": false,
|
58
|
+
"seed-queue-size": 10,
|
59
|
+
"speed-limit-down": 100,
|
60
|
+
"speed-limit-down-enabled": false,
|
61
|
+
"speed-limit-up": 100,
|
62
|
+
"speed-limit-up-enabled": false,
|
63
|
+
"start-added-torrents": true,
|
64
|
+
"trash-original-torrent-files": false,
|
65
|
+
"umask": 18,
|
66
|
+
"upload-limit": 100,
|
67
|
+
"upload-limit-enabled": 0,
|
68
|
+
"upload-slots-per-torrent": 14,
|
69
|
+
"utp-enabled": true
|
70
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
echo "======================================================="
|
2
|
+
echo " Updating Apt... "
|
3
|
+
echo "======================================================="
|
4
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o Dpkg::Options::="--force-confdef" update
|
5
|
+
|
6
|
+
echo "======================================================="
|
7
|
+
echo " Installing Dependencies... "
|
8
|
+
echo "======================================================="
|
9
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get -q -y -o Dpkg::Options::="--force-confdef" install transmission-cli transmission-common transmission-daemon
|
10
|
+
|
11
|
+
echo "======================================================="
|
12
|
+
echo " Configuring... "
|
13
|
+
echo "======================================================="
|
14
|
+
# ruby /vagrant/.vagrant/bootstrap/testing.rb
|
15
|
+
|
16
|
+
# prepare paths
|
17
|
+
sudo mkdir -p /home/vagrant/downloads/
|
18
|
+
sudo chmod -R 777 /home/vagrant/downloads/
|
19
|
+
# register daemon
|
20
|
+
sudo update-rc.d transmission-daemon defaults
|
21
|
+
# push config and restart
|
22
|
+
sudo service transmission-daemon stop
|
23
|
+
sudo cp /vagrant/.vagrant/bootstrap/settings.json /var/lib/transmission-daemon/info/settings.json
|
24
|
+
sudo chown debian-transmission /var/lib/transmission-daemon/info/settings.json
|
25
|
+
sudo service transmission-daemon start
|
26
|
+
|
27
|
+
echo "======================================================="
|
28
|
+
echo " VM is up and running!"
|
29
|
+
echo " ---------------------"
|
30
|
+
echo " Running service at: http://localhost:19091 (tunneled)"
|
31
|
+
echo " - You can now start testing!"
|
32
|
+
echo " $ CONFIG=\"{\\\"host\\\":\\\"localhost\\\",\\\"port\\\":\\\"19091\\\",\\\"user\\\":\\\"admin\\\",\\\"pass\\\":\\\"adm1n\\\",\\\"path\\\":\\\"/transmission/rpc\\\"}\" ruby -I test test/unit/trans_connect.rb"
|
33
|
+
echo "======================================================="
|
34
|
+
|
data/Gemfile.lock
CHANGED
@@ -1,26 +1,52 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
trans-api (0.0.
|
4
|
+
trans-api (0.0.4)
|
5
5
|
json (> 1.6.1)
|
6
6
|
nokogiri (> 1.5.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
+
coveralls (0.7.1)
|
12
|
+
multi_json (~> 1.3)
|
13
|
+
rest-client
|
14
|
+
simplecov (>= 0.7)
|
15
|
+
term-ansicolor
|
16
|
+
thor
|
17
|
+
docile (1.1.5)
|
11
18
|
json (1.8.1)
|
12
19
|
json (1.8.1-java)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
20
|
+
mime-types (2.3)
|
21
|
+
mini_portile (0.6.0)
|
22
|
+
multi_json (1.10.1)
|
23
|
+
netrc (0.7.7)
|
24
|
+
nokogiri (1.6.3.1)
|
25
|
+
mini_portile (= 0.6.0)
|
26
|
+
nokogiri (1.6.3.1-java)
|
27
|
+
power_assert (0.1.3)
|
28
|
+
rake (10.3.2)
|
29
|
+
rest-client (1.7.2)
|
30
|
+
mime-types (>= 1.16, < 3.0)
|
31
|
+
netrc (~> 0.7)
|
32
|
+
simplecov (0.9.1)
|
33
|
+
docile (~> 1.1.0)
|
34
|
+
multi_json (~> 1.0)
|
35
|
+
simplecov-html (~> 0.8.0)
|
36
|
+
simplecov-html (0.8.0)
|
37
|
+
term-ansicolor (1.3.0)
|
38
|
+
tins (~> 1.0)
|
39
|
+
test-unit (3.0.1)
|
40
|
+
power_assert
|
41
|
+
thor (0.19.1)
|
42
|
+
tins (1.3.3)
|
19
43
|
|
20
44
|
PLATFORMS
|
21
45
|
java
|
22
46
|
ruby
|
23
47
|
|
24
48
|
DEPENDENCIES
|
25
|
-
|
49
|
+
coveralls (> 0.7.0)
|
50
|
+
rake (> 10.0.0)
|
51
|
+
test-unit (> 3.0.0)
|
26
52
|
trans-api!
|
data/README.md
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
Trans::Api is an ruby implementation for Transmission RPC (bittorrent client). Based on RPC spec 13328
|
4
4
|
https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt
|
5
5
|
|
6
|
+
[](https://travis-ci.org/dblommesteijn/trans-api) [](https://coveralls.io/r/dblommesteijn/trans-api) [](https://codeclimate.com/github/dblommesteijn/trans-api) [](https://gemnasium.com/dblommesteijn/trans-api)
|
7
|
+
|
6
8
|
It required for the Transmission RPC to run the 'remote access':
|
7
9
|
|
8
10
|
OSX:
|
@@ -14,55 +16,53 @@ OSX:
|
|
14
16
|
|
15
17
|
This gem is (build and) tested with:
|
16
18
|
|
17
|
-
OSX Lion, Mountain Lion, Mavericks
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
Rails: 3.2.8, 3.2.9, 4.0.3
|
22
|
-
|
23
|
-
Transmission 2.73 (13589) - 2.82 (14160)
|
19
|
+
* OSX: Lion, Mountain Lion, Mavericks
|
20
|
+
* Ruby: 1.9.3, 2.1.0
|
21
|
+
* Rails: 3.2.8, 3.2.9, 4.0.3
|
22
|
+
* Transmission 2.73 (13589) - 2.82 (14160)
|
24
23
|
|
25
24
|
|
26
25
|
### Roadmap
|
27
26
|
|
28
27
|
* Version (0.0.1)
|
29
28
|
|
30
|
-
Initial project import.
|
29
|
+
* Initial project import.
|
31
30
|
|
32
31
|
* Version (0.0.2)
|
33
32
|
|
34
|
-
Session object include: 'blocklist', 'port-test'
|
35
|
-
|
36
|
-
Torrent object
|
37
|
-
|
38
|
-
Torrent object 'delete_all!' explicit torrent references
|
39
|
-
|
40
|
-
Torrent object 'waitfor' helper to check for lambda after/before calling it's chained cousin
|
33
|
+
* Session object include: 'blocklist', 'port-test'
|
34
|
+
* Torrent object include 'torrent-start-now', 'queue-move-top/up/down/bottom'
|
35
|
+
* Torrent object 'delete_all!' explicit torrent references
|
36
|
+
* Torrent object 'waitfor' helper to check for lambda after/before calling it's chained cousin
|
41
37
|
|
42
38
|
* Version (0.0.3)
|
43
39
|
|
44
|
-
Querying name before add (duplicate detect), not hammering torrent-add (due to a transmission BUG)
|
45
|
-
|
46
|
-
Added some File internal fields (total and completed transfer)
|
40
|
+
* Querying name before add (duplicate detect), not hammering torrent-add (due to a transmission BUG)
|
41
|
+
* Added some File internal fields (total and completed transfer)
|
47
42
|
|
48
43
|
* Version (0.0.4)
|
49
44
|
|
50
|
-
Added Session.alt_speed_time_day_options, returns a list of values to set `alt_speed_time_day`
|
45
|
+
* Added Session.alt_speed_time_day_options, returns a list of values to set `alt_speed_time_day`
|
46
|
+
* Added Session.reload!, that reconnects to the client (for example using alternate configs)
|
47
|
+
* Added Session.update_blocklist!, updating the current set blocklist
|
48
|
+
|
49
|
+
* Version (0.0.5)
|
51
50
|
|
52
|
-
Added Session.
|
51
|
+
* Added Session.connected?, checks if there is a valid connection to the client
|
52
|
+
* Fixed Torrent.waitfor chained method arguements
|
53
|
+
* Added magnet support
|
53
54
|
|
54
|
-
|
55
|
+
* Version (0.0.6)
|
55
56
|
|
57
|
+
* TBA
|
56
58
|
|
57
|
-
|
59
|
+
|
60
|
+
### Changelog (call changes)
|
58
61
|
|
59
62
|
* Version (0.0.3)
|
60
|
-
|
61
|
-
Torrent.add_metainfo(base64, filename, options={}) -> requires a filename parameter
|
62
63
|
|
63
|
-
*
|
64
|
+
* Torrent.add_metainfo(base64, filename, options={}) -> requires a filename parameter
|
64
65
|
|
65
|
-
TBA
|
66
66
|
|
67
67
|
### Known Issues
|
68
68
|
|
@@ -70,6 +70,8 @@ The Transmission RPC call 'torrent-remove' (implemented as torrent.delete! and T
|
|
70
70
|
|
71
71
|
Due to a Transmission bug (https://trac.transmissionbt.com/ticket/5614) duplicate torrents are accepted by the RPC call. The GUI will eventually crash the daemon, when interacting with these duplicate files (or instances). Torrent.add_file/ add_metainfo queries for duplicates to omit this bug.
|
72
72
|
|
73
|
+
On rapid RPC calls the client will ignore the request, and respond with successfull. For example rapid Torrent.delete! will respond with status successfull, but it remains active. You can use a blocked call via waitfor (chained) to make sure the action was completed.
|
74
|
+
|
73
75
|
|
74
76
|
## Installation
|
75
77
|
|
@@ -82,7 +84,7 @@ And then execute:
|
|
82
84
|
$ bundle
|
83
85
|
|
84
86
|
|
85
|
-
##
|
87
|
+
## Configuration
|
86
88
|
|
87
89
|
Define a configuration for your connection (initialize script)
|
88
90
|
|
@@ -116,10 +118,6 @@ torrent = Trans::Api::Torrent.find id
|
|
116
118
|
torrent.files
|
117
119
|
```
|
118
120
|
|
119
|
-
## Examples
|
120
|
-
|
121
|
-
Check the examples/ folder or Unit tests: test/unit/trans_ (session/torrent) _object.rb
|
122
|
-
|
123
121
|
|
124
122
|
## Usage
|
125
123
|
|
@@ -194,6 +192,13 @@ base64_file_contents = Base64.encode64 file.read
|
|
194
192
|
Trans::Api::Torrent.add_metainfo base64_file_contents, file_name, options
|
195
193
|
```
|
196
194
|
|
195
|
+
Add magnet URI
|
196
|
+
|
197
|
+
```ruby
|
198
|
+
magnet_link = "magnet:?xt=urn:btih:42ae58b8f59bd19fe97d6ca6fd884b2e9666a4d1&dn=debian-6.0.6-amd64-CD-2.iso&tr=http%3A%2F%2Fbttracker.debian.org%3A6969%2Fannounce"
|
199
|
+
torrent = Trans::Api::Torrent.add_magnet(magnet_link, paused: true)
|
200
|
+
```
|
201
|
+
|
197
202
|
Get all fields
|
198
203
|
```ruby
|
199
204
|
Trans::Api::Torrent.ACCESSOR_FIELDS
|
@@ -271,8 +276,7 @@ torrent.reannounce!
|
|
271
276
|
Delete (tranmission daemon will crash on rapid call)
|
272
277
|
|
273
278
|
```ruby
|
274
|
-
|
275
|
-
torrent.delete! options
|
279
|
+
torrent.delete! {delete_local_data: true}
|
276
280
|
```
|
277
281
|
|
278
282
|
Waitfor (automatic delayed responce after/before chained method is called)
|
@@ -283,9 +287,13 @@ Waitfor (automatic delayed responce after/before chained method is called)
|
|
283
287
|
# waitfor status name not equals stopped after calling start!
|
284
288
|
optional = :after
|
285
289
|
torrent.waitfor( lambda{|t| t.status_name != :stopped}, optional ).start!
|
290
|
+
|
286
291
|
# waitfor status name equals stopped after calling stop!
|
287
292
|
torrent.waitfor( lambda{|t| t.status_name == :stopped}, optional ).stop!
|
288
293
|
# NOTE: waitfor can be used for blocking without a chained method (optional = :before only)
|
294
|
+
|
295
|
+
# via the Torrent object `reset_exception` we can verify if the torrent is probably removed
|
296
|
+
torrent.waitfor(lambda{|t| t.last_error[:error] == "reset_exception"}).delete!(delete_local_data: true)
|
289
297
|
```
|
290
298
|
|
291
299
|
NOTE: defined torrent accessor fields are defined as instance methods to the Torrent object
|
@@ -332,7 +340,7 @@ session.blocklist_url = "http://list.iblocklist.com/?list=bt_level3&fileformat=p
|
|
332
340
|
session.blocklist_enable = true
|
333
341
|
# save changes
|
334
342
|
session.save!
|
335
|
-
# force update
|
343
|
+
# force update
|
336
344
|
begin
|
337
345
|
session.update_blocklist!
|
338
346
|
rescue Exception => e
|
@@ -350,10 +358,11 @@ Getting files from a torrent (file cannot be used standalone, it's an helper cla
|
|
350
358
|
```ruby
|
351
359
|
id = 1
|
352
360
|
torrent = Trans::Api::Torrent.find id
|
353
|
-
|
354
|
-
|
355
|
-
# manipulate file here!
|
361
|
+
torrent.files_objects.each do |file|
|
362
|
+
# manipulate or stat the file here! (unwant, want)
|
356
363
|
end
|
364
|
+
# save the torrent (internal changes to files_objects are saved as well)
|
365
|
+
torrent.save!
|
357
366
|
```
|
358
367
|
|
359
368
|
File name
|
@@ -380,7 +389,7 @@ File wanted? (marked for download)
|
|
380
389
|
file.wanted?
|
381
390
|
```
|
382
391
|
|
383
|
-
File
|
392
|
+
File stat
|
384
393
|
|
385
394
|
```ruby
|
386
395
|
file.stat
|
@@ -390,4 +399,78 @@ NOTE: changed preferences (want, unwant) set options on the linked Torrent objec
|
|
390
399
|
|
391
400
|
|
392
401
|
|
402
|
+
## Running Tests
|
403
|
+
|
404
|
+
Run the unittest embedded with the project from the commandline. Configure the CONFIG variable with an escaped json to provide configuration for your transmission client.
|
405
|
+
|
406
|
+
* WARNING: torrents and files will be destroyed by these tests *
|
407
|
+
|
408
|
+
|
409
|
+
```bash
|
410
|
+
# example format: define CONFIG in escaped json
|
411
|
+
$ CONFIG="{\"host\":\"localhost\",\"port\":1234,\"user\":\"youruser\",\"pass\":\"yourpass\",\"path\":\"/transmission/rpc\"}"
|
412
|
+
```
|
413
|
+
|
414
|
+
Run 'test/unit/trans_connect.rb' to test the intermediate layer between the RPC API and wrappers.
|
415
|
+
|
416
|
+
```bash
|
417
|
+
$ CONFIG="{\"host\":\"localhost\",\"port\":1234,\"user\":\"youruser\",\"pass\":\"yourpass\",\"path\":\"/transmission/rpc\"}" ruby -I test test/unit/trans_connect.rb
|
418
|
+
```
|
419
|
+
|
420
|
+
Run 'test/unit/trans_session_object.rb' to test the working of Trans::Api::Session.
|
421
|
+
|
422
|
+
```bash
|
423
|
+
# run unit test session
|
424
|
+
$ CONFIG="{\"host\":\"localhost\",\"port\":1234,\"user\":\"youruser\",\"pass\":\"yourpass\",\"path\":\"/transmission/rpc\"}" ruby -I test test/unit/trans_session_object.rb
|
425
|
+
```
|
426
|
+
|
427
|
+
Run 'test/unit/trans_torrent_object.rb' to test the working of Trans::Api::Torrent.
|
428
|
+
|
429
|
+
```bash
|
430
|
+
# run unit test session
|
431
|
+
$ CONFIG="{\"host\":\"localhost\",\"port\":1234,\"user\":\"youruser\",\"pass\":\"yourpass\",\"path\":\"/transmission/rpc\"}" ruby -I test test/unit/trans_torrent_object.rb
|
432
|
+
```
|
433
|
+
|
434
|
+
NOTE: test `test_torrent_rapid_delete` will fail because of an issue with rapid calling.
|
435
|
+
|
436
|
+
|
437
|
+
### Vagrant
|
438
|
+
|
439
|
+
Besides running your existing client with Transmission you can test on an isolated virtual machine via Vagrant.
|
440
|
+
|
441
|
+
**Download Dependencies**
|
442
|
+
|
443
|
+
Download and follow the installation instructions.
|
444
|
+
|
445
|
+
* Vagrant: http://www.vagrantup.com/downloads.html
|
446
|
+
* VirtualBox: https://www.virtualbox.org/wiki/Downloads
|
447
|
+
|
448
|
+
|
449
|
+
##### Boot the Test VM
|
450
|
+
|
451
|
+
Download and run the testing Debian Linux distribution with a test Transmission client.
|
452
|
+
|
453
|
+
```bash
|
454
|
+
$ cd /location/of/trans-api
|
455
|
+
# download and start a testing box (will take some time)
|
456
|
+
$ vagrant up testing
|
457
|
+
```
|
458
|
+
|
459
|
+
**Configure the CONFIG variable to target the VM**
|
460
|
+
|
461
|
+
```bash
|
462
|
+
# use this CONFIG string to connect to the testing instance
|
463
|
+
$ CONFIG="{\"host\":\"localhost\",\"port\":19091,\"user\":\"admin\",\"pass\":\"adm1n\",\"path\":\"/transmission/rpc\"}"
|
464
|
+
# run tests like described above
|
465
|
+
```
|
466
|
+
|
467
|
+
*NOTE: don't forget to HALT (and DESTROY) the VM when done!*
|
468
|
+
|
469
|
+
```bash
|
470
|
+
# power down VM
|
471
|
+
$ vagrant halt testing
|
472
|
+
# power down and destroy files
|
473
|
+
$ vagrant destroy testing
|
474
|
+
```
|
475
|
+
|
393
476
|
|
data/Rakefile
CHANGED
@@ -1 +1,15 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'rake/testtask'
|
3
|
+
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.libs << "test"
|
6
|
+
tfs = FileList['test/unit/*.rb']
|
7
|
+
t.test_files = tfs
|
8
|
+
t.verbose = true
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'coveralls/rake/task'
|
12
|
+
Coveralls::RakeTask.new
|
13
|
+
|
14
|
+
task test_with_coveralls: ['test', 'coveralls:push']
|
15
|
+
task default: [:build, :install]
|
data/Vagrantfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# vagrant config
|
5
|
+
Vagrant.configure("2") do |config|
|
6
|
+
|
7
|
+
# testing configuration
|
8
|
+
config.vm.define "testing" do |testing|
|
9
|
+
testing.vm.box = "chef/debian-7.4"
|
10
|
+
testing.vm.provision :shell, path: ".vagrant/bootstrap/testing.sh"
|
11
|
+
testing.vm.network :forwarded_port, guest: 9091, host: 19091
|
12
|
+
testing.vm.network :private_network, ip: "10.1.1.2"
|
13
|
+
testing.vm.provider :virtualbox do |vb|
|
14
|
+
vb.customize ["modifyvm", :id, "--memory", "256"]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/lib/trans-api/client.rb
CHANGED
@@ -2,12 +2,13 @@ module Trans
|
|
2
2
|
module Api
|
3
3
|
|
4
4
|
class Client
|
5
|
-
DEFAULT = {scheme: "http", host: "localhost", port: 9091, path: "/transmission/rpc", user: "admin", pass: "admin"}
|
5
|
+
DEFAULT = {scheme: "http", host: "localhost", port: 9091, path: "/transmission/rpc", user: "admin", pass: "admin", timeout: 5}
|
6
6
|
|
7
7
|
# construct
|
8
8
|
|
9
9
|
def initialize(options={})
|
10
|
-
|
10
|
+
# @@config ||= {}
|
11
|
+
args = @@config || {}
|
11
12
|
args.merge!(options)
|
12
13
|
@conn = Connect.new args
|
13
14
|
end
|
@@ -19,6 +20,11 @@ module Trans
|
|
19
20
|
class << self
|
20
21
|
def config=(config = {})
|
21
22
|
config[:port] = config[:port].to_i if config.include? :port
|
23
|
+
if config.include? :timeout
|
24
|
+
config[:timeout] = config[:timeout].to_i
|
25
|
+
else
|
26
|
+
config[:timeout] = DEFAULT[:timeout]
|
27
|
+
end
|
22
28
|
@@config = config
|
23
29
|
end
|
24
30
|
end
|