apple_epf 1.2.0 → 1.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.
data/lib/apple_epf.rb CHANGED
@@ -6,11 +6,13 @@ require 'core_ext/module'
6
6
  require 'apple_epf/errors'
7
7
  require 'apple_epf/logging'
8
8
  require 'apple_epf/main'
9
+ require 'apple_epf/finder'
9
10
  require 'apple_epf/download_processor'
10
11
  require 'apple_epf/downloader'
11
12
  require 'apple_epf/extractor'
12
13
  require 'apple_epf/parser'
13
14
 
15
+
14
16
  module AppleEpf
15
17
  FILE_TYPES = %w( full incremental )
16
18
 
@@ -6,6 +6,8 @@ require 'digest/md5'
6
6
  module AppleEpf
7
7
  class Downloader
8
8
  include AppleEpf::Logging
9
+ include AppleEpf::Finder
10
+
9
11
  ITUNES_FLAT_FEED_URL = 'https://feeds.itunes.apple.com/feeds/epf/v3/full'.freeze
10
12
 
11
13
  attr_accessor :type, :filename, :filedate, :force_url
@@ -62,11 +64,13 @@ module AppleEpf
62
64
  # Return false if no url was suggested or file does not exist
63
65
  raise AppleEpf::DownloaderError.new("Unable to find out what file do you want to download") if path.empty?
64
66
 
65
- unless file_exists?(path)
67
+ _full_url = apple_filename_full_url(path)
68
+ unless file_exists?(_full_url)
66
69
  if @type == 'incremental'
67
70
  #force prev week. Apple sometimes put files for Sunday to prev week, not current.
68
71
  path = "#{main_dir_date(true)}/incremental/#{date_of_file}/#{@filename}#{date_of_file}.tbz"
69
- raise AppleEpf::FileNotExist.new("File does not exist #{path}") unless file_exists?(path)
72
+ _full_url = apple_filename_full_url(path)
73
+ raise AppleEpf::FileNotExist.new("File does not exist #{path}") unless file_exists?(_full_url)
70
74
  else
71
75
  raise AppleEpf::FileNotExist.new("File does not exist #{path}")
72
76
  end
@@ -103,27 +107,5 @@ module AppleEpf
103
107
  main_folder_date = Chronic.parse("#{this_or_last} week wednesday", :now => @filedate.to_time).to_date
104
108
  date_to_epf_format(main_folder_date)
105
109
  end
106
-
107
- def date_to_epf_format(date)
108
- date.strftime("%Y%m%d")
109
- end
110
-
111
- def file_exists?(path_to_check)
112
- full_url = apple_filename_full_url(path_to_check)
113
- logger_info "Checking file at URL: #{full_url}"
114
-
115
- uri = URI.parse(full_url)
116
-
117
- request = Net::HTTP::Head.new(full_url)
118
- request.basic_auth(AppleEpf.apple_id, AppleEpf.apple_password)
119
-
120
- r = Net::HTTP.new(uri.host, uri.port)
121
- r.use_ssl = true
122
- response = r.start { |http| http.request(request) }
123
-
124
- raise AppleEpf::BadCredentialsError.new('Bad credentials') if response.code == "401"
125
-
126
- response.code == "200"
127
- end
128
110
  end
129
111
  end
