transmission-rpc-ruby-ext 0.1.0
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 +7 -0
- data/.gitignore +22 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +62 -0
- data/LICENSE +19 -0
- data/README.md +173 -0
- data/Rakefile +5 -0
- data/lib/transmission.rb +11 -0
- data/lib/transmission/arguments.rb +50 -0
- data/lib/transmission/arguments/location_set.rb +11 -0
- data/lib/transmission/arguments/session_set.rb +56 -0
- data/lib/transmission/arguments/torrent_add.rb +24 -0
- data/lib/transmission/arguments/torrent_set.rb +32 -0
- data/lib/transmission/config.rb +18 -0
- data/lib/transmission/extensions.rb +4 -0
- data/lib/transmission/extensions/torrent_actions.rb +15 -0
- data/lib/transmission/extensions/torrent_attributes.rb +103 -0
- data/lib/transmission/extensions/torrent_status.rb +42 -0
- data/lib/transmission/extensions/transmission.rb +82 -0
- data/lib/transmission/fields.rb +41 -0
- data/lib/transmission/fields/session_get.rb +61 -0
- data/lib/transmission/fields/session_stats.rb +15 -0
- data/lib/transmission/fields/torrent_get.rb +76 -0
- data/lib/transmission/model.rb +8 -0
- data/lib/transmission/model/session.rb +48 -0
- data/lib/transmission/model/session_stats.rb +28 -0
- data/lib/transmission/model/torrent.rb +152 -0
- data/lib/transmission/rpc.rb +116 -0
- data/lib/transmission/rpc/connector.rb +67 -0
- data/lib/transmission/utils.rb +24 -0
- data/spec/helpers/stubs.rb +82 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/transmission/arguments_spec.rb +78 -0
- data/spec/transmission/fields_spec.rb +60 -0
- data/spec/transmission/model/session_spec.rb +85 -0
- data/spec/transmission/model/torrent_spec.rb +345 -0
- data/spec/transmission/rpc/connector_spec.rb +82 -0
- data/spec/transmission/rpc_spec.rb +33 -0
- data/spec/transmission/utils_spec.rb +69 -0
- data/transmission-rpc-ruby-ext.gemspec +17 -0
- metadata +141 -0
@@ -0,0 +1,82 @@
|
|
1
|
+
describe Transmission::RPC::Connector do
|
2
|
+
|
3
|
+
describe '#new' do
|
4
|
+
|
5
|
+
describe 'without parameters' do
|
6
|
+
before :each do
|
7
|
+
@connector = Transmission::RPC::Connector.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should create an RPC object with default values' do
|
11
|
+
expect(@connector.host).to eq('localhost')
|
12
|
+
expect(@connector.port).to eq(9091)
|
13
|
+
expect(@connector.ssl).to eq(false)
|
14
|
+
expect(@connector.path).to eq('/transmission/rpc')
|
15
|
+
expect(@connector.credentials).to eq(nil)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'with parameters' do
|
20
|
+
before :each do
|
21
|
+
@connector = Transmission::RPC::Connector.new host: 'some.host', port: 8888, ssl: true, path: '/path', credentials: {username: 'a', password: 'b'}
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should create an RPC object with given parameters' do
|
25
|
+
expect(@connector.host).to eq('some.host')
|
26
|
+
expect(@connector.port).to eq(8888)
|
27
|
+
expect(@connector.ssl).to eq(true)
|
28
|
+
expect(@connector.path).to eq('/path')
|
29
|
+
expect(@connector.credentials).to eq({username: 'a', password: 'b'})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#post' do
|
36
|
+
|
37
|
+
describe 'when session ID has not been acquired yet' do
|
38
|
+
before :each do
|
39
|
+
@connector = Transmission::RPC::Connector.new
|
40
|
+
stub_rpc_request
|
41
|
+
.to_return(conflict_response({headers: {'x-transmission-session-id' => 'abc'}}))
|
42
|
+
stub_rpc_request
|
43
|
+
.with(headers: {'x-transmission-session-id' => 'abc'})
|
44
|
+
.to_return(successful_response)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should save the transmission session ID' do
|
48
|
+
@connector.post
|
49
|
+
expect(@connector.session_id).to eq('abc')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'when session ID has been acquired' do
|
54
|
+
before :each do
|
55
|
+
@connector = Transmission::RPC::Connector.new
|
56
|
+
stub_rpc_request
|
57
|
+
.to_return(successful_response)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should respond successfully' do
|
61
|
+
@connector.post
|
62
|
+
expect(@connector.response.status).to eq(200)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe 'when basic auth is required but no credentials provided' do
|
67
|
+
before :each do
|
68
|
+
@connector = Transmission::RPC::Connector.new
|
69
|
+
stub_rpc_request
|
70
|
+
.to_return(unauthorized_response)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should raise auth error' do
|
74
|
+
expect {
|
75
|
+
@connector.post
|
76
|
+
}.to raise_error(Transmission::RPC::Connector::AuthError)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
describe Transmission::RPC do
|
2
|
+
describe '#get_session' do
|
3
|
+
describe 'with fields' do
|
4
|
+
before :each do
|
5
|
+
@rpc = Transmission::RPC.new
|
6
|
+
fields = Transmission::Fields::SessionGet.new(['version']).to_fields
|
7
|
+
stub_rpc_request
|
8
|
+
.with( body: session_get_body( fields: fields ))
|
9
|
+
.to_return(successful_response)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should send the proper arguments' do
|
13
|
+
@rpc.get_session ['version']
|
14
|
+
expect(@rpc.connector.response.status).to eq(200)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'without fields' do
|
19
|
+
before :each do
|
20
|
+
@rpc = Transmission::RPC.new
|
21
|
+
fields = Transmission::Fields::SessionGet.new.to_fields
|
22
|
+
stub_rpc_request
|
23
|
+
.with(body: session_get_body(fields: fields))
|
24
|
+
.to_return(successful_response)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should send the proper arguments' do
|
28
|
+
@rpc.get_session
|
29
|
+
expect(@rpc.connector.response.status).to eq(200)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
describe Transmission::Utils do
|
2
|
+
let(:utils) {
|
3
|
+
Class.new do
|
4
|
+
include Transmission::Utils
|
5
|
+
end
|
6
|
+
}
|
7
|
+
|
8
|
+
subject { utils.new }
|
9
|
+
|
10
|
+
describe '.is_valid_key?' do
|
11
|
+
describe 'with dashes' do
|
12
|
+
let(:arguments) {[{field: 'test-me'}]}
|
13
|
+
|
14
|
+
it 'should find valid key' do
|
15
|
+
expect(subject.is_valid_key?('test_me', arguments)).to eq(true)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'with camelcase' do
|
20
|
+
let(:arguments) {[{field: 'testMe'}]}
|
21
|
+
|
22
|
+
it 'should find valid key' do
|
23
|
+
expect(subject.is_valid_key?('test_me', arguments)).to eq(true)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'with invalid key' do
|
28
|
+
let(:arguments) {[{field: 'testMe'}]}
|
29
|
+
|
30
|
+
it 'should not find any key' do
|
31
|
+
expect(subject.is_valid_key?('i_dont_exit', arguments)).to eq(false)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '.option_keys' do
|
37
|
+
it 'should return the right option keys' do
|
38
|
+
options = subject.option_keys('test_me')
|
39
|
+
expect(options.include?('testMe')).to eq(true)
|
40
|
+
expect(options.include?('test-me')).to eq(true)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.option_key' do
|
45
|
+
describe 'with dashes' do
|
46
|
+
let(:arguments) {[{field: 'test-me'}]}
|
47
|
+
|
48
|
+
it 'should return the correct key' do
|
49
|
+
expect(subject.option_key('test_me', arguments)).to eq('test-me')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'with camelcase' do
|
54
|
+
let(:arguments) {[{field: 'testMe'}]}
|
55
|
+
|
56
|
+
it 'should return the correct key' do
|
57
|
+
expect(subject.option_key('test_me', arguments)).to eq('testMe')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'with invalid key' do
|
62
|
+
let(:arguments) {[{field: 'testMe'}]}
|
63
|
+
|
64
|
+
it 'should return nil' do
|
65
|
+
expect(subject.option_key('i_dont_exit', arguments)).to eq(nil)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'transmission-rpc-ruby-ext'
|
3
|
+
s.version = '0.1.0'
|
4
|
+
s.date = '2016-12-28'
|
5
|
+
s.summary = 'Extended version of transmission-rpc-ruby.'
|
6
|
+
s.description = 'A fork of transmission-rpc-ruby with some shortcut methods added.'
|
7
|
+
s.authors = ['Tommaso Barbato']
|
8
|
+
s.email = 'epistrephein@gmail.com'
|
9
|
+
s.files = `git ls-files`.split($/)
|
10
|
+
s.homepage = 'https://github.com/epistrephein/transmission-rpc-ruby-ext'
|
11
|
+
s.license = 'MIT'
|
12
|
+
s.require_paths = ['lib']
|
13
|
+
s.add_dependency 'faraday', '~> 0.10'
|
14
|
+
s.add_development_dependency 'rspec', '~> 3.5'
|
15
|
+
s.add_development_dependency 'webmock', '~> 2.3'
|
16
|
+
s.add_development_dependency 'rake', '~> 12.0'
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: transmission-rpc-ruby-ext
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tommaso Barbato
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.10'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: webmock
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '12.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '12.0'
|
69
|
+
description: A fork of transmission-rpc-ruby with some shortcut methods added.
|
70
|
+
email: epistrephein@gmail.com
|
71
|
+
executables: []
|
72
|
+
extensions: []
|
73
|
+
extra_rdoc_files: []
|
74
|
+
files:
|
75
|
+
- ".gitignore"
|
76
|
+
- ".rspec"
|
77
|
+
- ".travis.yml"
|
78
|
+
- CHANGELOG.md
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- LICENSE
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- lib/transmission.rb
|
85
|
+
- lib/transmission/arguments.rb
|
86
|
+
- lib/transmission/arguments/location_set.rb
|
87
|
+
- lib/transmission/arguments/session_set.rb
|
88
|
+
- lib/transmission/arguments/torrent_add.rb
|
89
|
+
- lib/transmission/arguments/torrent_set.rb
|
90
|
+
- lib/transmission/config.rb
|
91
|
+
- lib/transmission/extensions.rb
|
92
|
+
- lib/transmission/extensions/torrent_actions.rb
|
93
|
+
- lib/transmission/extensions/torrent_attributes.rb
|
94
|
+
- lib/transmission/extensions/torrent_status.rb
|
95
|
+
- lib/transmission/extensions/transmission.rb
|
96
|
+
- lib/transmission/fields.rb
|
97
|
+
- lib/transmission/fields/session_get.rb
|
98
|
+
- lib/transmission/fields/session_stats.rb
|
99
|
+
- lib/transmission/fields/torrent_get.rb
|
100
|
+
- lib/transmission/model.rb
|
101
|
+
- lib/transmission/model/session.rb
|
102
|
+
- lib/transmission/model/session_stats.rb
|
103
|
+
- lib/transmission/model/torrent.rb
|
104
|
+
- lib/transmission/rpc.rb
|
105
|
+
- lib/transmission/rpc/connector.rb
|
106
|
+
- lib/transmission/utils.rb
|
107
|
+
- spec/helpers/stubs.rb
|
108
|
+
- spec/spec_helper.rb
|
109
|
+
- spec/transmission/arguments_spec.rb
|
110
|
+
- spec/transmission/fields_spec.rb
|
111
|
+
- spec/transmission/model/session_spec.rb
|
112
|
+
- spec/transmission/model/torrent_spec.rb
|
113
|
+
- spec/transmission/rpc/connector_spec.rb
|
114
|
+
- spec/transmission/rpc_spec.rb
|
115
|
+
- spec/transmission/utils_spec.rb
|
116
|
+
- transmission-rpc-ruby-ext.gemspec
|
117
|
+
homepage: https://github.com/epistrephein/transmission-rpc-ruby-ext
|
118
|
+
licenses:
|
119
|
+
- MIT
|
120
|
+
metadata: {}
|
121
|
+
post_install_message:
|
122
|
+
rdoc_options: []
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
requirements: []
|
136
|
+
rubyforge_project:
|
137
|
+
rubygems_version: 2.6.8
|
138
|
+
signing_key:
|
139
|
+
specification_version: 4
|
140
|
+
summary: Extended version of transmission-rpc-ruby.
|
141
|
+
test_files: []
|