ssn_validator 1.0.6 → 1.0.7

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/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == 1.0.7 2010-09-09
2
+
3
+ * 2 enhancements:
4
+ * Modified to death master file load to stream the data from the website to be more jruby friendly.
5
+ * Made a small change to the ssn high group loader to handle ssa.gov url naming inconsistencies.
6
+
1
7
  == 1.0.6 2010-09-03
2
8
  * correct gemspec
3
9
 
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 0
4
- :patch: 6
4
+ :patch: 7
5
5
  :build:
@@ -23,7 +23,7 @@ class DeathMasterFileLoader
23
23
  if File.exists?(@file_path_or_url)
24
24
  @download_file = File.open(@file_path_or_url)
25
25
  elsif URI.parse(@file_path_or_url).kind_of?(URI::HTTP)
26
- @download_file = get_file_from_web
26
+ @download_file = File.open(get_file_from_web)
27
27
  else
28
28
  raise(Errno::ENOENT, @file_path_or_url)
29
29
  end
@@ -31,7 +31,7 @@ class DeathMasterFileLoader
31
31
 
32
32
  def load_file
33
33
 
34
- if DeathMasterFile.connection.kind_of?(ActiveRecord::ConnectionAdapters::MysqlAdapter)
34
+ if DeathMasterFile.connection.kind_of?(ActiveRecord::ConnectionAdapters::MysqlAdapter) || DeathMasterFile.connection.kind_of?(ActiveRecord::ConnectionAdapters::JdbcAdapter)
35
35
  puts "Converting file to csv format for Mysql import. This could take several minutes."
36
36
 
37
37
  csv_file = convert_file_to_csv
@@ -53,12 +53,20 @@ class DeathMasterFileLoader
53
53
  http.use_ssl = (uri.port == 443)
54
54
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
55
55
 
56
- response = http.request(request)
56
+ csv_file = Tempfile.new(@file_path_or_url.split('/').last) # create temp file for the raw file.
57
+ http.request(request) do |res|
58
+ raise(ArgumentError, "Invalid URL: #{@file_path_or_url}") if res.kind_of?(Net::HTTPNotFound)
59
+ raise(ArgumentError, "Authorization Required: Invalid username or password. Set the variables SsnValidator::Ntis.user_name and SsnValidator::Ntis.password in your environment.rb file.") if res.kind_of?(Net::HTTPUnauthorized)
60
+ size, total = 0, res.header['Content-Length'].to_i
61
+ res.read_body do |chunk|
62
+ size += chunk.size
63
+ csv_file.write chunk
64
+ puts "%d%% done (%d of %d)" % [(size * 100) / total, size, total]
65
+ end
57
66
 
58
- raise(ArgumentError, "Invalid URL: #{@file_path_or_url}") if response.kind_of?(Net::HTTPNotFound)
59
- raise(ArgumentError, "Authorization Required: Invalid username or password. Set the variables SsnValidator::Ntis.user_name and SsnValidator::Ntis.password in your environment.rb file.") if response.kind_of?(Net::HTTPUnauthorized)
67
+ end
60
68
 
61
- return response.body
69
+ return csv_file.path
62
70
  end
63
71
 
64
72
  #Loads all the update files from dmf.ntis.gov.
@@ -89,7 +97,7 @@ class DeathMasterFileLoader
89
97
  timenow = start.to_s(:db)
90
98
 
91
99
  @delete_ssns = []
92
-
100
+ puts "********** @download_file = " + @download_file.inspect
93
101
  @download_file.each_with_index do |line,i|
94
102
  action = record_action(line)
95
103
  attributes_hash = text_to_hash(line)
@@ -150,21 +158,21 @@ class DeathMasterFileLoader
150
158
  else
151
159
 
152
160
  # empty field for id to be generated by mysql.
