opentracker-ws 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -15,6 +15,7 @@ begin
15
15
  gem.add_dependency('thin', '>= 1.2.7')
16
16
  gem.add_dependency('json', '>= 1.4.6')
17
17
  gem.add_dependency('bencode', '>= 0.6.0')
18
+ gem.add_dependency('nokogiri', '>= 1.4.3.1')
18
19
  end
19
20
  Jeweler::GemcutterTasks.new
20
21
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -11,6 +11,7 @@ begin
11
11
 
12
12
  argv = ARGV
13
13
  argv << ['-R', rackup_file] unless ARGV.include?('-R')
14
+ argv << ['-a', '127.0.0.1'] unless ARGV.include?('-a')
14
15
  argv << ['-p', '2323'] unless ARGV.include?('-p')
15
16
  argv << ['-e', 'production'] unless ARGV.include?('-e')
16
17
  Thin::Runner.new(argv.flatten).run!
data/config.ru CHANGED
@@ -1,3 +1,3 @@
1
1
  require File.dirname(__FILE__) + '/lib/opentracker-ws'
2
- OpenTrackerWs.run! :port => 2323, :environment => 'production'
2
+ OpenTrackerWs.run! :bind => '127.0.0.1', :port => 2323, :environment => 'production'
3
3
 
@@ -3,11 +3,35 @@ require 'bencode'
3
3
  require 'cgi'
4
4
  require 'open-uri'
5
5
  require 'yaml'
6
+ require 'nokogiri'
7
+ require 'json'
6
8
 
7
9
 
8
10
  module OpenTrackerWsHelpers
9
11
 
10
- def stats_for_torrent(hash)
12
+ def dynamic_content(data)
13
+ content_type 'application/json', :charset => 'utf-8'
14
+
15
+ return data.to_json
16
+ end
17
+
18
+ def tracker_stats
19
+ config = load_config
20
+ doc = Nokogiri::XML(open(
21
+ "http://#{config['opentracker']['host']}:#{config['opentracker']['port']}" +
22
+ "/stats?mode=everything"
23
+ )
24
+ )
25
+ response = {}
26
+ response['uptime'] = doc.search('stats uptime').text
27
+ response['peers'] = doc.search('stats peers count').text
28
+ response['seeds'] = doc.search('stats seeds count').text
29
+ response['completed'] = doc.search('stats completed count').text
30
+
31
+ return response
32
+ end
33
+
34
+ def torrent_stats(hash)
11
35
  response = {}
12
36
  if data = prepare_data(hash)
13
37
  response['seeders'] = get_seeders(data)
@@ -1,7 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'sinatra/base'
3
3
  require File.dirname(__FILE__) + '/helpers'
4
- require 'json'
5
4
 
6
5
  class OpenTrackerWs < Sinatra::Base
7
6
 
@@ -12,9 +11,11 @@ class OpenTrackerWs < Sinatra::Base
12
11
  end
13
12
 
14
13
  get '/torrent/:hash' do
15
- # In production send JSON with correct content_type
16
- #content_type 'application/json', :charset => 'utf-8'
17
- return JSON.generate(stats_for_torrent(params[:hash]))
14
+ dynamic_content(torrent_stats(params[:hash]))
15
+ end
16
+
17
+ get '/stats' do
18
+ dynamic_content(tracker_stats)
18
19
  end
19
20
  end
20
21
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{opentracker-ws}
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
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"]
@@ -53,17 +53,20 @@ Gem::Specification.new do |s|
53
53
  s.add_runtime_dependency(%q<thin>, [">= 1.2.7"])
54
54
  s.add_runtime_dependency(%q<json>, [">= 1.4.6"])
55
55
  s.add_runtime_dependency(%q<bencode>, [">= 0.6.0"])
56
+ s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.3.1"])
56
57
  else
57
58
  s.add_dependency(%q<sinatra>, [">= 1.0"])
58
59
  s.add_dependency(%q<thin>, [">= 1.2.7"])
59
60
  s.add_dependency(%q<json>, [">= 1.4.6"])
60
61
  s.add_dependency(%q<bencode>, [">= 0.6.0"])
62
+ s.add_dependency(%q<nokogiri>, [">= 1.4.3.1"])
61
63
  end
62
64
  else
63
65
  s.add_dependency(%q<sinatra>, [">= 1.0"])
64
66
  s.add_dependency(%q<thin>, [">= 1.2.7"])
65
67
  s.add_dependency(%q<json>, [">= 1.4.6"])
66
68
  s.add_dependency(%q<bencode>, [">= 0.6.0"])
69
+ s.add_dependency(%q<nokogiri>, [">= 1.4.3.1"])
67
70
  end
68
71
  end
69
72
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 5
9
- version: 0.0.5
8
+ - 6
9
+ version: 0.0.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Antonio Pardo
@@ -76,6 +76,22 @@ dependencies:
76
76
  version: 0.6.0
77
77
  type: :runtime
78
78
  version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: nokogiri
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ segments:
88
+ - 1
89
+ - 4
90
+ - 3
91
+ - 1
92
+ version: 1.4.3.1
93
+ type: :runtime
94
+ version_requirements: *id005
79
95
  description: Implements a HTTP Rest interface to opentracker Bittorrent tracker
80
96
  email: antonio.pardo@gmail.com
81
97
  executables: