opentracker-ws 0.0.3 → 0.0.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/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
-