apple_epf 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/apple_epf/downloader.rb +15 -4
- data/lib/apple_epf/version.rb +1 -1
- data/spec/lib/apple_epf/downloader_spec.rb +9 -4
- metadata +4 -4
data/lib/apple_epf/downloader.rb
CHANGED
@@ -77,7 +77,16 @@ module AppleEpf
|
|
77
77
|
|
78
78
|
# Return false if no url was suggested or file does not exist
|
79
79
|
raise AppleEpf::DownloaderError.new("Unable to find out what file do you want to download") if path.empty?
|
80
|
-
|
80
|
+
|
81
|
+
unless file_exists?(path)
|
82
|
+
if @type == 'incremental'
|
83
|
+
#force prev week. Apple sometimes put files for Sunday to prev week, not current.
|
84
|
+
path = "#{main_dir_date(true)}/incremental/#{date_of_file}/#{@filename}#{date_of_file}.tbz"
|
85
|
+
raise AppleEpf::FileNotExist.new("File does not exist #{path}") unless file_exists?(path)
|
86
|
+
else
|
87
|
+
raise AppleEpf::FileNotExist.new("File does not exist #{path}")
|
88
|
+
end
|
89
|
+
end
|
81
90
|
|
82
91
|
@apple_filename_full_path = path
|
83
92
|
@apple_filename_full_path
|
@@ -98,10 +107,10 @@ module AppleEpf
|
|
98
107
|
FileUtils.mkpath(dirpath)
|
99
108
|
end
|
100
109
|
|
101
|
-
def main_dir_date
|
110
|
+
def main_dir_date(force_last = false)
|
102
111
|
if @type == "incremental"
|
103
112
|
# from Mon to Thurday dumps are in prev week folder
|
104
|
-
this_or_last = @filedate.wday <= 4 ? 'last' : 'this'
|
113
|
+
this_or_last = @filedate.wday <= 4 || force_last ? 'last' : 'this'
|
105
114
|
elsif @type == "full"
|
106
115
|
# full downloads usually are done only once. user can determine when it should be done
|
107
116
|
this_or_last = 'this'
|
@@ -124,7 +133,9 @@ module AppleEpf
|
|
124
133
|
request = Net::HTTP::Head.new(full_url)
|
125
134
|
request.basic_auth(AppleEpf.apple_id, AppleEpf.apple_password)
|
126
135
|
|
127
|
-
|
136
|
+
r = Net::HTTP.new(uri.host, uri.port)
|
137
|
+
r.use_ssl = true
|
138
|
+
response = r.start { |http| http.request(request) }
|
128
139
|
|
129
140
|
raise AppleEpf::BadCredentialsError.new('Bad credentials') if response.code == "401"
|
130
141
|
|
data/lib/apple_epf/version.rb
CHANGED
@@ -34,9 +34,8 @@ describe AppleEpf::Downloader do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
context "and file does not exists" do
|
37
|
-
let(:file_exists) { false }
|
38
|
-
|
39
37
|
it "should raise exception" do
|
38
|
+
downloader.stub(:file_exists?).and_return(false, false)
|
40
39
|
downloader.filedate = Date.parse('17-01-2013')
|
41
40
|
expect {
|
42
41
|
downloader.get_filename_by_date_and_type
|
@@ -56,12 +55,18 @@ describe AppleEpf::Downloader do
|
|
56
55
|
downloader.filedate = Date.parse('17-01-2013')
|
57
56
|
downloader.get_filename_by_date_and_type.should == "20130109/incremental/20130117/popularity20130117.tbz"
|
58
57
|
end
|
58
|
+
|
59
|
+
|
60
|
+
it "should return valid url if file exists but in prev catalog" do
|
61
|
+
downloader.stub(:file_exists?).and_return(false, true)
|
62
|
+
downloader.filedate = Date.parse('26-04-2013')
|
63
|
+
downloader.get_filename_by_date_and_type.should == "20130417/incremental/20130426/popularity20130426.tbz"
|
64
|
+
end
|
59
65
|
end
|
60
66
|
|
61
67
|
context "and file does not exists" do
|
62
|
-
let(:file_exists) { false }
|
63
|
-
|
64
68
|
it "should raise exception" do
|
69
|
+
downloader.stub(:file_exists?).and_return(false, false)
|
65
70
|
downloader.filedate = Date.parse('17-01-2013')
|
66
71
|
expect {
|
67
72
|
downloader.get_filename_by_date_and_type
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apple_epf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -221,7 +221,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
221
221
|
version: '0'
|
222
222
|
segments:
|
223
223
|
- 0
|
224
|
-
hash:
|
224
|
+
hash: 2270709244037227608
|
225
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
226
226
|
none: false
|
227
227
|
requirements:
|
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
230
|
version: '0'
|
231
231
|
segments:
|
232
232
|
- 0
|
233
|
-
hash:
|
233
|
+
hash: 2270709244037227608
|
234
234
|
requirements: []
|
235
235
|
rubyforge_project:
|
236
236
|
rubygems_version: 1.8.23
|