153
- # record_hash = {
154
- # :as_of => @file_as_of.to_date.to_s(:db),
155
- # :social_security_number => parse_record(line,:social_security_number),
156
- # :last_name => parse_record(line,:last_name),
157
- # :name_suffix => parse_record(line,:name_suffix),
158
- # :first_name => parse_record(line,:first_name),
159
- # :middle_name => parse_record(line,:middle_name),
160
- # :verify_proof_code => parse_record(line,:verify_proof_code),
161
- # :date_of_death => parse_record(line,:date_of_death),
162
- # :date_of_birth => parse_record(line,:date_of_birth),
163
- # # - must be code between 01 and 65 or else nil.
164
- # :state_of_residence=> parse_record(line,:state_of_residence=),
165
- # :last_known_zip_residence => parse_record(line,:last_known_zip_residence),
166
- # :last_known_zip_payment => parse_record(line,:last_known_zip_payment)
167
- # }
161
+ # record_hash = {
162
+ # :as_of => @file_as_of.to_date.to_s(:db),
163
+ # :social_security_number => parse_record(line,:social_security_number),
164
+ # :last_name => parse_record(line,:last_name),
165
+ # :name_suffix => parse_record(line,:name_suffix),
166
+ # :first_name => parse_record(line,:first_name),
167
+ # :middle_name => parse_record(line,:middle_name),
168
+ # :verify_proof_code => parse_record(line,:verify_proof_code),
169
+ # :date_of_death => parse_record(line,:date_of_death),
170
+ # :date_of_birth => parse_record(line,:date_of_birth),
171
+ # # - must be code between 01 and 65 or else nil.
172
+ # :state_of_residence=> parse_record(line,:state_of_residence=),
173
+ # :last_known_zip_residence => parse_record(line,:last_known_zip_residence),
174
+ # :last_known_zip_payment => parse_record(line,:last_known_zip_payment)
175
+ # }
168
176
 
169
177
  case action
170
178
  when '',nil,' '
@@ -217,18 +225,18 @@ class DeathMasterFileLoader
217
225
  def text_to_hash(line)
218
226
 
219
227
  {:as_of => @file_as_of.to_date.to_s(:db),
220
- :social_security_number => line[1,9].to_s.strip,
221
- :last_name => line[10,20].to_s.strip,
222
- :name_suffix => line[30,4].to_s.strip,
223
- :first_name => line[34,15].to_s.strip,
224
- :middle_name => line[49,15].to_s.strip,
225
- :verify_proof_code => line[64,1].to_s.strip,
226
- :date_of_death => (Date.strptime(line[65,8].to_s.strip,'%m%d%Y') rescue nil),
227
- :date_of_birth => (Date.strptime(line[73,8].to_s.strip,'%m%d%Y') rescue nil),
228
+ :social_security_number => line[1,9].to_s.strip,
229
+ :last_name => line[10,20].to_s.strip,
230
+ :name_suffix => line[30,4].to_s.strip,
231
+ :first_name => line[34,15].to_s.strip,
232
+ :middle_name => line[49,15].to_s.strip,
233
+ :verify_proof_code => line[64,1].to_s.strip,
234
+ :date_of_death => (Date.strptime(line[65,8].to_s.strip,'%m%d%Y') rescue nil),
235
+ :date_of_birth => (Date.strptime(line[73,8].to_s.strip,'%m%d%Y') rescue nil),
228
236
  # - must be code between 01 and 65 or else nil.
229
- :state_of_residence => (line[81,2].to_s.strip.between?('01', '65') ? line[81,2].to_s.strip : nil),
230
- :last_known_zip_residence => line[83,5].to_s.strip,
231
- :last_known_zip_payment => line[88,5].to_s.strip}
237
+ :state_of_residence => (line[81,2].to_s.strip.between?('01', '65') ? line[81,2].to_s.strip : nil),
238
+ :last_known_zip_residence => line[83,5].to_s.strip,
239
+ :last_known_zip_payment => line[88,5].to_s.strip}
232
240
  rescue Exception => e
233
241
  puts '@@@@@@@@@ Error = ' + e.message + ': ' + line.inspect
234
242
  end
@@ -2,29 +2,31 @@
2
2
  require 'net/http'
3
3
  class SsnHighGroupCodeLoader
4
4
  def self.load_all_high_group_codes_files
5
- months = ['Jan','Feb','Mar','Apr','May','June','July','Aug','Sept','Oct','Nov','Dec']
5
+ months = ['Jan','Feb','Mar','Apr','May','June','July','Aug',['Sept','Sep'],'Oct','Nov','Dec']
6
6
  run_file_date = SsnHighGroupCode.maximum(:as_of)
7
7
  run_file_date = run_file_date ? run_file_date.next_month.beginning_of_month.to_date : Date.new(2003,11,01)
