transmission-connect 0.3.0 → 0.3.4

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.
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ source "http://rubygems.org"
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
6
  gem 'json'
7
- gem 'transmission-client', '>=0.0.3', :git => "git://github.com/Daem0n/transmission-client.git"
7
+ gem 'transmission-client', '>=0.0.5', :git => "git://github.com/Daem0n/transmission-client.git"
8
8
 
9
9
  # Add dependencies to develop your gem here.
10
10
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  GIT
2
2
  remote: git://github.com/Daem0n/transmission-client.git
3
- revision: b0ec8d4e14c212eb833746b430522487547ae91c
3
+ revision: c653e014b8c1c9c25d93adf05c60ed212667120d
4
4
  specs:
5
- transmission-client (0.0.3)
5
+ transmission-client (0.0.5)
6
6
  em-http-request
7
7
 
8
8
  GEM
@@ -34,4 +34,4 @@ DEPENDENCIES
34
34
  json
35
35
  rcov
36
36
  shoulda
37
- transmission-client (>= 0.0.3)!
37
+ transmission-client (>= 0.0.5)!
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.4
data/bin/transmission.rb CHANGED
@@ -3,12 +3,22 @@
3
3
  require 'rubygems'
4
4
  require 'yaml'
5
5
  require 'transmission-client'
6
- require '../lib/transmission-connect'
6
+ require 'lib/transmission-connect'
7
7
 
8
- CONFIG = "../config/transmission.yml"
9
- result = []
8
+ CONFIG = "config/transmission.yml"
9
+ @exit = false
10
10
 
11
- while true
11
+ trap("INT") do
12
+ EventMachine::stop_event_loop
13
+ @exit = true
14
+ end
15
+
16
+ trap("TERM") do
17
+ EventMachine::stop_event_loop
18
+ @exit = true
19
+ end
20
+
21
+ while !@exit
12
22
  begin
13
23
  EventMachine.run do
14
24
  transmission = Configuration.new(YAML.load_file(CONFIG))
@@ -22,7 +32,11 @@ while true
22
32
  client.session_stats
23
33
  end
24
34
  end
35
+ EventMachine::start_server "127.0.0.1", 2456, TransmissionServer do |server|
36
+ server.connectors = transmission
37
+ end
25
38
  end
26
- rescue
39
+ rescue Exception => e
40
+ puts "Error: #{e.message}"
27
41
  end
28
42
  end
@@ -1 +1,2 @@
1
- require File.dirname(__FILE__) + '/transmission-connect/configuration'
1
+ require File.dirname(__FILE__) + '/transmission-connect/configuration'
2
+ require File.dirname(__FILE__) + '/transmission-connect/server'
@@ -48,36 +48,61 @@ class Configuration
48
48
  end
49
49
 
50
50
  class Client
51
+ # HOST = 'http://127.0.0.1:3000'
52
+ HOST = 'http://peerlize.hitlan.ru'
51
53
  FIELDS = ['downloadDir', 'error', 'errorString', 'eta', 'hashString', 'id', 'name', 'peersConnected', 'peersKnown', 'peersSendingToUs', 'percentDone', 'rateDownload', 'rateUpload', 'recheckProgress', 'startDate', 'status', 'totalSize', 'torrentFile']
52
- attr_reader :interval
54
+ attr_reader :interval, :host, :port, :transmission
55
+ attr_accessor :peer_port, :download_dir
53
56
  def initialize(args)
54
57
  @host = args.delete(:host) || '127.0.0.1'
55
58
  @port = args.delete(:port) || 9091
56
59
  @username = args[:username]
57
60
  @password = args[:password]
58
61
  @interval = args.delete(:interval) || 5
62
+ @up = args.delete(:up) || false
63
+ @down = args.delete(:down) || false
59
64
  @transmission = Transmission::Client.new(@host, @port, @username, @password)
65
+ @transmission.session do |session|
66
+ self.peer_port = session.peer_port
67
+ self.download_dir = session.download_dir
68
+ end
60
69
  end
61
70
 
62
71
  def report
63
72
  @transmission.torrents(FIELDS) do |torrents|
64
- result = {:host => "#{@host}:#{@port}"}
73
+ result = {:client => options}
65
74
  torrents.each do |torrent|
66
- puts 'torrent'
67
75
  result[torrent.hashString.to_sym] = torrent.attributes
68
76
  end
69
- EM::HttpRequest.new('http://127.0.0.1:3000/transmission/').post :query => {:torrents => result.to_json}
77
+ EM::HttpRequest.new("#{HOST}/transmission/").post :body => {:torrents => result.to_json}
70
78
  end
71
79
  end
72
80
 
73
81
  def session_stats
74
82
  @transmission.session_stat do |ss|
