transmission-ng 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/transmission.rb +24 -21
  3. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9ce2d6ed3c1b309a985a0e1a3683dd9b35d9a88
4
- data.tar.gz: 2af1198dc15c2f845fc7cbb081b7e44b03466776
3
+ metadata.gz: 0f8bb080d7e8008dcabd02dc4c8dd994f4bdeb80
4
+ data.tar.gz: 32d5997714ab6ee21ea2d734b9d97eaaebecabfc
5
5
  SHA512:
6
- metadata.gz: cb320b309c172da1eea5f970ecd52a5d99b47fe79c11ec6deeaf41b69888b63c0e4a21060e84bbb42d5a91343795b180823f1f477dfe1e16a995df3f00cce5c2
7
- data.tar.gz: 8e0dc10e5161c001984ad44b45ade1cc1e47b1d1a77bfd589d8bcba56a1ce1c655ba8f585da209f398389e2689843dd79b82ee66d5f91525beb1b1cfdf591220
6
+ metadata.gz: d86f2c10b16bb4da77ad3c9a28e33b7b24683d14a358ee8525d759104fe02126c81fc672981a22956e78b6f0462fb0613aedb023d56a5695d3564e5b5e2fa776
7
+ data.tar.gz: fd2aab701760dfe7eea7e71b2edf50cb44b052cb860f367e0717e9c277b49c4654897979000b7ffd8398d724b939013015fa756f1fe33bf5b7604436f74683e4
data/lib/transmission.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- require 'net/http'
2
+ require 'mechanize'
3
3
  require 'json'
4
4
 
5
5
  $rpc_version = 15
@@ -58,31 +58,34 @@ class Transmission
58
58
  end
59
59
 
60
60
  def rpc(method, args=[], session_id=nil)
61
- url = URI.parse('http://' + @config[:host] + ':' + @config[:port].to_s + '/transmission/rpc')
62
-
63
- http = Net::HTTP.new(url.host, url.port)
64
-
65
- req = Net::HTTP::Post.new(url.path)
66
- req.basic_auth @config[:user], @config[:pass]
67
- req.body = {
68
- 'method' => method,
69
- 'arguments' => args
70
- }.to_json
71
- req['X-Transmission-Session-Id'] = session_id
72
- req['Content-Type'] = 'application/json'
73
-
74
- resp = http.request(req)
61
+ mech = Mechanize.new do |mech|
62
+ mech.user_agent_alias = 'Mac Safari'
63
+ mech.add_auth "http://#{@config[:host]}:#{@config[:port].to_s}", @config[:user], @config[:pass]
64
+ end
75
65
 
76
- if resp.code == "409"
77
- m = resp.body.match /X-Transmission-Session-Id: (.*?)</
78
- return rpc(method, args, m[1])
66
+ begin
67
+ resp = mech.post 'http://' + @config[:host] + ':' + @config[:port].to_s + '/transmission/rpc', {
68
+ 'method' => method,
69
+ 'arguments' => args
70
+ }.to_json, {
71
+ 'X-Transmission-Session-Id' => session_id,
72
+ 'Content-Type' => 'application/json'
73
+ }
74
+ rescue Mechanize::ResponseCodeError => e
75
+ if e.response_code == "409"
76
+ session_id = e.page.search('code').text.match(/X-Transmission-Session-Id: ([a-zA-Z0-9]+)/)[1]
77
+ return rpc method, args, session_id
78
+ end
79
+ raise e
79
80
  end
80
81
 
81
- if m = resp.body.match(/"result""([a-zA-Z]+)"/)
82
- resp.body = resp.body.gsub /"result""([a-zA-Z]+)"/, ''
82
+ json = resp.body
83
+
84
+ if m = json.match(/"result""([a-zA-Z]+)"/)
85
+ json.gsub! /"result""([a-zA-Z]+)"/, ''
83
86
  end
84
87
 
85
- response = JSON.parse(resp.body)
88
+ response = JSON.parse(json)
86
89
 
87
90
  if m
88
91
  response['result'] = m[1]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transmission-ng
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - m4rkw
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-09-11 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mechanize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.7'
13
27
  description: A better API interface for the Transmission torrent client
14
28
  email: m@rkw.io
15
29
  executables: []