opentracker-ws 0.0.5 → 0.0.6

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
@@ -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: