transmission-rpc-ruby 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +0 -1
- data/.travis.yml +3 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +34 -3
- data/README.md +141 -47
- data/Rakefile +2 -0
- data/lib/transmission.rb +3 -1
- data/lib/transmission/arguments.rb +29 -6
- data/lib/transmission/arguments/session_set.rb +48 -48
- data/lib/transmission/arguments/torrent_add.rb +16 -12
- data/lib/transmission/arguments/torrent_set.rb +24 -24
- data/lib/transmission/fields.rb +42 -0
- data/lib/transmission/fields/session_get.rb +63 -0
- data/lib/transmission/fields/session_stats.rb +17 -0
- data/lib/transmission/fields/torrent_get.rb +78 -0
- data/lib/transmission/model/session.rb +19 -10
- data/lib/transmission/model/session_stats.rb +25 -0
- data/lib/transmission/model/torrent.rb +42 -27
- data/lib/transmission/rpc.rb +48 -44
- data/lib/transmission/rpc/connector.rb +3 -4
- data/lib/transmission/utils.rb +28 -0
- data/spec/helpers/stubs.rb +15 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/transmission/arguments_spec.rb +54 -7
- data/spec/transmission/fields_spec.rb +63 -0
- data/spec/transmission/model/session_spec.rb +84 -0
- data/spec/transmission/model/torrent_spec.rb +82 -0
- data/spec/transmission/rpc/connector_spec.rb +4 -3
- data/spec/transmission/rpc_spec.rb +3 -8
- data/spec/transmission/utils_spec.rb +70 -0
- data/transmission-rpc-ruby.gemspec +2 -2
- metadata +13 -6
- data/lib/transmission/arguments/session_get.rb +0 -63
- data/lib/transmission/arguments/session_stats.rb +0 -17
- data/lib/transmission/arguments/torrent_get.rb +0 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f40dbe21491bbcdd4f6aa056748678819a81347f
|
4
|
+
data.tar.gz: af1ac8e0854ab433daa58c1b56a8b6966cbfa9e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9e982241cd3efef6e490d678bf1404ae8d0e21d6bdd33fe3480d451599dee377ece0c889b2eb95194ce83d1be49e4290f747560346247f0b96a29a04b404a44
|
7
|
+
data.tar.gz: 7c458a66cf283b4b006d1bbd82d8cba6efe820b370917561866773ad3bbfb8048092419a8eac9a666395d7f49a9c18fc994b9c46c885cd3ed0687cc2502900de
|
data/.rspec
CHANGED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,14 +1,32 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
addressable (2.3.
|
4
|
+
addressable (2.3.8)
|
5
|
+
coveralls (0.7.12)
|
6
|
+
multi_json (~> 1.10)
|
7
|
+
rest-client (>= 1.6.8, < 2)
|
8
|
+
simplecov (~> 0.9.1)
|
9
|
+
term-ansicolor (~> 1.3)
|
10
|
+
thor (~> 0.19.1)
|
5
11
|
crack (0.4.2)
|
6
12
|
safe_yaml (~> 1.0.0)
|
7
13
|
diff-lcs (1.2.5)
|
14
|
+
docile (1.1.5)
|
15
|
+
domain_name (0.5.23)
|
16
|
+
unf (>= 0.0.5, < 1.0.0)
|
8
17
|
faraday (0.9.1)
|
9
18
|
multipart-post (>= 1.2, < 3)
|
19
|
+
http-cookie (1.0.2)
|
20
|
+
domain_name (~> 0.5)
|
21
|
+
mime-types (2.4.3)
|
22
|
+
multi_json (1.11.0)
|
10
23
|
multipart-post (2.0.0)
|
24
|
+
netrc (0.10.3)
|
11
25
|
rake (10.4.2)
|
26
|
+
rest-client (1.8.0)
|
27
|
+
http-cookie (>= 1.0.2, < 2.0)
|
28
|
+
mime-types (>= 1.16, < 3.0)
|
29
|
+
netrc (~> 0.7)
|
12
30
|
rspec (3.2.0)
|
13
31
|
rspec-core (~> 3.2.0)
|
14
32
|
rspec-expectations (~> 3.2.0)
|
@@ -23,7 +41,19 @@ GEM
|
|
23
41
|
rspec-support (~> 3.2.0)
|
24
42
|
rspec-support (3.2.2)
|
25
43
|
safe_yaml (1.0.4)
|
26
|
-
|
44
|
+
simplecov (0.9.2)
|
45
|
+
docile (~> 1.1.0)
|
46
|
+
multi_json (~> 1.0)
|
47
|
+
simplecov-html (~> 0.9.0)
|
48
|
+
simplecov-html (0.9.0)
|
49
|
+
term-ansicolor (1.3.0)
|
50
|
+
tins (~> 1.0)
|
51
|
+
thor (0.19.1)
|
52
|
+
tins (1.3.5)
|
53
|
+
unf (0.1.4)
|
54
|
+
unf_ext
|
55
|
+
unf_ext (0.0.6)
|
56
|
+
webmock (1.21.0)
|
27
57
|
addressable (>= 2.3.6)
|
28
58
|
crack (>= 0.3.2)
|
29
59
|
|
@@ -31,7 +61,8 @@ PLATFORMS
|
|
31
61
|
ruby
|
32
62
|
|
33
63
|
DEPENDENCIES
|
64
|
+
coveralls
|
34
65
|
faraday (~> 0.9)
|
35
66
|
rake (~> 10.4)
|
36
67
|
rspec (~> 3.2)
|
37
|
-
webmock (~> 1.
|
68
|
+
webmock (~> 1.21)
|
data/README.md
CHANGED
@@ -1,78 +1,172 @@
|
|
1
1
|
# Transmission RPC Ruby
|
2
2
|
|
3
|
-
|
3
|
+
[![Build Status](https://travis-ci.org/transmission-rails/transmission-rpc-ruby.svg?branch=master)](https://travis-ci.org/transmission-rails/transmission-rpc-ruby) [![Code Climate](https://codeclimate.com/github/transmission-rails/transmission-rpc-ruby/badges/gpa.svg)](https://codeclimate.com/github/transmission-rails/transmission-rpc-ruby) [![Dependency Status](https://gemnasium.com/transmission-rails/transmission-rpc-ruby.svg)](https://gemnasium.com/transmission-rails/transmission-rpc-ruby) [![Coverage Status](https://coveralls.io/repos/transmission-rails/transmission-rpc-ruby/badge.svg?branch=master)](https://coveralls.io/r/transmission-rails/transmission-rpc-ruby?branch=master)
|
4
4
|
|
5
|
-
|
5
|
+
Transmission RPC Ruby is a Ruby library to communicate with Transmission RPC (bittorrent client).
|
6
|
+
This library is based on this [spec](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt) and currently supports RPC versions >= 14
|
6
7
|
|
7
|
-
|
8
|
+
## Installation
|
8
9
|
|
9
|
-
|
10
|
+
gem install transmission-rpc-ruby
|
10
11
|
|
11
|
-
|
12
|
+
Then require it
|
12
13
|
|
13
|
-
|
14
|
+
require 'transmission'
|
15
|
+
|
16
|
+
## Getting started
|
17
|
+
|
18
|
+
To get started with this gem you need to decide if you are using this library to connect to one or multiple transmission daemons.
|
19
|
+
__Both is possible__
|
20
|
+
|
21
|
+
### Single connection
|
22
|
+
|
23
|
+
Just set up a single configuration with will be used throughout any library calls
|
14
24
|
|
15
25
|
Transmission::Config.set host: 'some.host', port: 9091, ssl: false, credentials: {username: 'transmission', password: '********'}
|
16
26
|
|
17
|
-
|
27
|
+
torrents = Transmission::Model::Torrent.all
|
28
|
+
|
29
|
+
### Multiple connections
|
30
|
+
|
31
|
+
Introducing the `Transmission::RPC` class, which represent all the raw rpc connection requests.
|
32
|
+
|
33
|
+
rpc = Transmission::RPC.new host: 'some.host', port: 9091, ssl: false, credentials: {username: 'transmission', password: '********'}
|
34
|
+
|
35
|
+
torrents = Transmission::Model::Torrent.all connector: rpc
|
36
|
+
|
37
|
+
This Object can be passed to the `Transmission::Model` classes. Examples are shown below.
|
38
|
+
|
39
|
+
### Configuration options
|
40
|
+
|
41
|
+
Both `Transmission::Config` and `Transmission::RPC` take the same arguments, these are the default settings:
|
18
42
|
|
19
|
-
|
43
|
+
{
|
44
|
+
host: 'localhost',
|
45
|
+
port: 9091
|
46
|
+
path: '/transmission/rpc',
|
47
|
+
ssl: false,
|
48
|
+
credentials: {username: 'transmission', password: '********'},
|
49
|
+
session_id: ''
|
50
|
+
}
|
20
51
|
|
21
|
-
|
52
|
+
### Torrents
|
22
53
|
|
23
|
-
|
54
|
+
To work with torrents you need use the `Transmission::Model::Torrent` class
|
55
|
+
|
56
|
+
#### Get all torrents
|
24
57
|
|
25
58
|
torrents = Transmission::Model::Torrent.all
|
26
59
|
|
27
|
-
|
60
|
+
If only a few fields are required
|
61
|
+
|
62
|
+
torrents = Transmission::Model::Torrent.all fields: ['id']
|
63
|
+
|
64
|
+
#### Find a torrent
|
65
|
+
|
66
|
+
id = 1
|
67
|
+
torrent = Transmission::Model::Torrent.find id
|
68
|
+
|
69
|
+
If only a few fields are required
|
70
|
+
|
71
|
+
torrent = Transmission::Model::Torrent.find id, fields: ['id']
|
72
|
+
|
73
|
+
#### Add a torrent
|
74
|
+
|
75
|
+
filename = 'http://example.com/torrent.torrent'
|
76
|
+
torrent = Transmission::Model::Torrent.add filename: filename
|
77
|
+
|
78
|
+
__NOTE:__ you can also specify a magnet link instead
|
79
|
+
|
80
|
+
#### Torrent instance methods
|
81
|
+
|
82
|
+
id = 1
|
83
|
+
torrent = Transmission::Model::Torrent.find(id)
|
84
|
+
|
85
|
+
torrent.start!
|
86
|
+
torrent.start_now!
|
87
|
+
torrent.stop!
|
88
|
+
torrent.verify!
|
89
|
+
torrent.re_announce!
|
90
|
+
|
91
|
+
torrent.move_up!
|
92
|
+
torrent.move_down!
|
93
|
+
torrent.move_top!
|
94
|
+
torrent.move_bottom!
|
95
|
+
|
96
|
+
You can access the torrent accessors & mutators via instance methods too
|
97
|
+
|
98
|
+
# uploadLimited
|
99
|
+
torrent.upload_limited
|
100
|
+
torrent.upload_limited = true
|
101
|
+
|
102
|
+
torrent.save!
|
103
|
+
|
104
|
+
The `save!` method will update the torrent on your remote transmission daemon.
|
105
|
+
|
106
|
+
To find all the torrent [accessors](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L127) & [mutators](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L90) visit [spec](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt)
|
107
|
+
|
108
|
+
### Session
|
109
|
+
|
110
|
+
To find out more about the current session use the `Transmission::Model::Session` class.
|
111
|
+
|
112
|
+
#### Get session
|
113
|
+
|
114
|
+
session = Transmission::Model::Session.get
|
115
|
+
|
116
|
+
If only a few fields are required
|
117
|
+
|
118
|
+
session = Transmission::Model::Session.get fields: ['version']
|
119
|
+
|
120
|
+
If used with a connector
|
121
|
+
|
122
|
+
options = {}
|
123
|
+
rpc = Transmission::RPC.new options
|
124
|
+
|
125
|
+
session = Transmission::Model::Session.get connector: rpc
|
126
|
+
|
127
|
+
#### Change session
|
128
|
+
|
129
|
+
Like the `Transmission::Model::Torrent` class, you change some session properties
|
130
|
+
|
131
|
+
session = Transmission::Model::Session.get
|
132
|
+
|
133
|
+
# alt-speed-enabled
|
134
|
+
session.alt_speed_enabled
|
135
|
+
session.alt_speed_enabled = true
|
136
|
+
|
137
|
+
session.save!
|
138
|
+
|
139
|
+
To find all the session [accessors](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L444) & [mutators](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L514) visit [spec](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt)
|
28
140
|
|
29
|
-
|
30
|
-
# or
|
31
|
-
torrent = Transmission::Model::Torrent.add filename: 'magnet_link'
|
141
|
+
### Session Stats
|
32
142
|
|
33
|
-
|
143
|
+
You can also retrieve some session stats by using the `Transmission::Model::SessionStats` class
|
34
144
|
|
35
|
-
|
36
|
-
# Deletes torrents
|
37
|
-
torrent.delete!
|
38
|
-
# Deletes torrent and local data
|
39
|
-
torrent.delete! true
|
145
|
+
session_stats = Transmission::Model::SessionStats.get
|
40
146
|
|
41
|
-
|
147
|
+
# activeTorrentCount
|
148
|
+
session_stats.active_torrent_count
|
42
149
|
|
43
|
-
|
150
|
+
For session stats there are no mutators. To find out more about the [accessors](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt#L531) visit the [spec](https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt)
|
44
151
|
|
45
|
-
|
152
|
+
### RPC Connector
|
46
153
|
|
47
|
-
|
154
|
+
If it is not desired to use any of the `Transmission::Model` classes you can use the RPC connector
|
48
155
|
|
49
|
-
|
156
|
+
#### Examples
|
50
157
|
|
51
|
-
|
52
|
-
torrents = Transmission::Model::Torrent.all connector: connector
|
158
|
+
rpc = Transmission::RPC.new host: 'some.host', port: 9091, ssl: false, credentials: {username: 'transmission', password: '********'}
|
53
159
|
|
54
|
-
|
160
|
+
session_body = rpc.get_session
|
55
161
|
|
56
|
-
|
57
|
-
session = connector.session
|
58
|
-
session.rpc_version #=> 14
|
59
|
-
session.version #=> "2.52"
|
162
|
+
ids = [1, 2, 3]
|
60
163
|
|
61
|
-
|
164
|
+
torrent_bodies = rpc.get_torrent ids
|
165
|
+
rpc.start_torrents ids
|
62
166
|
|
63
|
-
|
167
|
+
For more methods check out `lib/transmission/rpc.rb`
|
64
168
|
|
65
|
-
|
66
|
-
torrent.move_up
|
67
|
-
torrent.move_down
|
68
|
-
torrent.move_top
|
69
|
-
torrent.move_bottom
|
70
|
-
torrent.start
|
71
|
-
torrent.start_now
|
72
|
-
torrent.stop
|
73
|
-
torrent.verify
|
74
|
-
torrent.re_announce
|
75
|
-
torrent.finished?
|
76
|
-
torrent.to_json
|
169
|
+
## Contribute
|
77
170
|
|
78
|
-
|
171
|
+
Please help make this gem awesome! If you have any suggestions or feedback either create an issue or PR.
|
172
|
+
Just make sure you run the tests before.
|
data/Rakefile
CHANGED
data/lib/transmission.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'transmission', 'rpc')
|
2
2
|
require File.join(File.dirname(__FILE__), 'transmission', 'model')
|
3
3
|
require File.join(File.dirname(__FILE__), 'transmission', 'config')
|
4
|
+
require File.join(File.dirname(__FILE__), 'transmission', 'fields')
|
4
5
|
require File.join(File.dirname(__FILE__), 'transmission', 'arguments')
|
6
|
+
require File.join(File.dirname(__FILE__), 'transmission', 'utils')
|
5
7
|
|
6
8
|
module Transmission
|
7
|
-
VERSION = '0.
|
9
|
+
VERSION = '0.2.0'
|
8
10
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'arguments', 'torrent_add')
|
2
|
-
require File.join(File.dirname(__FILE__), 'arguments', 'torrent_get')
|
3
2
|
require File.join(File.dirname(__FILE__), 'arguments', 'torrent_set')
|
4
|
-
require File.join(File.dirname(__FILE__), 'arguments', 'session_get')
|
5
3
|
require File.join(File.dirname(__FILE__), 'arguments', 'session_set')
|
6
|
-
require File.join(File.dirname(__FILE__), '
|
4
|
+
require File.join(File.dirname(__FILE__), 'utils')
|
7
5
|
|
8
6
|
module Transmission
|
9
7
|
class Arguments
|
@@ -11,10 +9,15 @@ module Transmission
|
|
11
9
|
|
12
10
|
attr_accessor :arguments
|
13
11
|
|
12
|
+
ATTRIBUTES = []
|
13
|
+
|
14
14
|
def initialize(arguments = nil)
|
15
|
-
@arguments = arguments.inject(
|
16
|
-
|
17
|
-
|
15
|
+
@arguments = arguments.inject({}) do |attributes, (key, value)|
|
16
|
+
key = key.to_s
|
17
|
+
found = self.class::ATTRIBUTES.select { |attr| attr[:field] == key }
|
18
|
+
raise Transmission::Arguments::InvalidArgument, key if found.empty?
|
19
|
+
attributes[key] = value
|
20
|
+
attributes
|
18
21
|
end if arguments
|
19
22
|
@arguments = self.class::ATTRIBUTES if arguments.nil?
|
20
23
|
end
|
@@ -23,5 +26,25 @@ module Transmission
|
|
23
26
|
@arguments
|
24
27
|
end
|
25
28
|
|
29
|
+
class << self
|
30
|
+
include Transmission::Utils
|
31
|
+
|
32
|
+
def is_valid?(key)
|
33
|
+
is_valid_key? key, self::ATTRIBUTES
|
34
|
+
end
|
35
|
+
|
36
|
+
def real_key(key)
|
37
|
+
option_key key, self::ATTRIBUTES
|
38
|
+
end
|
39
|
+
|
40
|
+
def filter(arguments)
|
41
|
+
arguments.inject({}) do |hash, (key, value)|
|
42
|
+
found = self::ATTRIBUTES.select { |attr| attr[:field] == key.to_s }
|
43
|
+
hash[key] = value unless found.empty?
|
44
|
+
hash
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
26
49
|
end
|
27
50
|
end
|
@@ -3,54 +3,54 @@ module Transmission
|
|
3
3
|
class SessionSet < Transmission::Arguments
|
4
4
|
|
5
5
|
ATTRIBUTES = [
|
6
|
-
'alt-speed-down',
|
7
|
-
'alt-speed-enabled',
|
8
|
-
'alt-speed-time-begin',
|
9
|
-
'alt-speed-time-enabled',
|
10
|
-
'alt-speed-time-end',
|
11
|
-
'alt-speed-time-day',
|
12
|
-
'alt-speed-up',
|
13
|
-
'blocklist-url',
|
14
|
-
'blocklist-update',
|
15
|
-
'blocklist-enabled',
|
16
|
-
'cache-size-mb',
|
17
|
-
'download-dir',
|
18
|
-
'download-queue-size',
|
19
|
-
'download-queue-enabled',
|
20
|
-
'dht-enabled',
|
21
|
-
'encryption',
|
22
|
-
'required',
|
23
|
-
'preferred',
|
24
|
-
'tolerated',
|
25
|
-
'idle-seeding-limit',
|
26
|
-
'idle-seeding-limit-enabled',
|
27
|
-
'incomplete-dir',
|
28
|
-
'incomplete-dir-enabled',
|
29
|
-
'lpd-enabled',
|
30
|
-
'peer-limit-global',
|
31
|
-
'peer-limit-per-torrent',
|
32
|
-
'pex-enabled',
|
33
|
-
'peer-port',
|
34
|
-
'peer-port-random-on-start',
|
35
|
-
'port-forwarding-enabled',
|
36
|
-
'queue-stalled-enabled',
|
37
|
-
'queue-stalled-minutes',
|
38
|
-
'rename-partial-files',
|
39
|
-
'script-torrent-done-filename',
|
40
|
-
'script-torrent-done-enabled',
|
41
|
-
'done',
|
42
|
-
'seedRatioLimit',
|
43
|
-
'seedRatioLimited',
|
44
|
-
'seed-queue-size',
|
45
|
-
'seed-queue-enabled',
|
46
|
-
'speed-limit-down',
|
47
|
-
'speed-limit-down-enabled',
|
48
|
-
'speed-limit-up',
|
49
|
-
'speed-limit-up-enabled',
|
50
|
-
'start-added-torrents',
|
51
|
-
'trash-original-torrent-files',
|
52
|
-
'units',
|
53
|
-
'utp-enabled'
|
6
|
+
{field: 'alt-speed-down'},
|
7
|
+
{field: 'alt-speed-enabled'},
|
8
|
+
{field: 'alt-speed-time-begin'},
|
9
|
+
{field: 'alt-speed-time-enabled'},
|
10
|
+
{field: 'alt-speed-time-end'},
|
11
|
+
{field: 'alt-speed-time-day'},
|
12
|
+
{field: 'alt-speed-up'},
|
13
|
+
{field: 'blocklist-url'},
|
14
|
+
{field: 'blocklist-update'},
|
15
|
+
{field: 'blocklist-enabled'},
|
16
|
+
{field: 'cache-size-mb'},
|
17
|
+
{field: 'download-dir'},
|
18
|
+
{field: 'download-queue-size'},
|
19
|
+
{field: 'download-queue-enabled'},
|
20
|
+
{field: 'dht-enabled'},
|
21
|
+
{field: 'encryption'},
|
22
|
+
{field: 'required'},
|
23
|
+
{field: 'preferred'},
|
24
|
+
{field: 'tolerated'},
|
25
|
+
{field: 'idle-seeding-limit'},
|
26
|
+
{field: 'idle-seeding-limit-enabled'},
|
27
|
+
{field: 'incomplete-dir'},
|
28
|
+
{field: 'incomplete-dir-enabled'},
|
29
|
+
{field: 'lpd-enabled'},
|
30
|
+
{field: 'peer-limit-global'},
|
31
|
+
{field: 'peer-limit-per-torrent'},
|
32
|
+
{field: 'pex-enabled'},
|
33
|
+
{field: 'peer-port'},
|
34
|
+
{field: 'peer-port-random-on-start'},
|
35
|
+
{field: 'port-forwarding-enabled'},
|
36
|
+
{field: 'queue-stalled-enabled'},
|
37
|
+
{field: 'queue-stalled-minutes'},
|
38
|
+
{field: 'rename-partial-files'},
|
39
|
+
{field: 'script-torrent-done-filename'},
|
40
|
+
{field: 'script-torrent-done-enabled'},
|
41
|
+
{field: 'done'},
|
42
|
+
{field: 'seedRatioLimit'},
|
43
|
+
{field: 'seedRatioLimited'},
|
44
|
+
{field: 'seed-queue-size'},
|
45
|
+
{field: 'seed-queue-enabled'},
|
46
|
+
{field: 'speed-limit-down'},
|
47
|
+
{field: 'speed-limit-down-enabled'},
|
48
|
+
{field: 'speed-limit-up'},
|
49
|
+
{field: 'speed-limit-up-enabled'},
|
50
|
+
{field: 'start-added-torrents'},
|
51
|
+
{field: 'trash-original-torrent-files'},
|
52
|
+
{field: 'units'},
|
53
|
+
{field: 'utp-enabled'}
|
54
54
|
]
|
55
55
|
|
56
56
|
end
|