transmission_api 0.0.3 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 63e739f0537e8f760ee9c79eec35a1f694b7d3b8
4
+ data.tar.gz: 04aebd70e7c6dc22cab947620cbdff22268520b0
5
+ SHA512:
6
+ metadata.gz: 3bd9c7de2663c9f0060187ade806556b1e1d90d35582e5bd17a825c8b67328f0f368c794fc72021a185087fa3cfd4fd770032d71b67aa1aeca93c39f05d0f6f3
7
+ data.tar.gz: 6c0d49866c5f2d890bb55f67f9d38441d0314b0b1474fe735447f36b3c42c698c8e254db93397b4beb88d859fe2df5ea93e0818a683477084136539dd3f42dbf
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in transmission_api.gemspec
4
- gemspec
4
+ gemspec
@@ -0,0 +1,104 @@
1
+ [ { "files" : [ { "bytesCompleted" : 27062831,
2
+ "length" : 52146735,
3
+ "name" : "No Media Kings - Ghosts With Shit Jobs trailer/Content/TRAILER_3_Cinetic.mov"
4
+ },
5
+ { "bytesCompleted" : 718,
6
+ "length" : 718,
7
+ "name" : "No Media Kings - Ghosts With Shit Jobs trailer/Description.txt"
8
+ },
9
+ { "bytesCompleted" : 51,
10
+ "length" : 51,
11
+ "name" : "No Media Kings - Ghosts With Shit Jobs trailer/License.txt"
12
+ }
13
+ ],
14
+ "hashString" : "77831ec368308f1031434c5581a76fd0c3e06cfd",
15
+ "name" : "No Media Kings - Ghosts With Shit Jobs trailer",
16
+ "percentDone" : 0.51890000000000003,
17
+ "rateDownload" : 0,
18
+ "rateUpload" : 0,
19
+ "totalSize" : 52147504
20
+ },
21
+ { "files" : [ { "bytesCompleted" : 24892844,
22
+ "length" : 24892844,
23
+ "name" : "Michael Mandiberg - Old News/Content/mandiberg_oldnews.mov"
24
+ },
25
+ { "bytesCompleted" : 237,
26
+ "length" : 237,
27
+ "name" : "Michael Mandiberg - Old News/Description.txt"
28
+ },
29
+ { "bytesCompleted" : 669,
30
+ "length" : 669,
31
+ "name" : "Michael Mandiberg - Old News/LegalTorrents.txt"
32
+ },
33
+ { "bytesCompleted" : 101,
34
+ "length" : 101,
35
+ "name" : "Michael Mandiberg - Old News/License.txt"
36
+ }
37
+ ],
38
+ "hashString" : "5f888e119ecb0cf8c25e68925164f533b1007038",
39
+ "name" : "Michael Mandiberg - Old News",
40
+ "percentDone" : 1,
41
+ "rateDownload" : 0,
42
+ "rateUpload" : 0,
43
+ "totalSize" : 24893851
44
+ },
45
+ { "files" : [ { "bytesCompleted" : 31103230,
46
+ "length" : 31103230,
47
+ "name" : "pearl-jam-life-wasted-video/PearlJamLifeWasted.avi"
48
+ } ],
49
+ "hashString" : "1b2162c33001cb3c51d917441e74e313996dff96",
50
+ "name" : "pearl-jam-life-wasted-video",
51
+ "percentDone" : 1,
52
+ "rateDownload" : 0,
53
+ "rateUpload" : 0,
54
+ "totalSize" : 31103230
55
+ },
56
+ { "files" : [ { "bytesCompleted" : 31772861,
57
+ "length" : 31772861,
58
+ "name" : "thewoolleyman - cinabox-screencast/Content/Cinabox_Screencast.mov"
59
+ },
60
+ { "bytesCompleted" : 309,
61
+ "length" : 309,
62
+ "name" : "thewoolleyman - cinabox-screencast/Description.txt"
63
+ },
64
+ { "bytesCompleted" : 669,
65
+ "length" : 669,
66
+ "name" : "thewoolleyman - cinabox-screencast/LegalTorrents.txt"
67
+ },
68
+ { "bytesCompleted" : 52,
69
+ "length" : 52,
70
+ "name" : "thewoolleyman - cinabox-screencast/License.txt"
71
+ }
72
+ ],
73
+ "hashString" : "0032886cdb4b0dcd6e75b5ac6901afda64367e0c",
74
+ "name" : "thewoolleyman - cinabox-screencast",
75
+ "percentDone" : 1,
76
+ "rateDownload" : 0,
77
+ "rateUpload" : 0,
78
+ "totalSize" : 31773891
79
+ },
80
+ { "files" : [ { "bytesCompleted" : 0,
81
+ "length" : 13894821,
82
+ "name" : "Von Allan Studio - the road to god knows___ trailer/Content/the road to god knows... graphic novel trailer.wmv"
83
+ },
84
+ { "bytesCompleted" : 0,
85
+ "length" : 1114,
86
+ "name" : "Von Allan Studio - the road to god knows___ trailer/Description.txt"
87
+ },
88
+ { "bytesCompleted" : 0,
89
+ "length" : 669,
90
+ "name" : "Von Allan Studio - the road to god knows___ trailer/LegalTorrents.txt"
91
+ },
92
+ { "bytesCompleted" : 0,
93
+ "length" : 127,
94
+ "name" : "Von Allan Studio - the road to god knows___ trailer/License.txt"
95
+ }
96
+ ],
97
+ "hashString" : "6d97bb6424d048fe605d3fe558c5c5333cdd6227",
98
+ "name" : "Von Allan Studio - the road to god knows___ trailer",
99
+ "percentDone" : 0,
100
+ "rateDownload" : 0,
101
+ "rateUpload" : 0,
102
+ "totalSize" : 13896731
103
+ }
104
+ ]
@@ -1,124 +1,10 @@
1
1
  require_relative "transmission_api/version"