8
8
  last_file_date = Date.today.beginning_of_month
9
9
  while run_file_date <= last_file_date
10
10
  file_processed = false
11
- run_file_month = months[run_file_date.month - 1]
11
+ run_file_month_variants = Array(months[run_file_date.month - 1])
12
12
  run_file_year = run_file_date.year
13
- ['','corrected'].each do |mod|
13
+ run_file_month_variants.each do |run_file_month|
14
14
  break if file_processed
15
- ['ssns','ssnvs'].each do |url_mod|
15
+ ['','corrected'].each do |mod|
16
16
  break if file_processed
17
- (1..Date.today.day).each do |day|
18
- string_day = day.to_s
19
- string_day.insert(0,'0') if day < 10
20
- string_year = run_file_year.to_s.last(2)
21
- file_name = "HG#{run_file_month}#{string_day}#{string_year}#{mod}.txt"
22
- text = Net::HTTP.get(URI.parse("http://www.socialsecurity.gov/employer/#{url_mod}/#{file_name}"))
23
- unless text.include? 'File Not Found'
24
- create_records(parse_text(text),extract_as_of_date(text))
25
- #run_file_date = run_file_date.next_month
26
- file_processed = true
27
- break
17
+ ['ssns','ssnvs'].each do |url_mod|
18
+ break if file_processed
19
+ (1..Date.today.day).each do |day|
20
+ string_day = day.to_s
21
+ string_day.insert(0,'0') if day < 10
22
+ string_year = run_file_year.to_s.last(2)
23
+ file_name = "HG#{run_file_month}#{string_day}#{string_year}#{mod}.txt"
24
+ text = Net::HTTP.get(URI.parse("http://www.socialsecurity.gov/employer/#{url_mod}/#{file_name}"))
25
+ unless text.include? 'File Not Found'
26
+ create_records(parse_text(text),extract_as_of_date(text))
27
+ file_processed = true
28
+ break
29
+ end
28
30
  end
29
31
  end
30
32
  end
@@ -130,7 +130,7 @@ loaded, and loads each missing file in sequence up to the current file.
130
130
  onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
131
131
  <div class="method-source-code" id="M000007-source">
132
132
  <pre>
133
- <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 67</span>
133
+ <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 75</span>
134
134
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_update_files_from_web</span>
135
135
  <span class="ruby-identifier">max_as_of</span> = <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">maximum</span>(<span class="ruby-identifier">:as_of</span>)
136
136
  <span class="ruby-identifier">run_file_date</span> = <span class="ruby-identifier">max_as_of</span>.<span class="ruby-identifier">beginning_of_month</span>.<span class="ruby-identifier">next_month</span>
@@ -204,12 +204,20 @@ data is accurate.
204
204
  <span class="ruby-identifier">http</span>.<span class="ruby-identifier">use_ssl</span> = (<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span> <span class="ruby-operator">==</span> <span class="ruby-value">443</span>)
205
205
  <span class="ruby-identifier">http</span>.<span class="ruby-identifier">verify_mode</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">SSL</span><span class="ruby-operator">::</span><span class="ruby-constant">VERIFY_NONE</span>
206
206
 
207
- <span class="ruby-identifier">response</span> = <span class="ruby-identifier">http</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>)
207
+ <span class="ruby-identifier">csv_file</span> = <span class="ruby-constant">Tempfile</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@file_path_or_url</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">last</span>) <span class="ruby-comment cmt"># create temp file for the raw file.</span>
208
+ <span class="ruby-identifier">http</span>.<span class="ruby-identifier">request</span>(<span class="ruby-identifier">request</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">res</span><span class="ruby-operator">|</span>
209
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid URL: #{@file_path_or_url}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPNotFound</span>)
210
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;Authorization Required: Invalid username or password. Set the variables SsnValidator::Ntis.user_name and SsnValidator::Ntis.password in your environment.rb file.&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPUnauthorized</span>)
211
+ <span class="ruby-identifier">size</span>, <span class="ruby-identifier">total</span> = <span class="ruby-value">0</span>, <span class="ruby-identifier">res</span>.<span class="ruby-identifier">header</span>[<span class="ruby-value str">'Content-Length'</span>].<span class="ruby-identifier">to_i</span>
212
+ <span class="ruby-identifier">res</span>.<span class="ruby-identifier">read_body</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">chunk</span><span class="ruby-operator">|</span>
213
+ <span class="ruby-identifier">size</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">size</span>
214
+ <span class="ruby-identifier">csv_file</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">chunk</span>
215
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;%d%% done (%d of %d)&quot;</span> <span class="ruby-operator">%</span> [(<span class="ruby-identifier">size</span> <span class="ruby-operator">*</span> <span class="ruby-value">100</span>) <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>, <span class="ruby-identifier">size</span>, <span class="ruby-identifier">total</span>]
216
+ <span class="ruby-keyword kw">end</span>
208
217
 
