comer_de_tapas 0.1.3 → 0.2.1
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/LICENSE +1 -1
- data/README.md +2 -2
- data/bin/comer_de_tapas +4 -2
- data/comer_de_tapas.gemspec +11 -11
- data/lib/comer_de_tapas/cli.rb +8 -12
- data/lib/comer_de_tapas/client.rb +74 -65
- data/lib/comer_de_tapas/constants.rb +8 -8
- data/lib/comer_de_tapas/fetcher.rb +3 -3
- data/lib/comer_de_tapas/subscription.rb +10 -10
- data/lib/comer_de_tapas/version.rb +1 -1
- metadata +12 -22
- data/test/cli_test.rb +0 -12
- data/test/client_test.rb +0 -7
- data/test/fetcher_test.rb +0 -7
- data/test/subscription_test.rb +0 -6
- data/test/test_helper.rb +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f6a70e6965493b65379f10034f6643dddce8ba66
|
|
4
|
+
data.tar.gz: b0379d2250f250c9947422445b50dc400d556b96
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1cd96252871165b33c73b88338d7c444f755da59a8bedce3d9d0f96eb9d122284a46d51ca0fd3f80feb8ddfde2d579e77fe8fc1ef6c6dfb976c53d298ccfc81
|
|
7
|
+
data.tar.gz: d21d9b28b70a8379102324d2b3b1d8b3c37f251d8049bbf348e95a5362552e7472c824c53a072808bec50d87f74e107ae26b469803c040886680ab7437794e51
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -5,8 +5,8 @@ Comer de Tapas
|
|
|
5
5
|
[][travis]
|
|
6
6
|
[][gemnasium]
|
|
7
7
|
[][docs]
|
|
8
|
-
[][codeclimate]
|
|
9
|
+
[][coverage]
|
|
10
10
|
|
|
11
11
|
[gem]: https://rubygems.org/gems/comer_de_tapas
|
|
12
12
|
[travis]: https://travis-ci.org/JuanitoFatas/comer_de_tapas
|
data/bin/comer_de_tapas
CHANGED
data/comer_de_tapas.gemspec
CHANGED
|
@@ -5,25 +5,25 @@ require "comer_de_tapas/version"
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "comer_de_tapas"
|
|
8
|
-
spec.version = ComerDeTapas::VERSION
|
|
9
8
|
spec.authors = ["Juanito Fatas"]
|
|
10
9
|
spec.email = ["katehuang0320@gmail.com"]
|
|
10
|
+
|
|
11
|
+
spec.homepage = "https://github.com/juanitofatas/comer_de_tapas"
|
|
11
12
|
spec.summary = %q{Ruby Tapas Episode Downloader.}
|
|
12
13
|
spec.description = spec.summary
|
|
13
|
-
spec.homepage = "https://github.com/juanitofatas/comer_de_tapas"
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
|
16
|
-
spec.files = %w[CONTRIBUTING.md DEVELOPMENT.md LICENSE README.md Rakefile comer_de_tapas.gemspec]
|
|
17
|
-
spec.files += Dir.glob("lib/**/*.rb")
|
|
18
|
-
spec.files += Dir.glob("bin/**/*")
|
|
19
|
-
spec.files += Dir.glob("test/**/*")
|
|
20
|
-
|
|
16
|
+
spec.files = %w[CONTRIBUTING.md DEVELOPMENT.md LICENSE README.md Rakefile comer_de_tapas.gemspec] + Dir["bin/*"] + Dir["lib/**/*.rb"]
|
|
21
17
|
spec.executables = ["comer_de_tapas"]
|
|
22
|
-
spec.
|
|
23
|
-
|
|
18
|
+
spec.require_paths = %w(lib)
|
|
19
|
+
|
|
20
|
+
spec.version = ComerDeTapas::VERSION
|
|
21
|
+
|
|
22
|
+
spec.required_ruby_version = ">= 2.0.0"
|
|
23
|
+
spec.required_rubygems_version = ">= 2.2.2"
|
|
24
24
|
|
|
25
25
|
spec.add_dependency "thor"
|
|
26
|
-
spec.add_dependency "http", ">= 0.
|
|
26
|
+
spec.add_dependency "http", ">= 0.7.3"
|
|
27
27
|
spec.add_dependency "nokogiri"
|
|
28
|
-
spec.add_dependency "celluloid-io"
|
|
28
|
+
spec.add_dependency "celluloid-io", "~> 0.17.0"
|
|
29
29
|
end
|
data/lib/comer_de_tapas/cli.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "thor"
|
|
2
2
|
|
|
3
3
|
module ComerDeTapas
|
|
4
4
|
class CLI < Thor
|
|
@@ -7,28 +7,24 @@ module ComerDeTapas
|
|
|
7
7
|
super
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
desc
|
|
10
|
+
desc "version", "Show version"
|
|
11
11
|
def version
|
|
12
12
|
say VERSION
|
|
13
13
|
end
|
|
14
14
|
map %w[-v --version] => :version
|
|
15
15
|
|
|
16
|
-
desc
|
|
16
|
+
desc "init", "Create config folder and files"
|
|
17
17
|
def init
|
|
18
18
|
@client.init!
|
|
19
|
-
say
|
|
20
|
-
say
|
|
19
|
+
say "Please fill in your subscription info in ~/.rubytapas/.credentials."
|
|
20
|
+
say "When you finished, type `comer_de_tapas download` to download."
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# -f, --force, options[:force] => true, otherwise nil.
|
|
24
|
-
desc
|
|
25
|
-
method_option
|
|
24
|
+
desc "download", "Download RubyTapas episodes"
|
|
25
|
+
method_option "force", :aliases => "-f", type: :boolean, desc: "Force download."
|
|
26
26
|
def download
|
|
27
|
-
@client.
|
|
28
|
-
@client.prepare_save_folder!
|
|
29
|
-
@client.authenticate
|
|
30
|
-
@client.load_episodes
|
|
31
|
-
@client.download_all_tapas!
|
|
27
|
+
@client.download(force: options[:force])
|
|
32
28
|
end
|
|
33
29
|
end
|
|
34
30
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
1
|
+
require "http"
|
|
2
|
+
require "json"
|
|
3
|
+
require "pathname"
|
|
4
|
+
require "fileutils"
|
|
5
5
|
|
|
6
6
|
module ComerDeTapas
|
|
7
7
|
class Client
|
|
@@ -11,78 +11,87 @@ module ComerDeTapas
|
|
|
11
11
|
# $ touch ~/.rubytapas/.credentials
|
|
12
12
|
def init!
|
|
13
13
|
if RUBYTAPAS_DIR.exist? && CREDENTIAL_FILE.exist?
|
|
14
|
-
abort
|
|
14
|
+
abort "Credentials found. type `comer_de_tapas download` to download."
|
|
15
15
|
end
|
|
16
16
|
create_rubytapas_files!
|
|
17
|
-
puts
|
|
17
|
+
puts "~/.rubytapas/.credentials folder and file has been created."
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if get_feed_with_basic_auth
|
|
27
|
-
save_feed_data parse_xml_feed
|
|
28
|
-
puts 'Episodes successfully fetched and saved.'
|
|
29
|
-
end
|
|
20
|
+
def download(force: false)
|
|
21
|
+
fetch_episodes!(force)
|
|
22
|
+
prepare_save_folder!
|
|
23
|
+
authenticate
|
|
24
|
+
load_episodes
|
|
25
|
+
download_all_tapas!
|
|
30
26
|
end
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
def prepare_save_folder!
|
|
34
|
-
return puts "#{save_folder} found." if save_folder.exist?
|
|
28
|
+
private
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
# Fetch latest feed on rubytapas.dpdcart.com
|
|
31
|
+
# Parse it to episode, save episodes data as json to ~/.rubytapas.json
|
|
32
|
+
def fetch_episodes! force=false
|
|
33
|
+
return puts "Use cached episode data." if fresh? && !force
|
|
39
34
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
puts "Force fetching. Getting latest Ruby Tapas..." if force
|
|
36
|
+
puts "Fetching episodes..."
|
|
37
|
+
if get_feed_with_basic_auth
|
|
38
|
+
save_feed_data parse_xml_feed
|
|
39
|
+
puts "Episodes successfully fetched and saved."
|
|
40
|
+
end
|
|
41
|
+
end
|
|
44
42
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
end
|
|
43
|
+
# Create user specified folder: credentials[:save_path]
|
|
44
|
+
def prepare_save_folder!
|
|
45
|
+
return puts "#{save_folder} found." if save_folder.exist?
|
|
49
46
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
save_folder.mkpath
|
|
48
|
+
puts "#{save_folder} created."
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# User spefified folder to save episodes.
|
|
52
|
+
# @return [Pathname]
|
|
53
|
+
def save_folder
|
|
54
|
+
Pathname(credentials[:save_path]).expand_path
|
|
55
|
+
end
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
FileUtils.cd(save_folder) do
|
|
61
|
-
episode_title = episode['title']
|
|
62
|
-
puts "Downloading Epsiode #{episode_title}..."
|
|
57
|
+
# Authenticate and return Cookie
|
|
58
|
+
def authenticate
|
|
59
|
+
@cookie ||= HTTP.post(LOGIN_URL, form_params).headers["Set-Cookie"]
|
|
60
|
+
end
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
# Load episodes json from EPISODES_JSON_FILE
|
|
63
|
+
def load_episodes
|
|
64
|
+
@episodes ||= JSON.parse(EPISODES_JSON_FILE.read)
|
|
65
|
+
end
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
# Download episode in parallel using Actors
|
|
68
|
+
# Powered by Celluloid::IO
|
|
69
|
+
def download_all_tapas!
|
|
70
|
+
episodes.each do |episode|
|
|
71
|
+
FileUtils.cd(save_folder) do
|
|
72
|
+
episode_title = episode["title"]
|
|
73
|
+
puts "Downloading Epsiode #{episode_title}..."
|
|
67
74
|
|
|
68
|
-
|
|
69
|
-
fetcher = Fetcher.new
|
|
70
|
-
file_and_links = episode['links']
|
|
71
|
-
downloadables = find_downloadables file_and_links, fetcher
|
|
75
|
+
episode_folder = save_folder.join(sanitized episode_title)
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
FileUtils.mkdir_p episode_folder unless episode_folder.exist?
|
|
78
|
+
|
|
79
|
+
FileUtils.cd episode_folder do
|
|
80
|
+
fetcher = Fetcher.new
|
|
81
|
+
file_and_links = episode["links"]
|
|
82
|
+
downloadables = find_downloadables file_and_links, fetcher
|
|
77
83
|
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
if downloadables.all? &:nil?
|
|
85
|
+
puts "Already downloaded, skip."
|
|
86
|
+
next
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
download_parallelly! downloadables
|
|
90
|
+
puts "Episode #{episode_title} content all saved."
|
|
91
|
+
end
|
|
80
92
|
end
|
|
81
93
|
end
|
|
82
94
|
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
private
|
|
86
95
|
|
|
87
96
|
attr_reader :feed_xml, :cookie, :episodes
|
|
88
97
|
|
|
@@ -102,14 +111,14 @@ module ComerDeTapas
|
|
|
102
111
|
# @param [Array] file_and_links
|
|
103
112
|
def find_downloadables file_and_links, fetcher
|
|
104
113
|
file_and_links.map do |file_and_link|
|
|
105
|
-
file_name = file_and_link[
|
|
114
|
+
file_name = file_and_link["filename"]
|
|
106
115
|
|
|
107
116
|
# mp4 less than 3MB considered as unfinished. Redownload it.
|
|
108
117
|
FileUtils.rm file_name if small_mp4? file_name
|
|
109
118
|
|
|
110
119
|
next if File.exist? file_name
|
|
111
120
|
|
|
112
|
-
q, v = file_and_link[
|
|
121
|
+
q, v = file_and_link["link"].split("?").last.split("=")
|
|
113
122
|
[file_name, fetcher.future.fetch(DOWNLOAD_URL, cookie, { q => v })]
|
|
114
123
|
end
|
|
115
124
|
end
|
|
@@ -117,7 +126,7 @@ module ComerDeTapas
|
|
|
117
126
|
# Return true if file is a mp4 and its size less than 3MB.
|
|
118
127
|
def small_mp4?(file)
|
|
119
128
|
return false unless File.exist? file
|
|
120
|
-
File.size(file) < 3*1024*1024 && File.extname(file) ==
|
|
129
|
+
File.size(file) < 3*1024*1024 && File.extname(file) == ".mp4"
|
|
121
130
|
end
|
|
122
131
|
|
|
123
132
|
# mkdir -p ~/.rubytapas
|
|
@@ -130,21 +139,21 @@ module ComerDeTapas
|
|
|
130
139
|
|
|
131
140
|
# Use to create empty credential file
|
|
132
141
|
def credential_template
|
|
133
|
-
require
|
|
142
|
+
require "yaml"
|
|
134
143
|
{"credentials"=>[{"email"=>nil}, {"password"=>nil}, {"save_path"=>nil}]}.to_yaml
|
|
135
144
|
end
|
|
136
145
|
|
|
137
146
|
# Get raw feed data (XML), RSS
|
|
138
147
|
def get_feed_with_basic_auth
|
|
139
|
-
puts
|
|
140
|
-
response = HTTP.auth(:basic, authenticate_params).get(FEED_URL).
|
|
148
|
+
puts "Authorizing..."
|
|
149
|
+
response = HTTP.auth(:basic, authenticate_params).get(FEED_URL).to_s
|
|
141
150
|
|
|
142
151
|
if response.empty?
|
|
143
152
|
abort "Authroized failed. Please check your email & password in #{CREDENTIAL_FILE}"
|
|
144
153
|
end
|
|
145
154
|
|
|
146
155
|
if @feed_xml = response
|
|
147
|
-
puts
|
|
156
|
+
puts "Authroized."
|
|
148
157
|
return true
|
|
149
158
|
end
|
|
150
159
|
end
|
|
@@ -185,7 +194,7 @@ module ComerDeTapas
|
|
|
185
194
|
end
|
|
186
195
|
|
|
187
196
|
# Given links, parse to
|
|
188
|
-
# { filename:
|
|
197
|
+
# { filename: '123.rb', '/subscriber/download?file_id=34567' }
|
|
189
198
|
# @return [Array<Hash>]
|
|
190
199
|
def attachments links
|
|
191
200
|
links.each_with_object([]) do |link, episode|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "pathname"
|
|
2
2
|
|
|
3
3
|
module ComerDeTapas
|
|
4
|
-
BASE_URL =
|
|
5
|
-
DOWNLOAD_URL = BASE_URL +
|
|
6
|
-
LOGIN_URL = BASE_URL +
|
|
7
|
-
FEED_URL = BASE_URL +
|
|
4
|
+
BASE_URL = "https://rubytapas.dpdcart.com"
|
|
5
|
+
DOWNLOAD_URL = BASE_URL + "/subscriber/download"
|
|
6
|
+
LOGIN_URL = BASE_URL + "/subscriber/login"
|
|
7
|
+
FEED_URL = BASE_URL + "/feed"
|
|
8
8
|
|
|
9
|
-
RUBYTAPAS_DIR = Pathname.new(ENV[
|
|
10
|
-
EPISODES_JSON_FILE = RUBYTAPAS_DIR.join(
|
|
11
|
-
CREDENTIAL_FILE = RUBYTAPAS_DIR.join(
|
|
9
|
+
RUBYTAPAS_DIR = Pathname.new(ENV["HOME"]).join(".rubytapas")
|
|
10
|
+
EPISODES_JSON_FILE = RUBYTAPAS_DIR.join("episodes.json")
|
|
11
|
+
CREDENTIAL_FILE = RUBYTAPAS_DIR.join(".credentials")
|
|
12
12
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "celluloid/io"
|
|
2
2
|
|
|
3
3
|
module ComerDeTapas
|
|
4
4
|
class Fetcher
|
|
@@ -9,8 +9,8 @@ module ComerDeTapas
|
|
|
9
9
|
# @param cookie
|
|
10
10
|
# @option query [Hash]
|
|
11
11
|
def fetch url, cookie, query={}
|
|
12
|
-
require
|
|
13
|
-
HTTP.with(
|
|
12
|
+
require "http"
|
|
13
|
+
HTTP.with("Cookie" => cookie).get(url, ssl_socket_class: Celluloid::IO::SSLSocket, params: query)
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -3,12 +3,12 @@ module ComerDeTapas
|
|
|
3
3
|
KEYS = %w(email password save_path)
|
|
4
4
|
|
|
5
5
|
def initialize
|
|
6
|
-
abort
|
|
6
|
+
abort "Please run `comer_de_tapas init` first" unless CREDENTIAL_FILE.exist?
|
|
7
7
|
|
|
8
8
|
set_subscription_data if subscription_data_valid?
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
# @return [Hash] User
|
|
11
|
+
# @return [Hash] User"s Ruby Tapas credential information
|
|
12
12
|
def to_h
|
|
13
13
|
{ email: email, password: password, save_path: save_path }
|
|
14
14
|
end
|
|
@@ -19,17 +19,17 @@ module ComerDeTapas
|
|
|
19
19
|
|
|
20
20
|
# Load ~/.rubytapas/.credentials yaml
|
|
21
21
|
def load_credential_data
|
|
22
|
-
require
|
|
23
|
-
@credential_yaml ||= YAML.
|
|
22
|
+
require "yaml"
|
|
23
|
+
@credential_yaml ||= YAML.load CREDENTIAL_FILE.read
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# Return true if ~/.rubytapas/.credentials files are filled and correct.
|
|
27
27
|
# @return [Boolen]
|
|
28
28
|
def subscription_data_valid?
|
|
29
|
-
# empty credential file
|
|
29
|
+
# empty credential file"s size is about 50-55.
|
|
30
30
|
# 65 is when you have a very short email, password, and save_path.
|
|
31
31
|
# So when you filled in data, probably will > 65.
|
|
32
|
-
if
|
|
32
|
+
if CREDENTIAL_FILE.size < 65
|
|
33
33
|
abort "Did you fill in your subscription data in #{CREDENTIAL_FILE}?"
|
|
34
34
|
return false
|
|
35
35
|
end
|
|
@@ -44,7 +44,7 @@ module ComerDeTapas
|
|
|
44
44
|
hash.each do |k,v|
|
|
45
45
|
abort <<-MSG unless KEYS.include? k
|
|
46
46
|
Probably have a typo in #{CREDENTIAL_FILE}: #{k}
|
|
47
|
-
Valid yaml keys: #{KEYS.join(
|
|
47
|
+
Valid yaml keys: #{KEYS.join(", ")}.
|
|
48
48
|
MSG
|
|
49
49
|
abort "Please fill in #{k} in #{CREDENTIAL_FILE}" unless v
|
|
50
50
|
end
|
|
@@ -60,9 +60,9 @@ Valid yaml keys: #{KEYS.join(', ')}.
|
|
|
60
60
|
|
|
61
61
|
# Set subscription data from ~/.rubytapas/.credentials yaml
|
|
62
62
|
def set_subscription_data
|
|
63
|
-
@email ||= load_credential_data[
|
|
64
|
-
@password ||= load_credential_data[
|
|
65
|
-
@save_path ||= load_credential_data[
|
|
63
|
+
@email ||= load_credential_data["credentials"][0]["email"]
|
|
64
|
+
@password ||= load_credential_data["credentials"][1]["password"]
|
|
65
|
+
@save_path ||= load_credential_data["credentials"][2]["save_path"]
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: comer_de_tapas
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Juanito Fatas
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 0.7.3
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 0.7.3
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: nokogiri
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -56,16 +56,16 @@ dependencies:
|
|
|
56
56
|
name: celluloid-io
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 0.17.0
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: 0.17.0
|
|
69
69
|
description: Ruby Tapas Episode Downloader.
|
|
70
70
|
email:
|
|
71
71
|
- katehuang0320@gmail.com
|
|
@@ -88,11 +88,6 @@ files:
|
|
|
88
88
|
- lib/comer_de_tapas/fetcher.rb
|
|
89
89
|
- lib/comer_de_tapas/subscription.rb
|
|
90
90
|
- lib/comer_de_tapas/version.rb
|
|
91
|
-
- test/cli_test.rb
|
|
92
|
-
- test/client_test.rb
|
|
93
|
-
- test/fetcher_test.rb
|
|
94
|
-
- test/subscription_test.rb
|
|
95
|
-
- test/test_helper.rb
|
|
96
91
|
homepage: https://github.com/juanitofatas/comer_de_tapas
|
|
97
92
|
licenses:
|
|
98
93
|
- MIT
|
|
@@ -105,22 +100,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
105
100
|
requirements:
|
|
106
101
|
- - ">="
|
|
107
102
|
- !ruby/object:Gem::Version
|
|
108
|
-
version:
|
|
103
|
+
version: 2.0.0
|
|
109
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
105
|
requirements:
|
|
111
106
|
- - ">="
|
|
112
107
|
- !ruby/object:Gem::Version
|
|
113
|
-
version:
|
|
108
|
+
version: 2.2.2
|
|
114
109
|
requirements: []
|
|
115
110
|
rubyforge_project:
|
|
116
|
-
rubygems_version: 2.
|
|
111
|
+
rubygems_version: 2.4.8
|
|
117
112
|
signing_key:
|
|
118
113
|
specification_version: 4
|
|
119
114
|
summary: Ruby Tapas Episode Downloader.
|
|
120
|
-
test_files:
|
|
121
|
-
- test/cli_test.rb
|
|
122
|
-
- test/client_test.rb
|
|
123
|
-
- test/fetcher_test.rb
|
|
124
|
-
- test/subscription_test.rb
|
|
125
|
-
- test/test_helper.rb
|
|
115
|
+
test_files: []
|
|
126
116
|
has_rdoc:
|
data/test/cli_test.rb
DELETED
data/test/client_test.rb
DELETED
data/test/fetcher_test.rb
DELETED
data/test/subscription_test.rb
DELETED
data/test/test_helper.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require_relative '../lib/comer_de_tapas'
|
|
2
|
-
|
|
3
|
-
require 'codeclimate-test-reporter'
|
|
4
|
-
CodeClimate::TestReporter.start
|
|
5
|
-
|
|
6
|
-
# ensures using the gem, and not the built-in.
|
|
7
|
-
gem 'minitest'
|
|
8
|
-
require 'minitest/autorun'
|
|
9
|
-
|
|
10
|
-
module ComerDeTapas
|
|
11
|
-
class Test < Minitest::Test
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|