2
+ require_relative "transmission_api/client"
3
+ require_relative "transmission_api/client_fake"
4
+ require_relative "transmission_api/exception"
5
+
2
6
  require "httparty"
3
7
  require "json"
4
8
 
5
- class TransmissionApi
6
- attr_accessor :session_id
7
- attr_accessor :url
8
- attr_accessor :basic_auth
9
- attr_accessor :fields
10
- attr_accessor :debug_mode
11
-
12
- TORRENT_FIELDS = [
13
- "id",
14
- "name",
15
- "totalSize",
16
- "addedDate",
17
- "isFinished",
18
- "rateDownload",
19
- "rateUpload",
20
- "percentDone",
21
- "files"
22
- ]
23
-
24
- def initialize(opts)
25
- @url = opts[:url]
26
- @fields = opts[:fields] || TORRENT_FIELDS
27
- @basic_auth = { :username => opts[:username], :password => opts[:password] } if opts[:username]
28
- @session_id = "NOT-INITIALIZED"
29
- @debug_mode = opts[:debug_mode] || false
30
- end
31
-
32
- def all
33
- log "get_torrents"
34
-
35
- response =
36
- post(
37
- :method => "torrent-get",
38
- :arguments => {
39
- :fields => fields
40
- }
41
- )
42
-
43
- response["arguments"]["torrents"]
44
- end
45
-
46
- def find(id)
47
- log "get_torrent: #{id}"
48
-
49
- response =
50
- post(
51
- :method => "torrent-get",
52
- :arguments => {
53
- :fields => fields,
54
- :ids => [id]
55
- }
56
- )
57
-
58
- response["arguments"]["torrents"].first
59
- end
60
-
61
- def create(filename)
62
- log "add_torrent: #{filename}"
63
-
64
- response =
65
- post(
66
- :method => "torrent-add",
67
- :arguments => {
68
- :filename => filename
69
- }
70
- )
71
-
72
- response["arguments"]["torrent-added"]
73
- end
74
-
75
- def destroy(id)
76
- log "remove_torrent: #{id}"
77
-
78
- response =
79
- post(
80
- :method => "torrent-remove",
81
- :arguments => {
82
- :ids => [id],
83
- :"delete-local-data" => true
84
- }
85
- )
86
-
87
- response
88
- end
89
-
90
- def post(opts)
91
- JSON::parse( http_post(opts).body )
92
- end
93
-
94
- def http_post(opts)
95
- post_options = {
96
- :body => opts.to_json,
97
- :headers => { "x-transmission-session-id" => session_id }
98
- }
99
- post_options.merge!( :basic_auth => basic_auth ) if basic_auth
100
-
101
- log "url: #{url}"
102
- log "post_options: #{post_options}"
103
-
104
- response = HTTParty.post( url, post_options )
105
-
106
- log "response.body: #{response.body}"
107
- log "response.code: #{response.code}"
108
- log "response.message: #{response.message}"
109
- log "response.headers: #{response.headers.inspect}"
110
-
111
- # retry connection if session_id incorrect
112
- if( response.code == 409 )
113
- log "changing session_id"
114
- @session_id = response.headers["x-transmission-session-id"]
115
- response = http_post(opts)
116
- end
117
-
118
- response
119
- end
120
-
121
- def log(message)
122
- Kernel.puts "[TransmissionApi #{Time.now.strftime( "%F %T" )}] #{message}" if debug_mode
123
- end
9
+ module TransmissionApi
124
10
  end