209
- <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Invalid URL: #{@file_path_or_url}&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPNotFound</span>)
210
- <span class="ruby-identifier">raise</span>(<span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;Authorization Required: Invalid username or password. Set the variables SsnValidator::Ntis.user_name and SsnValidator::Ntis.password in your environment.rb file.&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPUnauthorized</span>)
218
+ <span class="ruby-keyword kw">end</span>
211
219
 
212
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>
220
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">csv_file</span>.<span class="ruby-identifier">path</span>
213
221
  <span class="ruby-keyword kw">end</span>
214
222
  </pre>
215
223
  </div>
@@ -233,7 +241,7 @@ data is accurate.
233
241
  <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 32</span>
234
242
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">load_file</span>
235
243
 
236
- <span class="ruby-keyword kw">if</span> <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionAdapters</span><span class="ruby-operator">::</span><span class="ruby-constant">MysqlAdapter</span>)
244
+ <span class="ruby-keyword kw">if</span> <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionAdapters</span><span class="ruby-operator">::</span><span class="ruby-constant">MysqlAdapter</span>) <span class="ruby-operator">||</span> <span class="ruby-constant">DeathMasterFile</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">ConnectionAdapters</span><span class="ruby-operator">::</span><span class="ruby-constant">JdbcAdapter</span>)
237
245
  <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Converting file to csv format for Mysql import. This could take several minutes.&quot;</span>
238
246
 
239
247
  <span class="ruby-identifier">csv_file</span> = <span class="ruby-identifier">convert_file_to_csv</span>
@@ -273,7 +281,7 @@ data is accurate.
273
281
  <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-ivar">@file_path_or_url</span>)
274
282
  <span class="ruby-ivar">@download_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-ivar">@file_path_or_url</span>)
275
283
  <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-ivar">@file_path_or_url</span>).<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">URI</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>)
276
- <span class="ruby-ivar">@download_file</span> = <span class="ruby-identifier">get_file_from_web</span>
284
+ <span class="ruby-ivar">@download_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">get_file_from_web</span>)
277
285
  <span class="ruby-keyword kw">else</span>
278
286
  <span class="ruby-identifier">raise</span>(<span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ENOENT</span>, <span class="ruby-ivar">@file_path_or_url</span>)
279
287
  <span class="ruby-keyword kw">end</span>
@@ -125,33 +125,36 @@
125
125
  <pre>
126
126
  <span class="ruby-comment cmt"># File lib/ssn_validator/models/ssn_high_group_code_loader.rb, line 4</span>
127
127
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_all_high_group_codes_files</span>
128
- <span class="ruby-identifier">months</span> = [<span class="ruby-value str">'Jan'</span>,<span class="ruby-value str">'Feb'</span>,<span class="ruby-value str">'Mar'</span>,<span class="ruby-value str">'Apr'</span>,<span class="ruby-value str">'May'</span>,<span class="ruby-value str">'June'</span>,<span class="ruby-value str">'July'</span>,<span class="ruby-value str">'Aug'</span>,<span class="ruby-value str">'Sept'</span>,<span class="ruby-value str">'Oct'</span>,<span class="ruby-value str">'Nov'</span>,<span class="ruby-value str">'Dec'</span>]
128
+ <span class="ruby-identifier">months</span> = [<span class="ruby-value str">'Jan'</span>,<span class="ruby-value str">'Feb'</span>,<span class="ruby-value str">'Mar'</span>,<span class="ruby-value str">'Apr'</span>,<span class="ruby-value str">'May'</span>,<span class="ruby-value str">'June'</span>,<span class="ruby-value str">'July'</span>,<span class="ruby-value str">'Aug'</span>,[<span class="ruby-value str">'Sept'</span>,<span class="ruby-value str">'Sep'</span>],<span class="ruby-value str">'Oct'</span>,<span class="ruby-value str">'Nov'</span>,<span class="ruby-value str">'Dec'</span>]
129
129
  <span class="ruby-identifier">run_file_date</span> = <span class="ruby-constant">SsnHighGroupCode</span>.<span class="ruby-identifier">maximum</span>(<span class="ruby-identifier">:as_of</span>)
