transmission-connect 0.2.2 → 0.3.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.
data/Gemfile CHANGED
@@ -4,6 +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
8
 
8
9
  # Add dependencies to develop your gem here.
9
10
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -1,6 +1,20 @@
1
+ GIT
2
+ remote: git://github.com/Daem0n/transmission-client.git
3
+ revision: b0ec8d4e14c212eb833746b430522487547ae91c
4
+ specs:
5
+ transmission-client (0.0.3)
6
+ em-http-request
7
+
1
8
  GEM
2
9
  remote: http://rubygems.org/
3
10
  specs:
11
+ addressable (2.2.5)
12
+ em-http-request (0.3.0)
13
+ addressable (>= 2.0.0)
14
+ escape_utils
15
+ eventmachine (>= 0.12.9)
16
+ escape_utils (0.2.3)
17
+ eventmachine (0.12.10)
4
18
  git (1.2.5)
5
19
  jeweler (1.5.2)
6
20
  bundler (~> 1.0.0)
@@ -20,3 +34,4 @@ DEPENDENCIES
20
34
  json
21
35
  rcov
22
36
  shoulda
37
+ transmission-client (>= 0.0.3)!
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'yaml'
5
+ require 'transmission-client'
6
+ require '../lib/transmission-connect'
7
+
8
+ CONFIG = "../config/transmission.yml"
9
+ result = []
10
+
11
+ while true
12
+ begin
13
+ EventMachine.run do
14
+ transmission = Configuration.new(YAML.load_file(CONFIG))
15
+ transmission.each do |client|
16
+ EM.add_periodic_timer(client.interval) do
17
+ client.report
18
+ end
19
+ end
20
+ EM.add_periodic_timer(2) do
21
+ transmission.each do |client|
22
+ client.session_stats
23
+ end
24
+ end
25
+ end
26
+ rescue
27
+ end
28
+ end
@@ -0,0 +1,4 @@
1
+ ---
2
+ - :host: 127.0.0.1
3
+ :port: 9091
4
+ :down: true
@@ -0,0 +1,83 @@
1
+ class Configuration
2
+ include Enumerable
3
+
4
+ ## def initialize(args)
5
+ ## args - array of hashes:
6
+ # args = [
7
+ # {
8
+ # :host => '127.0.0.1',
9
+ # :port => 9091,
10
+ # :down => true
11
+ # },
12
+ # {
13
+ # :host => '127.0.0.1',
14
+ # :port => 9092,
15
+ # :up => true
16
+ # },
17
+ # {
18
+ # :host => '192.168.100.199',
19
+ # :port => 9091,
20
+ # :username => 'username',
21
+ # :password => 'password',
22
+ # :down => true,
23
+ # :up => true
24
+ # }
25
+ # ]
26
+ def initialize(args = [])
27
+ @clients = []
28
+ @downs = []
29
+ @ups = []
30
+ args.each do |arg|
31
+ client = Client.new(arg)
32
+ @clients << client
33
+ @downs << client if arg.key?(:down) && arg[:down]
34
+ @ups << client if arg.key?(:up) && arg[:up]
35
+ end
36
+ end
37
+
38
+ def each
39
+ @clients.each{|i| yield i}
40
+ end
41
+
42
+ def each_ups
43
+ @ups.each{|i| yield i}
44
+ end
45
+
46
+ def each_downs
47
+ @downs.each{|i| yield i}
48
+ end
49
+
50
+ class Client
51
+ FIELDS = ['downloadDir', 'error', 'errorString', 'eta', 'hashString', 'id', 'name', 'peersConnected', 'peersKnown', 'peersSendingToUs', 'percentDone', 'rateDownload', 'rateUpload', 'recheckProgress', 'startDate', 'status', 'totalSize', 'torrentFile']
52
+ attr_reader :interval
53
+ def initialize(args)
54
+ @host = args.delete(:host) || '127.0.0.1'
55
+ @port = args.delete(:port) || 9091
56
+ @username = args[:username]
57
+ @password = args[:password]
58
+ @interval = args.delete(:interval) || 5
59
+ @transmission = Transmission::Client.new(@host, @port, @username, @password)
60
+ end
61
+
62
+ def report
63
+ @transmission.torrents(FIELDS) do |torrents|
64
+ result = {:host => "#{@host}:#{@port}"}
65
+ torrents.each do |torrent|
66
+ puts 'torrent'
67
+ result[torrent.hashString.to_sym] = torrent.attributes
68
+ end
69
+ EM::HttpRequest.new('http://127.0.0.1:3000/transmission/').post :query => {:torrents => result.to_json}
70
+ end
71
+ end
72
+
73
+ def session_stats
74
+ @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}
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ end
@@ -1,4 +1 @@
1
- require 'net/http'
2
- require 'json'
3
- require 'base64'
4
- require 'transmission-connect/client'
1
+ require File.dirname(__FILE__) + '/transmission-connect/configuration'
@@ -5,13 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{transmission-connect}
8
- s.version = "0.2.2"
8
+ s.version = "0.3.0"
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-12}
12
+ s.date = %q{2011-04-19}
13
13
  s.description = %q{Simple connector to transmission bittorrent client by HTTP-RPC}