@@ -0,0 +1,85 @@
1
+ module AppleEpf
2
+ module Finder
3
+ extend self
4
+ ITUNES_FULL_URL = "https://feeds.itunes.apple.com/feeds/epf/v3/full/".freeze
5
+ ITUNES_INCREMENTAL_URL = "https://feeds.itunes.apple.com/feeds/epf/v3/full/%s/incremental/".freeze
6
+
7
+ # AppleEpf::Finder.find_incremental(Date.parse('20140311'), 'popularity')
8
+ # => "https://feeds.itunes.apple.com/feeds/epf/v3/full/20140305/incremental/20140311/popularity20140311.tbz"
9
+ def find_incremental(date, filename)
10
+ all_weeks = get_weekly_folders_from_full_url
11
+ potential_dates = detect_closest_weeks_for_date(all_weeks, date)
12
+ founded_url = nil
13
+ potential_dates.reverse.each do |potential|
14
+ found = week_include_date?(potential, date)
15
+ if found
16
+ _founded_url = (ITUNES_INCREMENTAL_URL % potential) + date_to_epf_format(date) +
17
+ "/" + "#{filename}#{date_to_epf_format(date)}.tbz"
18
+ founded_url = _founded_url if file_exists?(_founded_url)
19
+ break if founded_url
20
+ end
21
+ end
22
+
23
+ founded_url
24
+ end
25
+
26
+ #daily_date is Date object
27
+ def week_include_date?(week_date, daily_date)
28
+ dates = get_daily_incremental_folders_within_week_url(week_date)
29
+ dates.detect{|d| Date.parse(d) == daily_date}
30
+ end
31
+
32
+ #date is Date object
33
+ def detect_closest_weeks_for_date(all_weeks, date)
34
+ date_range = ((date - 16)..(date + 16)).to_a
35
+ all_weeks.select{|d| date_range.include?(Date.parse(d))}
36
+ end
37
+
38
+ def get_daily_incremental_folders_within_week_url(week_folder)
39
+ url = ITUNES_INCREMENTAL_URL % week_folder
40
+ get_folders_from_url(url)
41
+ end
42
+
43
+ def get_weekly_folders_from_full_url
44
+ get_folders_from_url(ITUNES_FULL_URL)
45
+ end
46
+
47
+
48
+ def get_folders_from_url(url)
49
+ uri = URI(url)
50
+
51
+ req = Net::HTTP::Get.new(uri.request_uri)
52
+ req.basic_auth(AppleEpf.apple_id, AppleEpf.apple_password)
53
+
54
+ res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) {|http|
55
+ http.request(req)
56
+ }
57
+
58
+ body = res.body
59
+ avaliable_dates = Nokogiri::HTML(body).xpath("//td/a").map(&:text).select{|s| s[0..7] =~ /\d{8}/}.map{|s| s.chomp("/")}
60
+ avaliable_dates
61
+ end
62
+
63
+
64
+ def date_to_epf_format(date)
65
+ date.strftime("%Y%m%d")
66
+ end
67
+
68
+ def file_exists?(full_url)
69
+
70
+ uri = URI.parse(full_url)
71
+
72
+ request = Net::HTTP::Head.new(full_url)
73
+ request.basic_auth(AppleEpf.apple_id, AppleEpf.apple_password)
74
+
75
+ r = Net::HTTP.new(uri.host, uri.port)
76
+ r.use_ssl = true
77
+ response = r.start { |http| http.request(request) }
78
+
79
+ raise AppleEpf::BadCredentialsError.new('Bad credentials') if response.code == "401"
80
+
81
+ response.code == "200"
82
+ end
83
+
84
+ end
85
+ end
File without changes
@@ -1,3 +1,3 @@
1
1
  module AppleEpf
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../../spec_helper', __FILE__)
3
+
4
+ describe AppleEpf::Finder do
5
+ describe ".detect_closest_weeks_for_date" do
6
+ it "should return closest weeks to perform further lookup" do
7
+ all_weeks = ["20120111", "20120118", "20120215", "20120314", "20120321", "20120328", "20120404", "20120509", "20120523", "20120606", "20120620", "20120718", "20120725", "20120801", "20120808", "20120829", "20120919", "20120926", "20121003", "20121017", "20121114", "20121121", "20121128", "20130109", "20130123", "20130130", "20130213", "20130227", "20130320", "20130327", "20130522", "20130529", "20130724", "20130821", "20130925", "20131002", "20131009", "20131016", "20131023", "20131030", "20131106", "20131113", "20131120", "20131127", "20131204", "20131211", "20131218", "20131225", "20140101", "20140108", "20140115", "20140122", "20140129", "20140213", "20140219", "20140226", "20140305", "20140312", "20140319"]
8
+
9
+ interesting_date = Date.parse('20140124')
10
+
11
+ r = AppleEpf::Finder.detect_closest_weeks_for_date(all_weeks, interesting_date)
12
+ r.should == ["20140108", "20140115", "20140122", "20140129"]
13
+
14
+ interesting_date = Date.parse('20131002')
15
+
16
+ r = AppleEpf::Finder.detect_closest_weeks_for_date(all_weeks, interesting_date)
17
+ r.should == ["20130925", "20131002", "20131009", "20131016"]
18
+ end
19
+ end
20
+
21
+
22
+ end
@@ -0,0 +1,71 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2
+ <html>
3
+ <head>
4
+ <title>Index of /feeds/epf/v3/full</title>
5
+ </head>
6
+ <body>
7
+ <h1>Index of /feeds/epf/v3/full</h1>
8
+ <table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
9
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120111/">20120111/</a> </td><td align="right">26-Feb-2012 04:59 </td><td align="right"> - </td><td>&nbsp;</td></tr>
10
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120118/">20120118/</a> </td><td align="right">05-Mar-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
11
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120215/">20120215/</a> </td><td align="right">02-Apr-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
12
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120314/">20120314/</a> </td><td align="right">29-Apr-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
13
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120321/">20120321/</a> </td><td align="right">07-May-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
14
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120328/">20120328/</a> </td><td align="right">13-May-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
15
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120404/">20120404/</a> </td><td align="right">20-May-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
16
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120509/">20120509/</a> </td><td align="right">24-Jun-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
17
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120523/">20120523/</a> </td><td align="right">08-Jul-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
18
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120606/">20120606/</a> </td><td align="right">22-Jul-2012 05:27 </td><td align="right"> - </td><td>&nbsp;</td></tr>
19
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120620/">20120620/</a> </td><td align="right">05-Aug-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
20
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120718/">20120718/</a> </td><td align="right">02-Sep-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
21
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120725/">20120725/</a> </td><td align="right">09-Sep-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
22
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120801/">20120801/</a> </td><td align="right">16-Sep-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
23
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120808/">20120808/</a> </td><td align="right">23-Sep-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
24
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120829/">20120829/</a> </td><td align="right">14-Oct-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
25
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120919/">20120919/</a> </td><td align="right">04-Nov-2012 01:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
26
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20120926/">20120926/</a> </td><td align="right">11-Nov-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
27
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20121003/">20121003/</a> </td><td align="right">18-Nov-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
28
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20121017/">20121017/</a> </td><td align="right">02-Dec-2012 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
29
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20121114/">20121114/</a> </td><td align="right">30-Dec-2012 03:42 </td><td align="right"> - </td><td>&nbsp;</td></tr>
30
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20121121/">20121121/</a> </td><td align="right">06-Jan-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
31
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20121128/">20121128/</a> </td><td align="right">13-Jan-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
32
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130109/">20130109/</a> </td><td align="right">25-Feb-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
33
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130123/">20130123/</a> </td><td align="right">11-Mar-2013 03:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
34
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130130/">20130130/</a> </td><td align="right">18-Mar-2013 03:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
35
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130213/">20130213/</a> </td><td align="right">01-Apr-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
36
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130227/">20130227/</a> </td><td align="right">15-Apr-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
37
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130320/">20130320/</a> </td><td align="right">06-May-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
38
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130327/">20130327/</a> </td><td align="right">13-May-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
39
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130522/">20130522/</a> </td><td align="right">09-Jul-2013 10:17 </td><td align="right"> - </td><td>&nbsp;</td></tr>
40
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130529/">20130529/</a> </td><td align="right">15-Jul-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
41
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130724/">20130724/</a> </td><td align="right">09-Sep-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
42
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130821/">20130821/</a> </td><td align="right">07-Oct-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
43
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20130925/">20130925/</a> </td><td align="right">17-Feb-2014 15:15 </td><td align="right"> - </td><td>&nbsp;</td></tr>
44
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131002/">20131002/</a> </td><td align="right">25-Feb-2014 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
45
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131009/">20131009/</a> </td><td align="right">04-Mar-2014 18:09 </td><td align="right"> - </td><td>&nbsp;</td></tr>
46
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131016/">20131016/</a> </td><td align="right">02-Dec-2013 11:04 </td><td align="right"> - </td><td>&nbsp;</td></tr>
47
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131023/">20131023/</a> </td><td align="right">17-Mar-2014 14:51 </td><td align="right"> - </td><td>&nbsp;</td></tr>
48
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131030/">20131030/</a> </td><td align="right">24-Mar-2014 17:24 </td><td align="right"> - </td><td>&nbsp;</td></tr>
49
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131106/">20131106/</a> </td><td align="right">23-Dec-2013 12:36 </td><td align="right"> - </td><td>&nbsp;</td></tr>
50
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131113/">20131113/</a> </td><td align="right">31-Dec-2013 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
51
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131120/">20131120/</a> </td><td align="right">07-Jan-2014 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
52
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131127/">20131127/</a> </td><td align="right">13-Jan-2014 14:07 </td><td align="right"> - </td><td>&nbsp;</td></tr>
53
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131204/">20131204/</a> </td><td align="right">20-Jan-2014 16:54 </td><td align="right"> - </td><td>&nbsp;</td></tr>
54
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131211/">20131211/</a> </td><td align="right">28-Jan-2014 03:33 </td><td align="right"> - </td><td>&nbsp;</td></tr>
55
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131218/">20131218/</a> </td><td align="right">04-Feb-2014 05:04 </td><td align="right"> - </td><td>&nbsp;</td></tr>
56
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20131225/">20131225/</a> </td><td align="right">10-Feb-2014 11:45 </td><td align="right"> - </td><td>&nbsp;</td></tr>
57
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140101/">20140101/</a> </td><td align="right">18-Feb-2014 00:43 </td><td align="right"> - </td><td>&nbsp;</td></tr>
58
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140108/">20140108/</a> </td><td align="right">25-Feb-2014 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
59
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140115/">20140115/</a> </td><td align="right">04-Mar-2014 02:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
60
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140122/">20140122/</a> </td><td align="right">11-Mar-2014 03:00 </td><td align="right"> - </td><td>&nbsp;</td></tr>
61
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140129/">20140129/</a> </td><td align="right">17-Mar-2014 14:51 </td><td align="right"> - </td><td>&nbsp;</td></tr>
62
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140213/">20140213/</a> </td><td align="right">18-Feb-2014 00:42 </td><td align="right"> - </td><td>&nbsp;</td></tr>
63
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140219/">20140219/</a> </td><td align="right">22-Feb-2014 11:14 </td><td align="right"> - </td><td>&nbsp;</td></tr>
64
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140226/">20140226/</a> </td><td align="right">01-Mar-2014 14:13 </td><td align="right"> - </td><td>&nbsp;</td></tr>
65
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140305/">20140305/</a> </td><td align="right">08-Mar-2014 12:15 </td><td align="right"> - </td><td>&nbsp;</td></tr>
66
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140312/">20140312/</a> </td><td align="right">15-Mar-2014 12:26 </td><td align="right"> - </td><td>&nbsp;</td></tr>
67
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="20140319/">20140319/</a> </td><td align="right">22-Mar-2014 14:20 </td><td align="right"> - </td><td>&nbsp;</td></tr>
68
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]"></td><td><a href="current/">current/</a> </td><td align="right">22-Mar-2014 14:20 </td><td align="right"> - </td><td>&nbsp;</td></tr>
69
+ <tr><th colspan="5"><hr></th></tr>
70
+ </table>
71
+ </body></html>
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.2.0
4
+ version: 1.2.1
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: 2014-03-03 00:00:00.000000000 Z
12
+ date: 2014-03-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -203,6 +203,8 @@ files:
203
203
  - lib/apple_epf/downloader.rb