130
- <span class="ruby-identifier">run_file_date</span> = <span class="ruby-identifier">run_file_date</span> <span class="ruby-value">? </span><span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">next_month</span>.<span class="ruby-identifier">beginning_of_month</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2003</span>,<span class="ruby-value">11</span>,<span class="ruby-value">01</span>)
130
+ <span class="ruby-identifier">run_file_date</span> = <span class="ruby-identifier">run_file_date</span> <span class="ruby-value">? </span><span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">next_month</span>.<span class="ruby-identifier">beginning_of_month</span>.<span class="ruby-identifier">to_date</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">2003</span>,<span class="ruby-value">11</span>,<span class="ruby-value">01</span>)
131
131
  <span class="ruby-identifier">last_file_date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">beginning_of_month</span>
132
132
  <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">run_file_date</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">last_file_date</span>
133
133
  <span class="ruby-identifier">file_processed</span> = <span class="ruby-keyword kw">false</span>
134
- <span class="ruby-identifier">run_file_month</span> = <span class="ruby-identifier">months</span>[<span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">month</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>]
134
+ <span class="ruby-identifier">run_file_month_variants</span> = <span class="ruby-constant">Array</span>(<span class="ruby-identifier">months</span>[<span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">month</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>])
135
135
  <span class="ruby-identifier">run_file_year</span> = <span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">year</span>
136
- [<span class="ruby-value str">''</span>,<span class="ruby-value str">'corrected'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span>
136
+ <span class="ruby-identifier">run_file_month_variants</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">run_file_month</span><span class="ruby-operator">|</span>
137
137
  <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file_processed</span>
138
- [<span class="ruby-value str">'ssns'</span>,<span class="ruby-value str">'ssnvs'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">url_mod</span><span class="ruby-operator">|</span>
138
+ [<span class="ruby-value str">''</span>,<span class="ruby-value str">'corrected'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span>
139
139
  <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file_processed</span>
140
- (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">day</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
141
- <span class="ruby-identifier">string_day</span> = <span class="ruby-identifier">day</span>.<span class="ruby-identifier">to_s</span>
142
- <span class="ruby-identifier">string_day</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>,<span class="ruby-value str">'0'</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">10</span>
143
- <span class="ruby-identifier">string_year</span> = <span class="ruby-identifier">run_file_year</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">last</span>(<span class="ruby-value">2</span>)
144
- <span class="ruby-identifier">file_name</span> = <span class="ruby-node">&quot;HG#{run_file_month}#{string_day}#{string_year}#{mod}.txt&quot;</span>
145
- <span class="ruby-identifier">text</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-node">&quot;http://www.socialsecurity.gov/employer/#{url_mod}/#{file_name}&quot;</span>))
146
- <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">'File Not Found'</span>
147
- <span class="ruby-identifier">create_records</span>(<span class="ruby-identifier">parse_text</span>(<span class="ruby-identifier">text</span>),<span class="ruby-identifier">extract_as_of_date</span>(<span class="ruby-identifier">text</span>))
148
- <span class="ruby-identifier">run_file_date</span> = <span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">next_month</span>
149
- <span class="ruby-identifier">file_processed</span> = <span class="ruby-keyword kw">true</span>
150
- <span class="ruby-keyword kw">break</span>
140
+ [<span class="ruby-value str">'ssns'</span>,<span class="ruby-value str">'ssnvs'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">url_mod</span><span class="ruby-operator">|</span>
141
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file_processed</span>
142
+ (<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>.<span class="ruby-identifier">day</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">day</span><span class="ruby-operator">|</span>
143
+ <span class="ruby-identifier">string_day</span> = <span class="ruby-identifier">day</span>.<span class="ruby-identifier">to_s</span>
144
+ <span class="ruby-identifier">string_day</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-value">0</span>,<span class="ruby-value str">'0'</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">10</span>
145
+ <span class="ruby-identifier">string_year</span> = <span class="ruby-identifier">run_file_year</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">last</span>(<span class="ruby-value">2</span>)
146
+ <span class="ruby-identifier">file_name</span> = <span class="ruby-node">&quot;HG#{run_file_month}#{string_day}#{string_year}#{mod}.txt&quot;</span>
147
+ <span class="ruby-identifier">text</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-node">&quot;http://www.socialsecurity.gov/employer/#{url_mod}/#{file_name}&quot;</span>))
148
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">'File Not Found'</span>
149
+ <span class="ruby-identifier">create_records</span>(<span class="ruby-identifier">parse_text</span>(<span class="ruby-identifier">text</span>),<span class="ruby-identifier">extract_as_of_date</span>(<span class="ruby-identifier">text</span>))
150
+ <span class="ruby-identifier">file_processed</span> = <span class="ruby-keyword kw">true</span>
151
+ <span class="ruby-keyword kw">break</span>
152
+ <span class="ruby-keyword kw">end</span>
151
153
  <span class="ruby-keyword kw">end</span>
152
154
  <span class="ruby-keyword kw">end</span>
153
155
  <span class="ruby-keyword kw">end</span>
154
156
  <span class="ruby-keyword kw">end</span>
157
+ <span class="ruby-identifier">run_file_date</span> = <span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">next_month</span>
155
158
  <span class="ruby-keyword kw">end</span>
156
159
  <span class="ruby-keyword kw">end</span>
157
160
  </pre>
@@ -177,7 +180,7 @@ href="http://www.socialsecurity.gov/employer/ssns/highgroup.txt">www.socialsecur
177
180
  onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
178
181
  <div class="method-source-code" id="M000002-source">
179
182
  <pre>
180
- <span class="ruby-comment cmt"># File lib/ssn_validator/models/ssn_high_group_code_loader.rb, line 36</span>
183
+ <span class="ruby-comment cmt"># File lib/ssn_validator/models/ssn_high_group_code_loader.rb, line 39</span>
181
184
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_current_high_group_codes_file</span>
182
185
  <span class="ruby-identifier">text</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">get</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">'http://www.socialsecurity.gov/employer/ssns/highgroup.txt'</span>))
183
186
  <span class="ruby-identifier">create_records</span>(<span class="ruby-identifier">parse_text</span>(<span class="ruby-identifier">text</span>),<span class="ruby-identifier">extract_as_of_date</span>(<span class="ruby-identifier">text</span>))
data/rdoc/created.rid CHANGED
@@ -1 +1 @@
1
- Fri, 05 Feb 2010 12:34:16 -0500
1
+ Thu, 09 Sep 2010 14:42:03 -0400
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Tue Dec 01 09:25:36 -0500 2009</td>
59
+ <td>Thu Sep 09 14:32:27 -0400 2010</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Fri Feb 05 11:45:30 -0500 2010</td>
59
+ <td>Thu Sep 09 11:12:19 -0400 2010</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sun Sep 20 18:46:14 -0400 2009</td>
59
+ <td>Thu Sep 02 14:39:54 -0400 2010</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
data/rdoc/index.html CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  <!--
7
7
 
8
- ssn_validator 1.0.4
8
+ ssn_validator 1.0.7
9
9
 
10
10
  -->
11
11
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
12
  <head>
13
- <title>ssn_validator 1.0.4</title>
13
+ <title>ssn_validator 1.0.7</title>
14
14
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
15
  </head>
16
16
  <frameset rows="20%, 80%">
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ssn_validator}
8
- s.version = "1.0.6"
8
+ s.version = "1.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kevin Tyll"]
12
- s.date = %q{2010-09-03}
12
+ s.date = %q{2010-09-09}
13
13
  s.description = %q{Validates whether an SSN has likely been issued or not.}
14
14
  s.email = %q{kevintyll@gmail.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,20 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ssn_validator
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- - 6
9
- version: 1.0.6
4
+ version: 1.0.7
10
5
  platform: ruby
11
6
  authors:
12
- - Kevin Tyll
7
+ - Kevin Tyll
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
11
 
17
- date: 2010-09-03 00:00:00 -04:00
12
+ date: 2010-09-09 00:00:00 -04:00
18
13
  default_executable:
19
14
  dependencies: []
20
15
 
@@ -25,65 +20,65 @@ executables: []
25
20
  extensions: []
26
21
 
27
22
  extra_rdoc_files:
28
- - LICENSE
29
- - README.rdoc
23
+ - LICENSE
24
+ - README.rdoc
30
25
  files:
31
- - .gitignore
32
- - History.txt
33
- - LICENSE
34
- - PostInstall.txt
35
- - README.rdoc
36
- - Rakefile
37
- - VERSION.yml
38
- - generators/death_master_file_migration/death_master_file_migration_generator.rb
39
- - generators/death_master_file_migration/templates/migration.rb
40
- - generators/ssn_validator_migration/.DS_Store
41
- - generators/ssn_validator_migration/ssn_validator_migration_generator.rb
42
- - generators/ssn_validator_migration/templates/.DS_Store
43
- - generators/ssn_validator_migration/templates/migration.rb
44
- - lib/ssn_validator.rb
45
- - lib/ssn_validator/models/death_master_file.rb
46
- - lib/ssn_validator/models/death_master_file_loader.rb
47
- - lib/ssn_validator/models/ssn_high_group_code.rb
48
- - lib/ssn_validator/models/ssn_high_group_code_loader.rb
49
- - lib/ssn_validator/models/ssn_validator.rb
50
- - lib/ssn_validator/ntis.rb
51
- - lib/tasks/ssn_validator.rake
52
- - rdoc/classes/DeathMasterFile.html
53
- - rdoc/classes/DeathMasterFileLoader.html
54
- - rdoc/classes/SsnHighGroupCode.html
55
- - rdoc/classes/SsnHighGroupCodeLoader.html
56
- - rdoc/classes/SsnValidator.html
57
- - rdoc/classes/SsnValidator/Ntis.html
58
- - rdoc/classes/SsnValidator/Ssn.html
59
- - rdoc/created.rid
60
- - rdoc/files/LICENSE.html
61
- - rdoc/files/README_rdoc.html
62
- - rdoc/files/lib/ssn_validator/models/death_master_file_loader_rb.html
63
- - rdoc/files/lib/ssn_validator/models/death_master_file_rb.html
64
- - rdoc/files/lib/ssn_validator/models/ssn_high_group_code_loader_rb.html
65
- - rdoc/files/lib/ssn_validator/models/ssn_high_group_code_rb.html
66
- - rdoc/files/lib/ssn_validator/models/ssn_validator_rb.html
67
- - rdoc/files/lib/ssn_validator/ntis_rb.html
68
- - rdoc/files/lib/ssn_validator_rb.html
69
- - rdoc/fr_class_index.html
70
- - rdoc/fr_file_index.html
71
- - rdoc/fr_method_index.html
72
- - rdoc/index.html
73
- - rdoc/rdoc-style.css
74
- - script/console
75
- - script/destroy
76
- - script/generate
77
- - ssn_validator.gemspec
78
- - test/files/test_dmf_funky_data_load.txt
79
- - test/files/test_dmf_initial_load.txt
80
- - test/files/test_dmf_update_load.txt
81
- - test/files/valid_csv_from_funky_data_file.txt
82
- - test/mocks/test/death_master_file_loader.rb
83
- - test/test_death_master_file_loader.rb
84
- - test/test_helper.rb
85
- - test/test_ssn_high_group_code_loader.rb
86
- - test/test_ssn_validator.rb
26
+ - .gitignore
27
+ - History.txt
28
+ - LICENSE
29
+ - PostInstall.txt
30
+ - README.rdoc
31
+ - Rakefile
32
+ - VERSION.yml
33
+ - generators/death_master_file_migration/death_master_file_migration_generator.rb
34
+ - generators/death_master_file_migration/templates/migration.rb
35
+ - generators/ssn_validator_migration/.DS_Store
36
+ - generators/ssn_validator_migration/ssn_validator_migration_generator.rb
37
+ - generators/ssn_validator_migration/templates/.DS_Store
38
+ - generators/ssn_validator_migration/templates/migration.rb
39
+ - lib/ssn_validator.rb
40
+ - lib/ssn_validator/models/death_master_file.rb
41
+ - lib/ssn_validator/models/death_master_file_loader.rb
42
+ - lib/ssn_validator/models/ssn_high_group_code.rb
43
+ - lib/ssn_validator/models/ssn_high_group_code_loader.rb
44
+ - lib/ssn_validator/models/ssn_validator.rb
45
+ - lib/ssn_validator/ntis.rb
46
+ - lib/tasks/ssn_validator.rake
47
+ - rdoc/classes/DeathMasterFile.html
48
+ - rdoc/classes/DeathMasterFileLoader.html
49
+ - rdoc/classes/SsnHighGroupCode.html
50
+ - rdoc/classes/SsnHighGroupCodeLoader.html
51
+ - rdoc/classes/SsnValidator.html
52
+ - rdoc/classes/SsnValidator/Ntis.html
53
+ - rdoc/classes/SsnValidator/Ssn.html
54
+ - rdoc/created.rid
55
+ - rdoc/files/LICENSE.html
56
+ - rdoc/files/README_rdoc.html
57
+ - rdoc/files/lib/ssn_validator/models/death_master_file_loader_rb.html
58
+ - rdoc/files/lib/ssn_validator/models/death_master_file_rb.html
59
+ - rdoc/files/lib/ssn_validator/models/ssn_high_group_code_loader_rb.html
60
+ - rdoc/files/lib/ssn_validator/models/ssn_high_group_code_rb.html
61
+ - rdoc/files/lib/ssn_validator/models/ssn_validator_rb.html
62
+ - rdoc/files/lib/ssn_validator/ntis_rb.html
63
+ - rdoc/files/lib/ssn_validator_rb.html
64
+ - rdoc/fr_class_index.html
65
+ - rdoc/fr_file_index.html
66
+ - rdoc/fr_method_index.html
67
+ - rdoc/index.html
68
+ - rdoc/rdoc-style.css
69
+ - script/console
70
+ - script/destroy
71
+ - script/generate
72
+ - ssn_validator.gemspec
73
+ - test/files/test_dmf_funky_data_load.txt
74
+ - test/files/test_dmf_initial_load.txt
75
+ - test/files/test_dmf_update_load.txt
76
+ - test/files/valid_csv_from_funky_data_file.txt
77
+ - test/mocks/test/death_master_file_loader.rb
78
+ - test/test_death_master_file_loader.rb
79
+ - test/test_helper.rb
80
+ - test/test_ssn_high_group_code_loader.rb
81
+ - test/test_ssn_validator.rb
87
82
  has_rdoc: true
88
83
  homepage: http://kevintyll.git.com/ssn_validator
89
84
  licenses: []
@@ -120,35 +115,31 @@ post_install_message: |
120
115
  * The death master file data is updated monthly, so you'll want to run this rake task monthly to keep your validations accurate.
121
116
 
122
117
  rdoc_options:
123
- - --charset=UTF-8
118
+ - --charset=UTF-8
124
119
  require_paths:
125
- - lib
120
+ - lib
126
121
  required_ruby_version: !ruby/object:Gem::Requirement
127
- none: false
128
122
  requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- segments:
132
- - 0
133
- version: "0"
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: "0"
126
+ version:
134
127
  required_rubygems_version: !ruby/object:Gem::Requirement
135
- none: false
136
128
  requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- segments:
140
- - 0
141
- version: "0"
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: "0"
132
+ version:
142
133
  requirements: []
143
134
 
144
135
  rubyforge_project:
145
- rubygems_version: 1.3.7
136
+ rubygems_version: 1.3.5
146
137
  signing_key:
147
138
  specification_version: 3
148
139
  summary: Validates whether an SSN has likely been issued or not.
149
140
  test_files:
150
- - test/mocks/test/death_master_file_loader.rb
151
- - test/test_death_master_file_loader.rb
152
- - test/test_helper.rb
153
- - test/test_ssn_high_group_code_loader.rb
154
- - test/test_ssn_validator.rb
141
+ - test/mocks/test/death_master_file_loader.rb
142
+ - test/test_death_master_file_loader.rb
143
+ - test/test_helper.rb
144
+ - test/test_ssn_high_group_code_loader.rb
145
+ - test/test_ssn_validator.rb