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 +2 -0
- data/VERSION +1 -1
- data/bin/opentracker-ws +1 -1
- data/config.ru +3 -0
- data/lib/helpers.rb +52 -0
- data/lib/opentracker-ws.rb +12 -0
- data/opentracker-ws.gemspec +11 -3
- data/resources/opentracker-ws.yml +4 -0
- metadata +36 -4
- data/lib/opentracker-ws/config.ru +0 -3
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.
|
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__)}/../
|
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
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
|
+
|
data/lib/opentracker-ws.rb
CHANGED
@@ -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
|
|
data/opentracker-ws.gemspec
CHANGED
@@ -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.
|
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-
|
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
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
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-
|
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
|