torrentify 0.4 → 0.5
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +12 -0
- data/Rakefile +11 -2
- data/lib/manager/imdb_manager.rb +10 -6
- data/lib/manager/mechanize_manager.rb +58 -16
- data/lib/manager/sites/extratorrent_parser.rb +3 -1
- data/lib/manager/sites/isohunt_parser.rb +3 -1
- data/lib/manager/sites/kickass_parser.rb +3 -1
- data/lib/manager/sites/piratebay_parser.rb +3 -1
- data/lib/torrentify.rb +38 -2
- data/test-integration/manager/sites/extratorrent_test.rb +21 -0
- data/test-integration/manager/sites/isohunt_test.rb +41 -0
- data/test-integration/manager/sites/kickass_test.rb +41 -0
- data/test-integration/manager/sites/piratebay_test.rb +41 -0
- data/test-integration/test_helper.rb +6 -0
- data/test/manager/sites/extratorrent_parser_test.rb +1 -1
- data/test/manager/torrentify_test.rb +52 -0
- data/torrentify.gemspec +2 -1
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfb167f3f8414f5887016087e7afd21795201fd8
|
4
|
+
data.tar.gz: fbcfd2ecc259e8c419dd4d317ce8bfcb5810cd60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 891484a77c4464a2733f083e1b4411ca9687482f504b765971d24d4b0eef14c02394332743707ffe16253a365670e6942954dc250dee47579d1241d83033aff6
|
7
|
+
data.tar.gz: d00cfa10c51603966a21bcdf543107bd34c6a2ce6fc526fb2d701d2c0fa302fb8008b2bfb12d8f3a29070b491e6ea0665ca2dde8b2cd531632b8c5884a62efbb
|
data/.rubocop.yml
CHANGED
@@ -14,4 +14,16 @@ Metrics/MethodLength:
|
|
14
14
|
Enabled: false
|
15
15
|
|
16
16
|
Metrics/AbcSize:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Metrics/LineLength:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Lint/Eval:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
Metrics/CyclomaticComplexity:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
Metrics/PerceivedComplexity:
|
17
29
|
Enabled: false
|
data/Rakefile
CHANGED
@@ -26,10 +26,18 @@ Rake::TestTask.new(:unitTest) do |t|
|
|
26
26
|
t.test_files = FileList['test/**/*_test.rb']
|
27
27
|
end
|
28
28
|
|
29
|
+
desc 'Run Integrationtests'
|
30
|
+
Rake::TestTask.new(:integrationTest => [:test]) do |t|
|
31
|
+
t.libs << 'test'
|
32
|
+
t.verbose = false
|
33
|
+
t.test_files = FileList['test-integration/**/*_test.rb']
|
34
|
+
end
|
35
|
+
|
29
36
|
desc 'Run codeclimate - Sends coverage info to CodeClimate when in CI'
|
30
|
-
task :codeclimate
|
37
|
+
task :codeclimate do
|
31
38
|
require 'simplecov'
|
32
39
|
require 'codeclimate-test-reporter'
|
40
|
+
SimpleCov.command_name 'Unit Tests'
|
33
41
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
34
42
|
SimpleCov::Formatter::HTMLFormatter,
|
35
43
|
CodeClimate::TestReporter::Formatter
|
@@ -40,9 +48,10 @@ end
|
|
40
48
|
require 'coveralls/rake/task'
|
41
49
|
Coveralls::RakeTask.new
|
42
50
|
desc 'Run Coveralls - Sends coverage info to coveralls.io when in CI'
|
43
|
-
task :coveralls =>
|
51
|
+
task :coveralls => 'coveralls:push' do
|
44
52
|
require 'simplecov'
|
45
53
|
require 'coveralls'
|
54
|
+
SimpleCov.command_name 'Unit Tests'
|
46
55
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
47
56
|
SimpleCov::Formatter::HTMLFormatter,
|
48
57
|
Coveralls::SimpleCov::Formatter
|
data/lib/manager/imdb_manager.rb
CHANGED
@@ -18,13 +18,17 @@ class ImdbManager
|
|
18
18
|
def get_watchlist(userid)
|
19
19
|
rss_url = 'http://rss.imdb.com/user/userid/watchlist'
|
20
20
|
url = rss_url.gsub('userid', userid)
|
21
|
-
page = Agent.get_web_page(url)
|
22
|
-
items = page.search('.//item')
|
23
21
|
titles = []
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
begin
|
23
|
+
page = Agent.get_web_page(url)
|
24
|
+
items = page.search('.//item')
|
25
|
+
items.each do |item|
|
26
|
+
title = item.search('.//title')[0].content
|
27
|
+
titles.push(title)
|
28
|
+
end
|
29
|
+
titles
|
30
|
+
rescue
|
31
|
+
[]
|
27
32
|
end
|
28
|
-
titles
|
29
33
|
end
|
30
34
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
require 'rubygems'
|
3
3
|
require 'mechanize'
|
4
|
+
require 'typhoeus'
|
4
5
|
require_relative 'sites/kickass_parser'
|
5
6
|
require_relative 'sites/piratebay_parser'
|
6
7
|
require_relative 'sites/isohunt_parser'
|
@@ -16,6 +17,7 @@ class MechanizeManager
|
|
16
17
|
def self.get_web_page(url)
|
17
18
|
agent = Mechanize.new
|
18
19
|
agent.pluggable_parser.default = Mechanize::Page
|
20
|
+
agent.user_agent = 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.4a) Gecko/20030401'
|
19
21
|
agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
20
22
|
agent.get(url)
|
21
23
|
end
|
@@ -23,33 +25,73 @@ class MechanizeManager
|
|
23
25
|
|
24
26
|
def search_kickass(search_term)
|
25
27
|
white_space = '%20'
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
baseurl = KickassParser::Parser::BASEURL
|
29
|
+
kickass_url = baseurl + '/usearch/'
|
30
|
+
url = kickass_url + search_term.gsub(' ', white_space)
|
31
|
+
|
32
|
+
begin
|
33
|
+
page = Agent.get_web_page(url)
|
34
|
+
KickassParser.new(page).main_divs
|
35
|
+
rescue
|
36
|
+
[]
|
37
|
+
end
|
30
38
|
end
|
31
39
|
|
32
40
|
def search_piratebay(search_term)
|
33
41
|
white_space = '%20'
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
42
|
+
baseurl = PirateBayParser::Parser::BASEURL
|
43
|
+
pirate_url = baseurl + '/search/'
|
44
|
+
url = pirate_url + search_term.gsub(' ', white_space)
|
45
|
+
|
46
|
+
begin
|
47
|
+
page = Agent.get_web_page(url)
|
48
|
+
PirateBayParser.new(page).main_divs
|
49
|
+
rescue
|
50
|
+
[]
|
51
|
+
end
|
38
52
|
end
|
39
53
|
|
40
54
|
def search_isohunt(search_term)
|
41
55
|
white_space = '%20'
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
56
|
+
baseurl = IsohuntParser::Parser::BASEURL
|
57
|
+
isohunt_url = baseurl + '/torrents/?ihq='
|
58
|
+
url = isohunt_url + search_term.gsub(' ', white_space)
|
59
|
+
|
60
|
+
begin
|
61
|
+
page = Agent.get_web_page(url)
|
62
|
+
IsohuntParser.new(page).main_divs
|
63
|
+
rescue
|
64
|
+
[]
|
65
|
+
end
|
46
66
|
end
|
47
67
|
|
48
68
|
def search_extratorrent(search_term)
|
49
69
|
white_space = '+'
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
70
|
+
baseurl = ExtratorrentParser::Parser::BASEURL
|
71
|
+
extratorrent_url = baseurl + '/search/?search='
|
72
|
+
url = extratorrent_url + search_term.gsub(' ', white_space)
|
73
|
+
|
74
|
+
# result = extra_torrent_cloudflare_ddos_breaker(url)
|
75
|
+
begin
|
76
|
+
page = Agent.get_web_page(url)
|
77
|
+
ExtratorrentParser.new(page).main_divs
|
78
|
+
rescue
|
79
|
+
[]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def extra_torrent_cloudflare_ddos_breaker(url)
|
84
|
+
response = Typhoeus::Request.get(url, :cookiefile => '.typhoeus_cookies', :cookiejar => '.typhoeus_cookies')
|
85
|
+
body = response.response_body
|
86
|
+
challenge = body.match(%r{name="jschl_vc"\s*value="([a-zA-Z0-9]+)"/\>}).captures[0]
|
87
|
+
math = body.match(/a\.value\s*=\s*(.+?\d?);/).captures[0]
|
88
|
+
domain = url.split('/')[2]
|
89
|
+
answer = eval(math) + domain.length
|
90
|
+
asd = '/cdn-cgi/l/chk_jschl?jschl_vc='
|
91
|
+
answer_url = domain + asd + "#{challenge}&jschl_answer=#{answer}"
|
92
|
+
puts answer_url
|
93
|
+
html = Typhoeus.get(answer_url, :followlocation => true)
|
94
|
+
body = html.response_body
|
95
|
+
puts 'body' + body
|
54
96
|
end
|
55
97
|
end
|
@@ -11,6 +11,8 @@ class ExtratorrentParser
|
|
11
11
|
|
12
12
|
# Parse values from html
|
13
13
|
module Parser
|
14
|
+
BASEURL = 'http://extratorrent.cc'
|
15
|
+
|
14
16
|
def self.seeders(div)
|
15
17
|
links = div.search(".//td[@class='sy']")
|
16
18
|
value = ''
|
@@ -36,7 +38,7 @@ class ExtratorrentParser
|
|
36
38
|
|
37
39
|
def self.torrent_url(div)
|
38
40
|
links = div.search('.//a')
|
39
|
-
links[0].attributes['href']
|
41
|
+
BASEURL + links[0].attributes['href']
|
40
42
|
end
|
41
43
|
|
42
44
|
def self.torrent_name(div)
|
@@ -11,6 +11,8 @@ class IsohuntParser
|
|
11
11
|
|
12
12
|
# Parse values from html
|
13
13
|
module Parser
|
14
|
+
BASEURL = 'https://isohunt.to'
|
15
|
+
|
14
16
|
def self.seeders(div)
|
15
17
|
links = div.search(".//td[@class=' sy' or @class=' sn']")
|
16
18
|
value = ''
|
@@ -35,7 +37,7 @@ class IsohuntParser
|
|
35
37
|
|
36
38
|
def self.torrent_url(div)
|
37
39
|
links = div.search('.//a[@href]')
|
38
|
-
links[0].attributes['href']
|
40
|
+
BASEURL + links[0].attributes['href']
|
39
41
|
end
|
40
42
|
|
41
43
|
def self.torrent_name(div)
|
@@ -11,6 +11,8 @@ class KickassParser
|
|
11
11
|
|
12
12
|
# Parse values from html
|
13
13
|
module Parser
|
14
|
+
BASEURL = 'https://kat.cr'
|
15
|
+
|
14
16
|
def self.seeders(div)
|
15
17
|
links = div.search(".//td[@class='red lasttd center']")
|
16
18
|
value = ''
|
@@ -44,7 +46,7 @@ class KickassParser
|
|
44
46
|
links.each do |link|
|
45
47
|
value = link.attributes['href']
|
46
48
|
end
|
47
|
-
value
|
49
|
+
'https:' + value
|
48
50
|
end
|
49
51
|
|
50
52
|
def self.torrent_name(div)
|
@@ -11,6 +11,8 @@ class PirateBayParser
|
|
11
11
|
|
12
12
|
# Parse values from html
|
13
13
|
module Parser
|
14
|
+
BASEURL = 'https://thepiratebay.mn'
|
15
|
+
|
14
16
|
def self.seeders(div)
|
15
17
|
links = div.search(".//td[@align='right']")
|
16
18
|
links[0].content if !links.nil? && !links[0].nil?
|
@@ -36,7 +38,7 @@ class PirateBayParser
|
|
36
38
|
links.each do |link|
|
37
39
|
value = link.attributes['href']
|
38
40
|
end
|
39
|
-
value
|
41
|
+
BASEURL + value
|
40
42
|
end
|
41
43
|
|
42
44
|
def self.torrent_name(div)
|
data/lib/torrentify.rb
CHANGED
@@ -6,13 +6,49 @@ require_relative 'manager/imdb_manager'
|
|
6
6
|
# Main interface
|
7
7
|
# Responsible for running manager-methods
|
8
8
|
module Torrentify
|
9
|
-
def self.search(search_param)
|
9
|
+
def self.search(search_param, search_engine)
|
10
|
+
manager = MechanizeManager.new
|
11
|
+
kickass = []
|
12
|
+
piratebay = []
|
13
|
+
isohunt = []
|
14
|
+
extratorrent = []
|
15
|
+
case "#{search_engine}"
|
16
|
+
when 'KICKASS'
|
17
|
+
kickass = manager.search_kickass(search_param)
|
18
|
+
when 'PIRATEBAY'
|
19
|
+
piratebay = manager.search_piratebay(search_param)
|
20
|
+
when 'ISOHUNT'
|
21
|
+
isohunt = manager.search_isohunt(search_param)
|
22
|
+
when 'PIRATEBAY'
|
23
|
+
extratorrent = manager.search_extratorrent(search_param)
|
24
|
+
when 'ALL'
|
25
|
+
kickass = manager.search_kickass(search_param)
|
26
|
+
piratebay = manager.search_piratebay(search_param)
|
27
|
+
isohunt = manager.search_isohunt(search_param)
|
28
|
+
extratorrent = manager.search_extratorrent(search_param)
|
29
|
+
else
|
30
|
+
fail 'not valid search_engine'
|
31
|
+
end
|
32
|
+
[kickass, piratebay, isohunt, extratorrent]
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.search_all_return_best(search_param)
|
10
36
|
manager = MechanizeManager.new
|
11
37
|
kickass = manager.search_kickass(search_param)
|
12
38
|
piratebay = manager.search_piratebay(search_param)
|
13
39
|
isohunt = manager.search_isohunt(search_param)
|
14
40
|
extratorrent = manager.search_extratorrent(search_param)
|
15
|
-
|
41
|
+
|
42
|
+
kickass = __sort_result__(kickass)
|
43
|
+
piratebay = __sort_result__(piratebay)
|
44
|
+
isohunt = __sort_result__(isohunt)
|
45
|
+
extratorrent = __sort_result__(extratorrent)
|
46
|
+
|
47
|
+
[kickass.last, piratebay.last, isohunt.last, extratorrent.last]
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.__sort_result__(result)
|
51
|
+
result.sort_by { |e| [e.seeders.to_i, e.leechers.to_i] }
|
16
52
|
end
|
17
53
|
|
18
54
|
def self.imdb_watchlist(userid)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require_relative '../../test_helper'
|
3
|
+
|
4
|
+
require_relative '../../../lib/manager/sites/extratorrent_parser'
|
5
|
+
require_relative '../../../lib/manager/mechanize_manager'
|
6
|
+
|
7
|
+
# Tests for kickass
|
8
|
+
class TestExtratorrentClass < Test::Unit::TestCase
|
9
|
+
def test_connection_to_site
|
10
|
+
search_term = 'a pigeon sat on a branch reflecting on existence'
|
11
|
+
|
12
|
+
result = []
|
13
|
+
|
14
|
+
assert_nothing_raised do
|
15
|
+
result = MechanizeManager.new.search_extratorrent(search_term)
|
16
|
+
end
|
17
|
+
|
18
|
+
assert_not_nil result
|
19
|
+
assert_false result.empty?
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require_relative '../../test_helper'
|
3
|
+
|
4
|
+
require_relative '../../../lib/manager/sites/isohunt_parser'
|
5
|
+
require_relative '../../../lib/manager/mechanize_manager'
|
6
|
+
|
7
|
+
# Tests for kickass
|
8
|
+
class TestIsohuntClass < Test::Unit::TestCase
|
9
|
+
def test_connection
|
10
|
+
url = IsohuntParser::Parser::BASEURL
|
11
|
+
|
12
|
+
assert_nothing_raised do
|
13
|
+
MechanizeManager::Agent.get_web_page(url)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_connection_to_site
|
18
|
+
search_term = 'a pigeon sat on a branch reflecting on existence'
|
19
|
+
|
20
|
+
result = []
|
21
|
+
|
22
|
+
assert_nothing_raised do
|
23
|
+
result = MechanizeManager.new.search_isohunt(search_term)
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_not_nil result
|
27
|
+
assert_false result.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_no_result
|
31
|
+
search_term = 'asdasdasdasdasdasd'
|
32
|
+
|
33
|
+
result = []
|
34
|
+
|
35
|
+
assert_nothing_raised do
|
36
|
+
result = MechanizeManager.new.search_isohunt(search_term)
|
37
|
+
end
|
38
|
+
|
39
|
+
assert_true result.empty?
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require_relative '../../test_helper'
|
3
|
+
|
4
|
+
require_relative '../../../lib/manager/sites/kickass_parser'
|
5
|
+
require_relative '../../../lib/manager/mechanize_manager'
|
6
|
+
|
7
|
+
# Tests for kickass
|
8
|
+
class TestKickassClass < Test::Unit::TestCase
|
9
|
+
def test_connection
|
10
|
+
url = KickassParser::Parser::BASEURL
|
11
|
+
|
12
|
+
assert_nothing_raised do
|
13
|
+
MechanizeManager::Agent.get_web_page(url)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_connection_to_site
|
18
|
+
search_term = 'a pigeon sat on a branch reflecting on existence'
|
19
|
+
|
20
|
+
result = []
|
21
|
+
|
22
|
+
assert_nothing_raised do
|
23
|
+
result = MechanizeManager.new.search_kickass(search_term)
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_not_nil result
|
27
|
+
assert_false result.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_no_result
|
31
|
+
search_term = 'asdasdasdasdasdasd'
|
32
|
+
|
33
|
+
result = []
|
34
|
+
|
35
|
+
assert_nothing_raised do
|
36
|
+
result = MechanizeManager.new.search_kickass(search_term)
|
37
|
+
end
|
38
|
+
|
39
|
+
assert_true result.empty?
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require_relative '../../test_helper'
|
3
|
+
|
4
|
+
require_relative '../../../lib/manager/sites/piratebay_parser'
|
5
|
+
require_relative '../../../lib/manager/mechanize_manager'
|
6
|
+
|
7
|
+
# Tests for kickass
|
8
|
+
class TestPirateBayClass < Test::Unit::TestCase
|
9
|
+
def test_connection
|
10
|
+
url = PirateBayParser::Parser::BASEURL
|
11
|
+
|
12
|
+
assert_nothing_raised do
|
13
|
+
MechanizeManager::Agent.get_web_page(url)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_search_site
|
18
|
+
search_term = 'a pigeon sat on a branch reflecting on existence'
|
19
|
+
|
20
|
+
result = []
|
21
|
+
|
22
|
+
assert_nothing_raised do
|
23
|
+
result = MechanizeManager.new.search_piratebay(search_term)
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_not_nil result
|
27
|
+
assert_false result.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_no_result
|
31
|
+
search_term = 'asdasdasdasdasdasd'
|
32
|
+
|
33
|
+
result = []
|
34
|
+
|
35
|
+
assert_nothing_raised do
|
36
|
+
result = MechanizeManager.new.search_piratebay(search_term)
|
37
|
+
end
|
38
|
+
|
39
|
+
assert_true result.empty?
|
40
|
+
end
|
41
|
+
end
|
@@ -6,7 +6,7 @@ require_relative '../../../lib/manager/mechanize_manager'
|
|
6
6
|
|
7
7
|
# Tests for kickass
|
8
8
|
class TestExtratorrentClass < Test::Unit::TestCase
|
9
|
-
def
|
9
|
+
def ignore_test_main_divs
|
10
10
|
search_term = 'a pigeon sat on a branch reflecting on existence'
|
11
11
|
|
12
12
|
mock_request
|
@@ -0,0 +1,52 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
require_relative '../test_helper'
|
3
|
+
|
4
|
+
require_relative '../../lib/torrentify'
|
5
|
+
|
6
|
+
# Tests for kickass
|
7
|
+
class TestTorrentifyClass < Test::Unit::TestCase
|
8
|
+
def test_search_all_return_best
|
9
|
+
search_term = 'a pigeon sat on a branch reflecting on existence'
|
10
|
+
|
11
|
+
mock_piratebay
|
12
|
+
mock_kickass
|
13
|
+
mock_isohunt
|
14
|
+
mock_extratorrent
|
15
|
+
|
16
|
+
result = Torrentify.search_all_return_best(search_term)
|
17
|
+
|
18
|
+
result.each do |item|
|
19
|
+
puts item
|
20
|
+
end
|
21
|
+
assert_not_nil result
|
22
|
+
assert_false result.empty?
|
23
|
+
end
|
24
|
+
|
25
|
+
def mock_piratebay
|
26
|
+
file_path = 'sites/test_data/piratebay_mock_response.html'
|
27
|
+
mock_data = File.read(File.join(__dir__, file_path))
|
28
|
+
WebMock.stub_request(:get, 'https://thepiratebay.mn/search/a%20pigeon%20sat%20on%20a%20branch%20reflecting%20on%20existence')
|
29
|
+
.to_return(:status => 200, :body => mock_data, :headers => {})
|
30
|
+
end
|
31
|
+
|
32
|
+
def mock_kickass
|
33
|
+
file_path = 'sites/test_data/kickass_mock_response.html'
|
34
|
+
mock_data = File.read(File.join(__dir__, file_path))
|
35
|
+
WebMock.stub_request(:get, 'https://kat.cr/usearch/a%20pigeon%20sat%20on%20a%20branch%20reflecting%20on%20existence')
|
36
|
+
.to_return(:status => 200, :body => mock_data, :headers => {})
|
37
|
+
end
|
38
|
+
|
39
|
+
def mock_isohunt
|
40
|
+
file_path = 'sites/test_data/isohunt_mock_response.html'
|
41
|
+
mock_data = File.read(File.join(__dir__, file_path))
|
42
|
+
WebMock.stub_request(:get, 'https://isohunt.to/torrents/?ihq=a%20pigeon%20sat%20on%20a%20branch%20reflecting%20on%20existence')
|
43
|
+
.to_return(:status => 200, :body => mock_data, :headers => {})
|
44
|
+
end
|
45
|
+
|
46
|
+
def mock_extratorrent
|
47
|
+
file_path = 'sites/test_data/extratorrent_mock_response.html'
|
48
|
+
mock_data = File.read(File.join(__dir__, file_path))
|
49
|
+
WebMock.stub_request(:get, 'http://extratorrent.cc/search/?search=a%20pigeon%20sat%20on%20a%20branch%20reflecting%20on%20existence')
|
50
|
+
.to_return(:status => 200, :body => mock_data, :headers => {})
|
51
|
+
end
|
52
|
+
end
|
data/torrentify.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'torrentify'
|
7
|
-
spec.version = 0.
|
7
|
+
spec.version = 0.5
|
8
8
|
spec.authors = ['david eriksson']
|
9
9
|
spec.email = ['davideriksson@swedenmail.com']
|
10
10
|
|
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.require_paths = ['lib']
|
27
27
|
|
28
28
|
spec.add_runtime_dependency 'mechanize', '2.7.3'
|
29
|
+
spec.add_runtime_dependency 'typhoeus', '0.8.0'
|
29
30
|
spec.add_development_dependency 'simplecov', '>= 0.7.1', '< 1.0.0'
|
30
31
|
spec.add_development_dependency 'bundler', '~> 1.10.6'
|
31
32
|
spec.add_development_dependency 'rake', '~> 10.4.2'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torrentify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.5'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- david eriksson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.7.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: typhoeus
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.8.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.8.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: simplecov
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,6 +178,11 @@ files:
|
|
164
178
|
- lib/manager/sites/piratebay_parser.rb
|
165
179
|
- lib/model/torrent_model.rb
|
166
180
|
- lib/torrentify.rb
|
181
|
+
- test-integration/manager/sites/extratorrent_test.rb
|
182
|
+
- test-integration/manager/sites/isohunt_test.rb
|
183
|
+
- test-integration/manager/sites/kickass_test.rb
|
184
|
+
- test-integration/manager/sites/piratebay_test.rb
|
185
|
+
- test-integration/test_helper.rb
|
167
186
|
- test/manager/imdb_manager_test.rb
|
168
187
|
- test/manager/sites/extratorrent_parser_test.rb
|
169
188
|
- test/manager/sites/isohunt_parser_test.rb
|
@@ -174,6 +193,7 @@ files:
|
|
174
193
|
- test/manager/sites/test_data/kickass_mock_response.html
|
175
194
|
- test/manager/sites/test_data/piratebay_mock_response.html
|
176
195
|
- test/manager/test_data/imdb_mock_response.html
|
196
|
+
- test/manager/torrentify_test.rb
|
177
197
|
- test/model/torrent_model_test.rb
|
178
198
|
- test/test_helper.rb
|
179
199
|
- torrentify.gemspec
|
@@ -212,5 +232,6 @@ test_files:
|
|
212
232
|
- test/manager/sites/test_data/kickass_mock_response.html
|
213
233
|
- test/manager/sites/test_data/piratebay_mock_response.html
|
214
234
|
- test/manager/test_data/imdb_mock_response.html
|
235
|
+
- test/manager/torrentify_test.rb
|
215
236
|
- test/model/torrent_model_test.rb
|
216
237
|
- test/test_helper.rb
|