@@ -0,0 +1,151 @@
1
+ class TransmissionApi::Client
2
+ attr_accessor :session_id
3
+ attr_accessor :url
4
+ attr_accessor :basic_auth
5
+ attr_accessor :fields
6
+ attr_accessor :debug_mode
7
+
8
+ TORRENT_FIELDS = [
9
+ "id",
10
+ "name",
11
+ "totalSize",
12
+ "addedDate",
13
+ "isFinished",
14
+ "rateDownload",
15
+ "rateUpload",
16
+ "percentDone",
17
+ "files"
18
+ ]
19
+
20
+ def initialize(opts)
21
+ @url = opts[:url]
22
+ @fields = opts[:fields] || TORRENT_FIELDS
23
+ @basic_auth = { :username => opts[:username], :password => opts[:password] } if opts[:username]
24
+ @session_id = "NOT-INITIALIZED"
25
+ @debug_mode = opts[:debug_mode] || false
26
+ end
27
+
28
+ def all
29
+ log "get_torrents"
30
+
31
+ response =
32
+ post(
33
+ :method => "torrent-get",
34
+ :arguments => {
35
+ :fields => fields
36
+ }
37
+ )
38
+
39
+ response["arguments"]["torrents"]
40
+ end
41
+
42
+ def find(id)
43
+ log "get_torrent: #{id}"
44
+
45
+ response =
46
+ post(
47
+ :method => "torrent-get",
48
+ :arguments => {
49
+ :fields => fields,
50
+ :ids => [id]
51
+ }
52
+ )
53
+
54
+ response["arguments"]["torrents"].first
55
+ end
56
+
57
+ def create(filename)
58
+ log "add_torrent: #{filename}"
59
+
60
+ response =
61
+ post(
62
+ :method => "torrent-add",
63
+ :arguments => {
64
+ :filename => filename
65
+ }
66
+ )
67
+
68
+ response["arguments"]["torrent-added"]
69
+ end
70
+
71
+ def destroy(id)
72
+ log "remove_torrent: #{id}"
73
+
74
+ response =
75
+ post(
76
+ :method => "torrent-remove",
77
+ :arguments => {
78
+ :ids => [id],
79
+ :"delete-local-data" => true
80
+ }
81
+ )
82
+
83
+ response
84
+ end
85
+
86
+ def post(opts)
87
+ response_parsed = JSON::parse( http_post(opts).body )
88
+
89
+ if response_parsed["result"] != "success"
90
+ raise TransmissionApi::Exception, response_parsed["result"]
91
+ end
92
+
93
+ response_parsed
94
+ end
95
+
96
+ def http_post(opts)
97
+ post_options = {
98
+ :body => opts.to_json,
99
+ :headers => { "x-transmission-session-id" => session_id }
100
+ }
101
+ post_options.merge!( :basic_auth => basic_auth ) if basic_auth
102
+
103
+ log "url: #{url}"
104
+ log "post_body:"
105
+ log JSON.parse(post_options[:body]).to_yaml
106
+ log "------------------"
107
+
108
+ response = HTTParty.post( url, post_options )
109
+
110
+ log_response response
111
+
112
+ # retry connection if session_id incorrect
113
+ if( response.code == 409 )
114
+ log "changing session_id"
115
+ @session_id = response.headers["x-transmission-session-id"]
116
+ response = http_post(opts)
117
+ end
118
+
119
+ response
120
+ end
121
+
122
+ def log(message)
123
+ Kernel.puts "[TransmissionApi #{Time.now.strftime( "%F %T" )}] #{message}" if debug_mode
124
+ end
125
+
126
+ def log_response(response)
127
+ body = nil
128
+ begin
129
+ body = JSON.parse(response.body).to_yaml
130
+ rescue
131
+ body = response.body
132
+ end
133
+
134
+ headers = response.headers.to_yaml
135
+
136
+ log "response.code: #{response.code}"
137
+ log "response.message: #{response.message}"
138
+
139
+ log "response.body_raw:"
140
+ log response.body
141
+ log "-----------------"
142
+
143
+ log "response.body:"
144
+ log body
145
+ log "-----------------"
146
+
147
+ log "response.headers:"
148
+ log headers
149
+ log "------------------"
150
+ end
151
+ end
@@ -0,0 +1,39 @@
1
+ class TransmissionApi::ClientFake < TransmissionApi::Client
2
+
3
+ attr_reader :torrents
4
+
5
+ def initialize(opts)
6
+ super
7
+ torrents_path = opts[:torrents_path] || "#{File.dirname(__FILE__)}/../torrents_fake.json"
8
+ @torrents = JSON.parse(File.read(torrents_path))
9
+ end
10
+
11
+ def all
12
+ torrents
13
+ end
14
+
15
+ def find(id)
16
+ torrents.select { |e| e["hashString"] == id }.first
17
+ end
18
+
19
+ def create(filename)
20
+ torrent = {
21
+ "files" => [],
22
+ "hashString" => "77831ec368308f1031434c5581a76fd0c3e06cfd",
23
+ "name" => "No Media Kings - Ghosts With Shit Jobs trailer",
24
+ "percentDone" => 0,
25
+ "rateUpload" => 0,
26
+ "rateDownload" => 0,
27
+ "totalSize" => 100
28
+ }
29
+
30
+ torrents << torrent
31
+
32
+ torrent
33
+ end
34
+
35
+ def destroy(id)
36
+ torrents.delete_if { |e| e["hashString"] == id }
37
+ end
38
+
39
+ end
@@ -0,0 +1,2 @@
1
+ class TransmissionApi::Exception < Exception
2
+ end
@@ -1,3 +1,3 @@
1
- class TransmissionApi
2
- VERSION = "0.0.3"
1
+ module TransmissionApi
2
+ VERSION = "0.0.7"
3
3
  end
@@ -0,0 +1,34 @@
1
+ require_relative "test_helper"
2
+
3
+ class ClientFakeTest < Test::Unit::TestCase
4
+ def setup
5
+ @client = TransmissionApi::ClientFake.new({})
6
+ end
7
+
8
+ def test_all
9
+ assert_equal( "77831ec368308f1031434c5581a76fd0c3e06cfd", @client.all.first["hashString"] )
10
+ end
11
+
12
+ def test_find
13
+ assert_equal( "77831ec368308f1031434c5581a76fd0c3e06cfd", @client.find("77831ec368308f1031434c5581a76fd0c3e06cfd")["hashString"] )
14
+ end
15
+
16
+ def test_create
17
+ assert_equal( "77831ec368308f1031434c5581a76fd0c3e06cfd", @client.create("filename")["hashString"] )
18
+ end
19
+
20
+ def test_destroy
21
+ torrents = [
22
+ { "hashString" => "A" },
23
+ { "hashString" => "B" },
24
+ { "hashString" => "C" },
25
+ ]
26
+
27
+ @client.expects(:torrents).returns(torrents)
28
+
29
+ @client.destroy("B")
30
+
31
+ assert_equal(["A", "C"], torrents.map{ |e| e["hashString"] })
32
+ end
33
+
34
+ end
@@ -1,13 +1,13 @@
1
1
  require_relative "test_helper"
2
2
 
3
- class TransmissionApiTest < Test::Unit::TestCase
3
+ class ClientTest < Test::Unit::TestCase
4
4
  def setup
5
- @transmission_api = TransmissionApi.new( :url => "http://api.url" )
5
+ @client = TransmissionApi::Client.new( :url => "http://api.url" )
6
6
  end
7
7
 
8
8
  def test_post
9
- @transmission_api.stubs(:session_id).returns("SESSION-ID")
10
- @transmission_api.stubs(:url).returns("http://api.url")
9
+ @client.stubs(:session_id).returns("SESSION-ID")
10
+ @client.stubs(:url).returns("http://api.url")
11
11
 
12
12
  opts = { :key1 => "value1", :key2 => "value2" }
13
13
 
@@ -21,18 +21,18 @@ class TransmissionApiTest < Test::Unit::TestCase
21
21
  :code => "",
22
22
  :message => "",
23
23
  :headers => "",
24
- :body => {"key" => "value"}.to_json
24
+ :body => {"key" => "value", "result" => "success"}.to_json
25
25
  )
26
26
 
27
27
  HTTParty.expects(:post).with( "http://api.url", opts_expected ).returns( response_mock )
28
28
 
29
- assert_equal "value", @transmission_api.post(opts)["key"]
29
+ assert_equal "value", @client.post(opts)["key"]
30
30
  end
31
31
 
32
32
  def test_post_with_basic_auth
33
- @transmission_api.stubs(:session_id).returns("SESSION-ID")
34
- @transmission_api.stubs(:url).returns("http://api.url")
35
- @transmission_api.stubs(:basic_auth).returns("user_pass")
33
+ @client.stubs(:session_id).returns("SESSION-ID")
34
+ @client.stubs(:url).returns("http://api.url")
35
+ @client.stubs(:basic_auth).returns("user_pass")
36
36
 
37
37
  opts = { :key1 => "value1" }
38
38
 
@@ -47,17 +47,17 @@ class TransmissionApiTest < Test::Unit::TestCase
47
47
  :code => "",
48
48
  :message => "",
49
49
  :headers => "",
50
- :body => {}.to_json
50
+ :body => {"result" => "success"}.to_json
51
51
  )
52
52
 
53
53
  HTTParty.expects(:post).with( "http://api.url", opts_expected ).returns( response_mock )
54
54
 
55
- @transmission_api.post(opts)
55
+ @client.post(opts)
56
56
  end
57
57
 
58
58
  def test_post_with_409
59
- @transmission_api.stubs(:url).returns("http://api.url")
60
- @transmission_api.instance_variable_set(:@session_id, "SESSION-ID")
59
+ @client.stubs(:url).returns("http://api.url")
60
+ @client.instance_variable_set(:@session_id, "SESSION-ID")
61
61
 
62
62
  opts = { :key1 => "value1" }
63
63
 
@@ -84,15 +84,15 @@ class TransmissionApiTest < Test::Unit::TestCase
84
84
  :code => 200,
85
85
  :message => "",
86
86
  :headers => "",
87
- :body => {"key" => "value"}.to_json
87
+ :body => {"key" => "value", "result" => "success"}.to_json
88
88
  )
89
89
 
90
90
  post_sequence = sequence("post_sequence")
91
91
  HTTParty.expects(:post).with( "http://api.url", opts_expected_1 ).returns( response_mock_1 ).in_sequence( post_sequence )
92
92
  HTTParty.expects(:post).with( "http://api.url", opts_expected_2 ).returns( response_mock_2 ).in_sequence( post_sequence )
93
93
 
94
- assert_equal "value", @transmission_api.post(opts)["key"]
95
- assert_equal "NEW-SESSION-ID", @transmission_api.instance_variable_get(:@session_id)
94
+ assert_equal "value", @client.post(opts)["key"]
95
+ assert_equal "NEW-SESSION-ID", @client.instance_variable_get(:@session_id)
96
96
  end
97
97
 
98
98
  def test_all
@@ -102,10 +102,10 @@ class TransmissionApiTest < Test::Unit::TestCase
102
102
  }
103
103
  result = { "arguments" => { "torrents" => "torrents" } }
104
104
 
105
- @transmission_api.stubs(:fields).returns("fields")
106
- @transmission_api.expects(:post).with( opts_expected ).returns( result )
105
+ @client.stubs(:fields).returns("fields")
106
+ @client.expects(:post).with( opts_expected ).returns( result )
107
107
 
108
- assert_equal( "torrents", @transmission_api.all )
108
+ assert_equal( "torrents", @client.all )
109
109
  end
110
110
 
111
111
  def test_find
@@ -115,10 +115,10 @@ class TransmissionApiTest < Test::Unit::TestCase
115
115
  }
116
116
  result = { "arguments" => { "torrents" => ["torrent1"] } }
