opentracker-ws 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -13,6 +13,8 @@ begin
13
13
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
14
  gem.add_dependency('sinatra', '>= 1.0')
15
15
  gem.add_dependency('thin', '>= 1.2.7')
16
+ gem.add_dependency('json', '>= 1.4.6')
17
+ gem.add_dependency('bencode', '>= 0.6.0')
16
18
  end
17
19
  Jeweler::GemcutterTasks.new
18
20
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/bin/opentracker-ws CHANGED
@@ -3,7 +3,7 @@
3
3
  require File.dirname(__FILE__) + '/../lib/opentracker-ws'
4
4
  require 'thin'
5
5
 
6
- rackup_file = "#{File.dirname(__FILE__)}/../lib/opentracker-ws/config.ru"
6
+ rackup_file = "#{File.dirname(__FILE__)}/../config.ru"
7
7
 
8
8
  argv = ARGV
9
9
  argv << ['-R', rackup_file] unless ARGV.include?('-R')
data/config.ru ADDED
@@ -0,0 +1,3 @@
1
+ require File.dirname(__FILE__) + '/lib/opentracker-ws'
2
+ OpenTrackerWs.run! :port => 2323
3
+
data/lib/helpers.rb ADDED
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'bencode'
3
+ require 'cgi'
4
+ require 'open-uri'
5
+ require 'yaml'
6
+
7
+
8
+ module OpenTrackerWsHelpers
9
+
10
+ def get_seeders(hash)
11
+ data = prepare_data(hash)
12
+ if !data['files'].empty?
13
+ data['files'].values.first['complete']
14
+ else
15
+ "N/A"
16
+ end
17
+ end
18
+
19
+ def get_leechers(hash)
20
+ data = prepare_data(hash)
21
+ if !data['files'].empty?
22
+ data['files'].values.first['incomplete']
23
+ else
24
+ "N/A"
25
+ end
26
+ end
27
+
28
+
29
+ private
30
+
31
+ def prepare_data(hash)
32
+ data = connect_to_tracker(hash)
33
+ BEncode.load(data)
34
+ end
35
+
36
+ def connect_to_tracker(hash)
37
+ config = load_config
38
+ info_hash_escaped = CGI::escape(hash.lines.to_a.pack("H*"))
39
+ open("http://#{config['opentracker']['host']}:#{config['opentracker']['port']}" +
40
+ "/scrape?info_hash=#{info_hash_escaped}").read
41
+ end
42
+
43
+ def load_config
44
+ begin
45
+ config_file = File.read(ENV['HOME'] + '/.opentracker-ws.yml')
46
+ YAML.load(config_file)
47
+ rescue Errno::ENOENT => e
48
+ puts e.message
49
+ end
50
+ end
51
+ end
52
+
@@ -1,10 +1,22 @@
1
1
  require 'rubygems'
2
2
  require 'sinatra/base'
3
+ require File.dirname(__FILE__) + '/helpers'
4
+ require 'json'
3
5
 
4
6
  class OpenTrackerWs < Sinatra::Base
5
7
 
8
+ include OpenTrackerWsHelpers
9
+
6
10
  get '/' do
7
11
  "Hola Mundo"
8
12
  end
13
+
14
+ get '/torrent/:hash' do
15
+ response = {}
16
+ response['seeders'] = get_seeders(params[:hash])
17
+ response['leechers'] = get_leechers(params[:hash])
18
+
19
+ return JSON.generate(response)
20
+ end
9
21
  end
10
22
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{opentracker-ws}
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Antonio Pardo"]
12
- s.date = %q{2010-08-22}
12
+ s.date = %q{2010-08-23}
13
13
  s.default_executable = %q{opentracker-ws}
14
14
  s.description = %q{Implements a HTTP Rest interface to opentracker Bittorrent tracker}
15
15
  s.email = %q{antonio.pardo@gmail.com}
@@ -26,9 +26,11 @@ Gem::Specification.new do |s|
26
26
  "Rakefile",
27
27
  "VERSION",
28
28
  "bin/opentracker-ws",
29
+ "config.ru",
30
+ "lib/helpers.rb",
29
31
  "lib/opentracker-ws.rb",
30
- "lib/opentracker-ws/config.ru",
31
32
  "opentracker-ws.gemspec",
33
+ "resources/opentracker-ws.yml",
32
34
  "test/helper.rb",
33
35
  "test/test_opentracker-ws.rb"
34
36
  ]
@@ -49,13 +51,19 @@ Gem::Specification.new do |s|
49
51
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
52
  s.add_runtime_dependency(%q<sinatra>, [">= 1.0"])
51
53
  s.add_runtime_dependency(%q<thin>, [">= 1.2.7"])
54
+ s.add_runtime_dependency(%q<json>, [">= 1.4.6"])
55
+ s.add_runtime_dependency(%q<bencode>, [">= 0.6.0"])
52
56
  else
53
57
  s.add_dependency(%q<sinatra>, [">= 1.0"])
54
58
  s.add_dependency(%q<thin>, [">= 1.2.7"])
59
+ s.add_dependency(%q<json>, [">= 1.4.6"])
60
+ s.add_dependency(%q<bencode>, [">= 0.6.0"])
55
61
  end
56
62
  else
57
63
  s.add_dependency(%q<sinatra>, [">= 1.0"])
58
64
  s.add_dependency(%q<thin>, [">= 1.2.7"])
65
+ s.add_dependency(%q<json>, [">= 1.4.6"])
66
+ s.add_dependency(%q<bencode>, [">= 0.6.0"])
59
67
  end
60
68
  end
61
69
 
@@ -0,0 +1,4 @@
1
+ opentracker:
2
+ host: 'p2p.home.lan'
3
+ port: 6969
4
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Antonio Pardo
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-22 00:00:00 +02:00
17
+ date: 2010-08-23 00:00:00 +02:00
18
18
  default_executable: opentracker-ws
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -46,6 +46,36 @@ dependencies:
46
46
  version: 1.2.7
47
47
  type: :runtime
48
48
  version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: json
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ segments:
58
+ - 1
59
+ - 4
60
+ - 6
61
+ version: 1.4.6
62
+ type: :runtime
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: bencode
66
+ prerelease: false
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ segments:
73
+ - 0
74
+ - 6
75
+ - 0
76
+ version: 0.6.0
77
+ type: :runtime
78
+ version_requirements: *id004
49
79
  description: Implements a HTTP Rest interface to opentracker Bittorrent tracker
50
80
  email: antonio.pardo@gmail.com
51
81
  executables:
@@ -63,9 +93,11 @@ files:
63
93
  - Rakefile
64
94
  - VERSION
65
95
  - bin/opentracker-ws
96
+ - config.ru
97
+ - lib/helpers.rb
66
98
  - lib/opentracker-ws.rb
67
- - lib/opentracker-ws/config.ru
68
99
  - opentracker-ws.gemspec
100
+ - resources/opentracker-ws.yml
69
101
  - test/helper.rb
70
102
  - test/test_opentracker-ws.rb
71
103
  has_rdoc: true
@@ -1,3 +0,0 @@
1
- require File.dirname(__FILE__) + '/../opentracker-ws'
2
- OpenTrackerWs.run! :port => 2323
3
-