204
204
  - lib/apple_epf/errors.rb
205
205
  - lib/apple_epf/extractor.rb
206
+ - lib/apple_epf/finder.rb
207
+ - lib/apple_epf/finder.rb~
206
208
  - lib/apple_epf/logging.rb
207
209
  - lib/apple_epf/main.rb
208
210
  - lib/apple_epf/parser.rb
@@ -217,6 +219,7 @@ files:
217
219
  - spec/lib/apple_epf/download_processor/aria_download_processor_spec.rb
218
220
  - spec/lib/apple_epf/downloader_spec.rb
219
221
  - spec/lib/apple_epf/exctractor_spec.rb
222
+ - spec/lib/apple_epf/finder_spec.rb
220
223
  - spec/lib/apple_epf/main_spec.rb
221
224
  - spec/lib/apple_epf/parser_spec.rb
222
225
  - spec/spec_helper.rb
@@ -230,6 +233,7 @@ files:
230
233
  - spec/support/fixtures/itunes/epf/incremental/popularity20130111.tbz
231
234
  - spec/support/fixtures/itunes/epf/incremental/popularity20130111/popularity1
232
235
  - spec/support/fixtures/itunes/epf/incremental/popularity20130111/popularity2
236
+ - spec/support/fixtures/itunes/epf/index_of_folders.html
233
237
  homepage:
