establish 0.0.21 → 0.0.22
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/Gemfile.lock +2 -0
- data/establish.gemspec +1 -0
- data/lib/establish/itunes_transporter.rb +69 -0
- data/lib/establish/version.rb +1 -1
- data/lib/establish.rb +1 -0
- data/spec/itunes_search_api_spec.rb +1 -1
- data/spec/itunes_transporter_spec.rb +26 -0
- metadata +18 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56fb735050c9180935b7240f2dc5c9df0361dd4a401375050385c5907d44ab22
|
4
|
+
data.tar.gz: 84f69a19579d76a71cb17edf51721354d3535655df2691abbc62cfba56346485
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b98147df552d896c5e3bf872136c1fa12f82afe7c3db4e05e04e6dfd22233b2f2b9619b0eb2dfff5bb49f2549593909f8d007496fb70915a7f3f17ea47643489
|
7
|
+
data.tar.gz: 220f3049b1792f88663f39c1974d3db7772df7464d716108ed65b833752e6a2fcf9a230e99ff15491ec664cb6411ab9881ef0f4f12a78e8dfa0793e92f1f1178
|
data/Gemfile.lock
CHANGED
@@ -3,6 +3,7 @@ PATH
|
|
3
3
|
specs:
|
4
4
|
establish (0.0.1)
|
5
5
|
capybara
|
6
|
+
highline
|
6
7
|
poltergeist
|
7
8
|
security
|
8
9
|
|
@@ -18,6 +19,7 @@ GEM
|
|
18
19
|
cliver (0.3.2)
|
19
20
|
coderay (1.1.0)
|
20
21
|
diff-lcs (1.2.5)
|
22
|
+
highline (1.6.21)
|
21
23
|
method_source (0.8.2)
|
22
24
|
mime-types (2.3)
|
23
25
|
mini_portile (0.6.0)
|
data/establish.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency "capybara"
|
24
24
|
spec.add_dependency "poltergeist"
|
25
25
|
spec.add_dependency "security" # Mac OS Keychain manager
|
26
|
+
spec.add_dependency 'highline'
|
26
27
|
|
27
28
|
spec.add_development_dependency "bundler", "~> 1.6"
|
28
29
|
spec.add_development_dependency "rake"
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'pty'
|
2
|
+
|
3
|
+
require 'establish/password_manager'
|
4
|
+
|
5
|
+
|
6
|
+
module Establish
|
7
|
+
class ItunesTransporter
|
8
|
+
ERROR_REGEX = />\s*ERROR:\s+(.+)/
|
9
|
+
WARNING_REGEX = />\s*WARN:\s+(.+)/
|
10
|
+
OUTPUT_REGEX = />\s+(.+)/
|
11
|
+
|
12
|
+
def initialize(user = nil, password = nil)
|
13
|
+
@user = (user || PasswordManager.new.username)
|
14
|
+
@password = (password || PasswordManager.new.password)
|
15
|
+
end
|
16
|
+
|
17
|
+
def download(app)
|
18
|
+
raise "No valid Establish::App given" unless app.kind_of?Establish::App
|
19
|
+
|
20
|
+
command = build_download_command(@user, @password, app.apple_id)
|
21
|
+
Helper.log.debug command
|
22
|
+
|
23
|
+
self.execute_transporter(command)
|
24
|
+
end
|
25
|
+
|
26
|
+
def execute_transporter(command)
|
27
|
+
# Taken from https://github.sshaw/itunes_store_transporter/blob/master/lib/itunes/store/transporter/output_parser.rb
|
28
|
+
|
29
|
+
errors = []
|
30
|
+
warnings = []
|
31
|
+
|
32
|
+
begin
|
33
|
+
PTY.spawn(command) do |stdin, stdout, pid|
|
34
|
+
stdin.each do |line|
|
35
|
+
if line =~ ERROR_REGEX
|
36
|
+
errors << $1
|
37
|
+
elsif line =~ WARNING_REGEX
|
38
|
+
warnings << $1
|
39
|
+
end
|
40
|
+
|
41
|
+
if line =~ OUTPUT_REGEX
|
42
|
+
# General logging for debug purposes
|
43
|
+
Helper.log.debug "[Transporter Output]: #{$1}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
rescue Exception => ex
|
48
|
+
Helper.log.fatal(ex.to_s)
|
49
|
+
errors << ex.to_s
|
50
|
+
end
|
51
|
+
|
52
|
+
raise errors.join("\n") if errors.count > 0
|
53
|
+
true
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def build_download_command(username, password, apple_id, destination = "/tmp")
|
58
|
+
[
|
59
|
+
Helper.transporter_path,
|
60
|
+
"-m lookupMetadata",
|
61
|
+
"-u \"#{useername}\"",
|
62
|
+
"-p '#{password.gsub('$', '\\$')}'",
|
63
|
+
"-apple_id #{apple_id}",
|
64
|
+
"-destination '#{destination}'"
|
65
|
+
].join(' ')
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
data/lib/establish/version.rb
CHANGED
data/lib/establish.rb
CHANGED
@@ -3,7 +3,7 @@ describe Establish do
|
|
3
3
|
it "returns nil when it could not be found" do
|
4
4
|
Establish::ItunesSearchApi.fetch("invalid").should eq(nil)
|
5
5
|
Establish::ItunesSearchApi.fetch("").should eq(nil)
|
6
|
-
Establish::ItunesSearchApi.fetch(
|
6
|
+
Establish::ItunesSearchApi.fetch(0).should eq(nil)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "returns the actual object if it could be found" do
|
@@ -0,0 +1,26 @@
|
|
1
|
+
describe Establish do
|
2
|
+
describe Establish::ItunesTransporter, new: true do
|
3
|
+
before do
|
4
|
+
@app = Establish::App.new(284882215, 'com.facebook.Facebook')
|
5
|
+
end
|
6
|
+
|
7
|
+
describe "#download" do
|
8
|
+
it "throws an exception when invalid parameter is given" do
|
9
|
+
except {
|
10
|
+
Establish::ItunesTransporter.new.download(123)
|
11
|
+
}.to raise_error "No valid Establish::App given"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "downloads the package" do
|
15
|
+
exception {
|
16
|
+
Establish::ItunesTransporter.new("email@email.com", "login").download(@app).should eq(true)
|
17
|
+
}.to raise_error(/.*This Apple ID has been locked for security reasons.*/)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "works with correct inputs" do
|
21
|
+
@app.apple_id = 794902327
|
22
|
+
Establish::ItunesTransporter.new.download(@app).should eq(true)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: establish
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincenzo Fehring
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: highline
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,12 +143,14 @@ files:
|
|
129
143
|
- lib/establish/helper.rb
|
130
144
|
- lib/establish/itunes_connect.rb
|
131
145
|
- lib/establish/itunes_search_api.rb
|
146
|
+
- lib/establish/itunes_transporter.rb
|
132
147
|
- lib/establish/password_manager.rb
|
133
148
|
- lib/establish/version.rb
|
134
149
|
- spec/app_spec.rb
|
135
150
|
- spec/helper_spec.rb
|
136
151
|
- spec/itunes_connect_spec.rb
|
137
152
|
- spec/itunes_search_api_spec.rb
|
153
|
+
- spec/itunes_transporter_spec.rb
|
138
154
|
- spec/password_manager_spec.rb
|
139
155
|
- spec/spec_helper.rb
|
140
156
|
- tasks/rspec.rake
|
@@ -166,5 +182,6 @@ test_files:
|
|
166
182
|
- spec/helper_spec.rb
|
167
183
|
- spec/itunes_connect_spec.rb
|
168
184
|
- spec/itunes_search_api_spec.rb
|
185
|
+
- spec/itunes_transporter_spec.rb
|
169
186
|
- spec/password_manager_spec.rb
|
170
187
|
- spec/spec_helper.rb
|