117
117
 
118
- @transmission_api.stubs(:fields).returns("fields")
119
- @transmission_api.expects(:post).with( opts_expected ).returns( result )
118
+ @client.stubs(:fields).returns("fields")
119
+ @client.expects(:post).with( opts_expected ).returns( result )
120
120
 
121
- assert_equal( "torrent1", @transmission_api.find(1) )
121
+ assert_equal( "torrent1", @client.find(1) )
122
122
  end
123
123
 
124
124
  def test_create
@@ -128,9 +128,9 @@ class TransmissionApiTest < Test::Unit::TestCase
128
128
  }
129
129
  result = { "arguments" => { "torrent-added" => "torrent-added" } }
130
130
 
131
- @transmission_api.expects(:post).with( opts_expected ).returns( result )
131
+ @client.expects(:post).with( opts_expected ).returns( result )
132
132
 
133
- assert_equal( "torrent-added", @transmission_api.create( "filename" ) )
133
+ assert_equal( "torrent-added", @client.create( "filename" ) )
134
134
  end
135
135
 
136
136
  def test_destroy
@@ -139,8 +139,20 @@ class TransmissionApiTest < Test::Unit::TestCase
139
139
  :arguments => { :ids => [1], :"delete-local-data" => true }
140
140
  }
141
141
 
142
- @transmission_api.expects(:post).with( opts_expected )
143
- @transmission_api.destroy(1)
142
+ @client.expects(:post).with( opts_expected )
143
+ @client.destroy(1)
144
+ end
145
+
146
+ def test_if_not_success_raise_exception
147
+ result_mock = mock(:body => { "arguments" => {}, "result" => "Wadus error" }.to_json)
148
+ @client.expects(:http_post).returns(result_mock)
149
+
150
+ exception =
151
+ assert_raise(TransmissionApi::Exception) do
152
+ @client.create("filename")
153
+ end
154
+
155
+ assert_equal("Wadus error", exception.message)
144
156
  end
145
157
 
146
158
  end
metadata CHANGED
@@ -1,38 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transmission_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Fernando Guillen
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-05 00:00:00.000000000 Z
11
+ date: 2014-01-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: httparty
16
- requirement: &70202125524120 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - =
17
+ - - '='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 0.9.0
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70202125524120
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.0
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: mocha
27
- requirement: &70202125523580 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - =
31
+ - - '='
31
32
  - !ruby/object:Gem::Version
32
33
  version: 0.13.0
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70202125523580
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.13.0
36
41
  description: small ruby wrapper for the Transmission RPC API
37
42
  email:
38
43
  - fguillen.mail@gmail.com
@@ -46,35 +51,40 @@ files:
46
51
  - LICENSE
47
52
  - README.md
48
53
  - Rakefile
54
+ - lib/torrents_fake.json
49
55
  - lib/transmission_api.rb
56
+ - lib/transmission_api/client.rb
57
+ - lib/transmission_api/client_fake.rb
58
+ - lib/transmission_api/exception.rb
50
59
  - lib/transmission_api/version.rb
60
+ - test/client_fake_test.rb
61
+ - test/client_test.rb
51
62
  - test/test_helper.rb
52
- - test/transmission_api_test.rb
53
63
  - transmission_api.gemspec
54
64
  homepage: https://github.com/fguillen/TransmissionApi
55
65
  licenses: []
66
+ metadata: {}
56
67
  post_install_message:
57
68
  rdoc_options: []
58
69
  require_paths:
59
70
  - lib
60
71
  required_ruby_version: !ruby/object:Gem::Requirement
61
- none: false
62
72
  requirements:
63
- - - ! '>='
73
+ - - '>='
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
77
  requirements:
69
- - - ! '>='
78
+ - - '>='
70
79
  - !ruby/object:Gem::Version
71
80
  version: '0'
72
81
  requirements: []
73
82
  rubyforge_project:
74
- rubygems_version: 1.8.15
83
+ rubygems_version: 2.0.3
75
84
  signing_key:
76
- specification_version: 3
85
+ specification_version: 4
77
86
  summary: small ruby wrapper for the Transmission RPC API
78
87
  test_files:
88
+ - test/client_fake_test.rb
89
+ - test/client_test.rb
79
90
  - test/test_helper.rb
80
- - test/transmission_api_test.rb