234
238
  licenses: []
235
239
  post_install_message:
@@ -244,7 +248,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
244
248
  version: '0'
245
249
  segments:
246
250
  - 0
247
- hash: -6031403435138943
251
+ hash: 2191365109496733098
248
252
  required_rubygems_version: !ruby/object:Gem::Requirement
249
253
  none: false
250
254
  requirements:
@@ -253,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
257
  version: '0'
254
258
  segments:
255
259
  - 0
256
- hash: -6031403435138943
260
+ hash: 2191365109496733098
257
261
  requirements: []
258
262
  rubyforge_project:
259
263
  rubygems_version: 1.8.23
@@ -264,6 +268,7 @@ test_files:
264
268
  - spec/lib/apple_epf/download_processor/aria_download_processor_spec.rb
265
269
  - spec/lib/apple_epf/downloader_spec.rb
266
270
  - spec/lib/apple_epf/exctractor_spec.rb
271
+ - spec/lib/apple_epf/finder_spec.rb
267
272
  - spec/lib/apple_epf/main_spec.rb
268
273
  - spec/lib/apple_epf/parser_spec.rb
269
274
  - spec/spec_helper.rb
@@ -277,3 +282,4 @@ test_files:
277
282
  - spec/support/fixtures/itunes/epf/incremental/popularity20130111.tbz
278
283
  - spec/support/fixtures/itunes/epf/incremental/popularity20130111/popularity1
279
284
  - spec/support/fixtures/itunes/epf/incremental/popularity20130111/popularity2
285
+ - spec/support/fixtures/itunes/epf/index_of_folders.html