14
14
  s.email = %q{dbrazhkin@gmail.com}
15
+ s.executables = ["transmission.rb"]
15
16
  s.extra_rdoc_files = [
16
17
  "LICENSE.txt",
17
18
  "README.rdoc"
@@ -24,8 +25,11 @@ Gem::Specification.new do |s|
24
25
  "README.rdoc",
25
26
  "Rakefile",
26
27
  "VERSION",
28
+ "bin/transmission.rb",
29
+ "config/transmission.yml",
27
30
  "lib/transmission-connect.rb",
28
31
  "lib/transmission-connect/client.rb",
32
+ "lib/transmission-connect/configuration.rb",
29
33
  "test/helper.rb",
30
34
  "test/test_client.rb",
31
35
  "test/test_transmission-connect.rb",
@@ -47,12 +51,14 @@ Gem::Specification.new do |s|
47
51
 
48
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
53
  s.add_runtime_dependency(%q<json>, [">= 0"])
54
+ s.add_runtime_dependency(%q<transmission-client>, [">= 0.0.3"])
50
55
  s.add_development_dependency(%q<shoulda>, [">= 0"])
51
56
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
52
57
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
53
58
  s.add_development_dependency(%q<rcov>, [">= 0"])
54
59
  else
55
60
  s.add_dependency(%q<json>, [">= 0"])
61
+ s.add_dependency(%q<transmission-client>, [">= 0.0.3"])
56
62
  s.add_dependency(%q<shoulda>, [">= 0"])
57
63
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
58
64
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -60,6 +66,7 @@ Gem::Specification.new do |s|
60
66
  end
61
67
  else
62
68
  s.add_dependency(%q<json>, [">= 0"])
69
+ s.add_dependency(%q<transmission-client>, [">= 0.0.3"])
63
70
  s.add_dependency(%q<shoulda>, [">= 0"])
64
71
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
65
72
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 2
10
- version: 0.2.2
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
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-12 00:00:00 Z
18
+ date: 2011-04-19 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -33,6 +33,22 @@ dependencies:
33
33
  requirement: *id001
34
34
  - !ruby/object:Gem::Dependency
35
35
  version_requirements: &id002 !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ hash: 25
41
+ segments:
42
+ - 0
43
+ - 0
44
+ - 3
45
+ version: 0.0.3
46
+ name: transmission-client
47
+ prerelease: false
48
+ type: :runtime
49
+ requirement: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
36
52
  none: false
37
53
  requirements:
38
54
  - - ">="
@@ -44,9 +60,9 @@ dependencies:
44
60
  name: shoulda
45
61
  prerelease: false
46
62
  type: :development
47
- requirement: *id002
63
+ requirement: *id003
48
64
  - !ruby/object:Gem::Dependency
49
- version_requirements: &id003 !ruby/object:Gem::Requirement
65
+ version_requirements: &id004 !ruby/object:Gem::Requirement
50
66
  none: false
51
67
  requirements:
52
68
  - - ~>
@@ -60,9 +76,9 @@ dependencies:
60
76
  name: bundler
61
77
  prerelease: false
62
78
  type: :development
63
- requirement: *id003
79
+ requirement: *id004
64
80
  - !ruby/object:Gem::Dependency
65
- version_requirements: &id004 !ruby/object:Gem::Requirement
81
+ version_requirements: &id005 !ruby/object:Gem::Requirement
66
82
  none: false
67
83
  requirements:
68
84
  - - ~>
@@ -76,9 +92,9 @@ dependencies:
76
92
  name: jeweler
77
93
  prerelease: false
78
94
  type: :development
79
- requirement: *id004
95
+ requirement: *id005
80
96
  - !ruby/object:Gem::Dependency
81
- version_requirements: &id005 !ruby/object:Gem::Requirement
97
+ version_requirements: &id006 !ruby/object:Gem::Requirement
82
98
  none: false
83
99
  requirements:
84
100
  - - ">="
@@ -90,11 +106,11 @@ dependencies:
90
106
  name: rcov
91
107
  prerelease: false
92
108
  type: :development
93
- requirement: *id005
109
+ requirement: *id006
94
110
  description: Simple connector to transmission bittorrent client by HTTP-RPC
95
111
  email: dbrazhkin@gmail.com
96
- executables: []
97
-
112
+ executables:
113
+ - transmission.rb
98
114
  extensions: []
99
115
 
100
116
  extra_rdoc_files:
@@ -108,8 +124,11 @@ files:
108
124
  - README.rdoc
109
125
  - Rakefile
110
126
  - VERSION
127
+ - bin/transmission.rb
128
+ - config/transmission.yml
111
129
  - lib/transmission-connect.rb
112
130
  - lib/transmission-connect/client.rb
131
+ - lib/transmission-connect/configuration.rb
113
132
  - test/helper.rb
114
133
  - test/test_client.rb
115
134
  - test/test_transmission-connect.rb