75
- puts 'session'
76
- result = ss.attributes.merge({:host => "#{@host}:#{@port}"})
77
- EM::HttpRequest.new('http://127.0.0.1:3000/transmission/stat').post :query => {:session_stat => result.to_json}
83
+ result = ss.attributes.merge(:client => options)
84
+ EM::HttpRequest.new("#{HOST}/transmission/stat").post :body => {:session_stat => result.to_json}
78
85
  end
79
86
  end
80
87
 
88
+ def up?
89
+ @up
90
+ end
91
+
92
+ def down?
93
+ @down
94
+ end
95
+
96
+ def options
97
+ @options ||= {
98
+ :port => peer_port,
99
+ :up => up?,
100
+ :down => down?,
101
+ :download_dir => download_dir,
102
+ :host => @host
103
+ }
104
+ end
105
+
81
106
  end
82
107
 
83
108
  end
@@ -0,0 +1,27 @@
1
+ module TransmissionServer
2
+ attr_accessor :connectors
3
+
4
+ def receive_data data
5
+ query = JSON.parse(data)
6
+ case query['command']
7
+ when 'add'
8
+ respond = 'Add: ' + query['uri']
9
+ target = query['client']
10
+ ## Add magnet link to download client
11
+ session = @connectors.find{|client| client.host == target['host'] and client.peer_port == target['port']}
12
+ if session
13
+ session.transmission.add_torrent_by_file(query['uri'])
14
+ session.transmission.add_tracker(query['hash'], 'http://retracker.local/announce') if query['hash']
15
+ end
16
+ when 'move'
17
+ respond = 'move'
18
+ ## Move torrent from download to upload client
19
+ else
20
+ respond = 'Illegal operation'
21
+ end
22
+ puts respond
23
+ send_data respond
24
+ close_connection_after_writing
25
+ end
26
+
27
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{transmission-connect}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dmitry Brazhkin"]
12
- s.date = %q{2011-04-19}
12
+ s.date = %q{2011-04-21}
13
13
  s.description = %q{Simple connector to transmission bittorrent client by HTTP-RPC}
14
14
  s.email = %q{dbrazhkin@gmail.com}
15
15
  s.executables = ["transmission.rb"]
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  "lib/transmission-connect.rb",
31
31
  "lib/transmission-connect/client.rb",
32
32
  "lib/transmission-connect/configuration.rb",
33
+ "lib/transmission-connect/server.rb",
33
34
  "test/helper.rb",
34
35
  "test/test_client.rb",
35
36
  "test/test_transmission-connect.rb",
@@ -51,14 +52,14 @@ Gem::Specification.new do |s|
51
52
 
52
53
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
54
  s.add_runtime_dependency(%q<json>, [">= 0"])
54
- s.add_runtime_dependency(%q<transmission-client>, [">= 0.0.3"])
55
+ s.add_runtime_dependency(%q<transmission-client>, [">= 0.0.5"])
55
56
  s.add_development_dependency(%q<shoulda>, [">= 0"])
56
57
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
57
58
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
58
59
  s.add_development_dependency(%q<rcov>, [">= 0"])
59
60
  else
60
61
  s.add_dependency(%q<json>, [">= 0"])
61
- s.add_dependency(%q<transmission-client>, [">= 0.0.3"])
62
+ s.add_dependency(%q<transmission-client>, [">= 0.0.5"])
62
63
  s.add_dependency(%q<shoulda>, [">= 0"])
63
64
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
64
65
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -66,7 +67,7 @@ Gem::Specification.new do |s|
66
67
  end
67
68
  else
68
69
  s.add_dependency(%q<json>, [">= 0"])
69
- s.add_dependency(%q<transmission-client>, [">= 0.0.3"])
70
+ s.add_dependency(%q<transmission-client>, [">= 0.0.5"])
70
71
  s.add_dependency(%q<shoulda>, [">= 0"])
71
72
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
73
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transmission-connect
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 0
10
- version: 0.3.0
9
+ - 4
10
+ version: 0.3.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dmitry Brazhkin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-19 00:00:00 Z
18
+ date: 2011-04-21 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -37,12 +37,12 @@ dependencies:
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- hash: 25
40
+ hash: 21
41
41
  segments:
42
42
  - 0
43
43
  - 0
44
- - 3
45
- version: 0.0.3
44
+ - 5
45
+ version: 0.0.5
46
46
  name: transmission-client
47
47
  prerelease: false
48
48
  type: :runtime
@@ -129,6 +129,7 @@ files:
129
129
  - lib/transmission-connect.rb
130
130
  - lib/transmission-connect/client.rb
131
131
  - lib/transmission-connect/configuration.rb
132
+ - lib/transmission-connect/server.rb
132
133
  - test/helper.rb
133
134
  - test/test_client.rb
134
135
  - test/test_transmission-connect.rb