ssn_validator 1.0.8 → 1.0.9

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,8 @@
1
+ == 1.0.9 2011-03-07
2
+
3
+ * 1 enhancements:
4
+ * added yields to the loader classes to pass statuses to the calling class
5
+
1
6
  == 1.0.8 2010-12-21
2
7
 
3
8
  * 1 enhancements:
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 0
4
- :patch: 8
4
+ :patch: 9
5
5
  :build:
@@ -8,10 +8,10 @@ class DeathMasterFileLoader
8
8
 
9
9
  # path_or_url is the full path to the file to load on disk, or the url of an update file.
10
10
  # as_of is a string in the formatt YYYY-MM-DD for which the file data is accurate.
11
- def initialize(path_or_url,file_as_of)
11
+ def initialize(path_or_url, file_as_of)
12
12
  @file_path_or_url = path_or_url
13
- @file_as_of = file_as_of
14
- valid?
13
+ @file_as_of = file_as_of
14
+ valid?{|status| yield status if block_given?}
15
15
  end
16
16
 
17
17
  def valid?
@@ -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 = File.open(get_file_from_web)
26
+ @download_file = File.open(get_file_from_web{|status| yield status if block_given?})
27
27
  else
28
28
  raise(Errno::ENOENT, @file_path_or_url)
29
29
  end
@@ -33,27 +33,28 @@ class DeathMasterFileLoader
33
33
 
34
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
+ yield "Converting file to csv format for Mysql import. This could take several minutes." if block_given?
36
37
 
37
- csv_file = convert_file_to_csv
38
+ csv_file = convert_file_to_csv{|status| yield status if block_given?}
38
39
 
39
- bulk_mysql_update(csv_file)
40
+ bulk_mysql_update(csv_file){|status| yield status if block_given?}
40
41
  else
41
- active_record_file_load
42
+ active_record_file_load{|status| yield status if block_given?}
42
43
  end
43
44
 
44
45
  end
45
46
 
46
47
  def get_file_from_web
47
- uri = URI.parse(@file_path_or_url)
48
+ uri = URI.parse(@file_path_or_url)
48
49
 
49
50
  request = Net::HTTP::Get.new(uri.request_uri)
50
- request.basic_auth(SsnValidator::Ntis.user_name,SsnValidator::Ntis.password)
51
+ request.basic_auth(SsnValidator::Ntis.user_name, SsnValidator::Ntis.password)
51
52
 
52
- http = Net::HTTP.new(uri.host, uri.port)
53
- http.use_ssl = (uri.port == 443)
53
+ http = Net::HTTP.new(uri.host, uri.port)
54
+ http.use_ssl = (uri.port == 443)
54
55
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
55
56
 
56
- csv_file = Tempfile.new(@file_path_or_url.split('/').last) # create temp file for the raw file.
57
+ csv_file = Tempfile.new(@file_path_or_url.split('/').last) # create temp file for the raw file.
57
58
  http.request(request) do |res|
58
59
  raise(ArgumentError, "Invalid URL: #{@file_path_or_url}") if res.kind_of?(Net::HTTPNotFound)
59
60
  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)
@@ -62,6 +63,7 @@ class DeathMasterFileLoader
62
63
  size += chunk.size
63
64
  csv_file.write chunk
64
65
  puts "%d%% done (%d of %d)" % [(size * 100) / total, size, total]
66
+ yield("%d%% done (%d of %d)" % [(size * 100) / total, size, total]) if block_given?
65
67
  end
66
68
 
67
69
  end
@@ -73,13 +75,17 @@ class DeathMasterFileLoader
73
75
  #It starts with the last file loaded, and loads each
74
76
  #missing file in sequence up to the current file.
75
77
  def self.load_update_files_from_web
76
- max_as_of = DeathMasterFile.maximum(:as_of)
77
- run_file_date = max_as_of.beginning_of_month.next_month
78
+ max_as_of = DeathMasterFile.maximum(:as_of)
79
+ run_file_date = max_as_of.beginning_of_month.next_month
78
80
  last_file_date = Date.today.beginning_of_month
79
81
  while run_file_date <= last_file_date
80
82
  url = "https://dmf.ntis.gov/dmldata/monthly/MA#{run_file_date.strftime("%y%m%d")}"
81
83
  puts "Loading file #{url}"
82
- DeathMasterFileLoader.new(url,run_file_date.strftime("%Y-%m-%d")).load_file
84
+ yield "Loading file #{url}" if block_given?
85
+ dmf = DeathMasterFileLoader.new(url, run_file_date.strftime("%Y-%m-%d")){|status| yield status if block_given?}
86
+ dmf.load_file do |status|
87
+ yield status if block_given?
88
+ end
83
89
  run_file_date += 1.month
84
90
  end
85
91
  end
@@ -90,16 +96,16 @@ class DeathMasterFileLoader
90
96
  # Used to convert a packed fixed-length file into csv for mysql import.
91
97
  def convert_file_to_csv
92
98
 
93
- csv_file = Tempfile.new("dmf") # create temp file for converted csv formmat.
99
+ csv_file = Tempfile.new("dmf") # create temp file for converted csv formmat.
94
100
 
95
101
 
96
- start = Time.now
97
- timenow = start.to_s(:db)
102
+ start = Time.now
103
+ timenow = start.to_s(:db)
98
104
 
99
105
  @delete_ssns = []
100
- puts "********** @download_file = " + @download_file.inspect
101
- @download_file.each_with_index do |line,i|
102
- action = record_action(line)
106
+
107
+ @download_file.each_with_index do |line, i|
108
+ action = record_action(line)
103
109
  attributes_hash = text_to_hash(line)
104
110
  if action == 'D'
105
111
  #keep track of all the records to delete. We'll delete at the end all at once.
@@ -107,40 +113,44 @@ class DeathMasterFileLoader
107
113
  else
108
114
  # empty field for id to be generated by mysql.
109
115
  newline = "``," +
110
- # social_security_number
116
+ # social_security_number
111
117
  "`#{attributes_hash[:social_security_number]}`," +
112
- # last_name
118
+ # last_name
113
119
  "`#{attributes_hash[:last_name]}`," +
114
- # name_suffix
120
+ # name_suffix
115
121
  "`#{attributes_hash[:name_suffix]}`," +
116
- # first_name
122
+ # first_name
117
123
  "`#{attributes_hash[:first_name]}`," +
118
- # middle_name
124
+ # middle_name
119
125
  "`#{attributes_hash[:middle_name]}`," +
120
- # verify_proof_code
126
+ # verify_proof_code
121
127
  "`#{attributes_hash[:verify_proof_code]}`," +
122
- # date_of_death - need YYYY-MM-DD.
128
+ # date_of_death - need YYYY-MM-DD.
123
129
  "`#{attributes_hash[:date_of_death]}`," +
124
- # date_of_birth - need YYYY-MM-DD.
130
+ # date_of_birth - need YYYY-MM-DD.
125
131
  "`#{attributes_hash[:date_of_birth]}`," +
126
- # state_of_residence - must be code between 01 and 65 or else nil.
132
+ # state_of_residence - must be code between 01 and 65 or else nil.
127
133
  "`#{attributes_hash[:state_of_residence]}`," +
128
- # last_known_zip_residence
134
+ # last_known_zip_residence
129
135
  "`#{attributes_hash[:last_known_zip_residence]}`," +
130
- # last_known_zip_payment
136
+ # last_known_zip_payment
131
137
  "`#{attributes_hash[:last_known_zip_payment]}`," +
132
- # created_at
138
+ # created_at
133
139
  "`#{timenow}`," +
134
- # updated_at
140
+ # updated_at
135
141
  "`#{timenow}`," +
136
- # as_of
142
+ # as_of
137
143
  "`#{attributes_hash[:as_of]}`" +"\n"
138
144
 
139
145
  csv_file.syswrite newline
140
- puts "#{i} records processed." if (i % 25000 == 0) && (i > 0)
146
+ if (i % 25000 == 0) && (i > 0)
147
+ puts "#{i} records processed."
148
+ yield "#{i} records processed." if block_given?
149
+ end
141
150
  end
142
151
  end
143
152
  puts "File conversion ran for #{(Time.now - start) / 60} minutes."
153
+ yield "File conversion ran for #{(Time.now - start) / 60} minutes." if block_given?
144
154
  return csv_file
145
155
  end
146
156
 
@@ -149,9 +159,10 @@ class DeathMasterFileLoader
149
159
  #The downside is it's really slow.
150
160
  def active_record_file_load
151
161
  puts 'Importing file into database. This could take many minutes.'
162
+ yield 'Importing file into database. This could take many minutes.' if block_given?
152
163
 
153
- @download_file.each_with_index do |line,i|
154
- action = record_action(line)
164
+ @download_file.each_with_index do |line, i|
165
+ action = record_action(line)
155
166
  attributes_hash = text_to_hash(line)
156
167
  if action == 'D'
157
168
  DeathMasterFile.destroy_all(['social_security_number = ?', attributes_hash[:social_security_number]])
@@ -175,26 +186,28 @@ class DeathMasterFileLoader
175
186
  # }
176
187
 
177
188
  case action
178
- when '',nil,' '
179
- #the initial file leaves this field blank
180
- DeathMasterFile.create(attributes_hash)
181
- else
182
- dmf = DeathMasterFile.find_by_social_security_number(attributes_hash[:social_security_number])
183
- if dmf
184
- #a record already exists, update this record
185
- dmf.update_attributes(attributes_hash)
186
- else
187
- #create a new record
189
+ when '', nil, ' '
190
+ #the initial file leaves this field blank
188
191
  DeathMasterFile.create(attributes_hash)
189
- end
192
+ else
193
+ dmf = DeathMasterFile.find_by_social_security_number(attributes_hash[:social_security_number])
194
+ if dmf
195
+ #a record already exists, update this record
196
+ dmf.update_attributes(attributes_hash)
197
+ else
198
+ #create a new record
199
+ DeathMasterFile.create(attributes_hash)
200
+ end
190
201
  end
191
202
  end
192
-
193
- puts "#{i} records processed." if (i % 2500 == 0) && (i > 0)
194
-
203
+ if (i % 2500 == 0) && (i > 0)
204
+ puts "#{i} records processed."
205
+ yield "#{i} records processed." if block_given?
206
+ end
195
207
  end
196
208
 
197
209
  puts "Import complete."
210
+ yield "Import complete." if block_given?
198
211
  end
199
212
 
200
213
  # For mysql, use:
@@ -203,6 +216,7 @@ class DeathMasterFileLoader
203
216
  # see http://dev.mysql.com/doc/refman/5.1/en/load-data.html
204
217
  def bulk_mysql_update(csv_file)
205
218
  puts "Importing into Mysql..."
219
+ yield "Importing into Mysql..." if block_given?
206
220
 
207
221
  #delete all the 'D' records
208
222
  DeathMasterFile.delete_all(:social_security_number => @delete_ssns)
@@ -215,29 +229,28 @@ class DeathMasterFileLoader
215
229
 
216
230
  DeathMasterFile.connection.execute(mysql_command)
217
231
  puts "Mysql import complete."
232
+ yield "Mysql import complete." if block_given?
218
233
 
219
234
  end
220
235
 
221
236
  def record_action(line)
222
- line[0,1].to_s.strip
237
+ line[0, 1].to_s.strip
223
238
  end
224
239
 
225
240
  def text_to_hash(line)
226
241
 
227
- {:as_of => @file_as_of.to_date.to_s(:db),
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),
236
- # - must be code between 01 and 65 or else nil.
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}
240
- rescue Exception => e
241
- puts '@@@@@@@@@ Error = ' + e.message + ': ' + line.inspect
242
+ {:as_of => @file_as_of.to_date.to_s(:db),
243
+ :social_security_number => line[1, 9].to_s.strip,
244
+ :last_name => line[10, 20].to_s.strip,
245
+ :name_suffix => line[30, 4].to_s.strip,
246
+ :first_name => line[34, 15].to_s.strip,
247
+ :middle_name => line[49, 15].to_s.strip,
248
+ :verify_proof_code => line[64, 1].to_s.strip,
249
+ :date_of_death => (Date.strptime(line[65, 8].to_s.strip, '%m%d%Y') rescue nil),
250
+ :date_of_birth => (Date.strptime(line[73, 8].to_s.strip, '%m%d%Y') rescue nil),
251
+ # - must be code between 01 and 65 or else nil.
252
+ :state_of_residence => (line[81, 2].to_s.strip.between?('01', '65') ? line[81, 2].to_s.strip : nil),
253
+ :last_known_zip_residence => line[83, 5].to_s.strip,
254
+ :last_known_zip_payment => line[88, 5].to_s.strip}
242
255
  end
243
256
  end
@@ -23,7 +23,9 @@ class SsnHighGroupCodeLoader
23
23
  file_name = "HG#{run_file_month}#{string_day}#{string_year}#{mod}.txt"
24
24
  text = Net::HTTP.get(URI.parse("http://www.socialsecurity.gov/employer/#{url_mod}/#{file_name}"))
25
25
  unless text.include? 'File Not Found'
26
- create_records(parse_text(text),extract_as_of_date(text))
26
+ create_records(parse_text(text),extract_as_of_date(text)) do |status|
27
+ yield status if block_given?
28
+ end
27
29
  file_processed = true
28
30
  break
29
31
  end
@@ -51,11 +53,13 @@ class SsnHighGroupCodeLoader
51
53
  def self.create_records(area_groups,file_as_of)
52
54
  if already_loaded?(file_as_of)
53
55
  puts "File as of #{file_as_of} has already been loaded."
56
+ yield "File as of #{file_as_of} has already been loaded." if block_given?
54
57
  else
55
58
  area_groups.each do |area_group|
56
59
  SsnHighGroupCode.create(area_group.merge!(:as_of => file_as_of.to_s(:db)))
57
60
  end
58
61
  puts "File as of #{file_as_of} loaded."
62
+ yield "File as of #{file_as_of} loaded." if block_given?
59
63
  end
60
64
  end
61
65
 
@@ -117,7 +117,7 @@
117
117
 
118
118
  <div class="method-heading">
119
119
  <a href="#M000005" class="method-signature">
120
- <span class="method-name">load_update_files_from_web</span><span class="method-args">()</span>
120
+ <span class="method-name">load_update_files_from_web</span><span class="method-args">() {|&quot;Loading file| ...}</span>
121
121
  </a>
122
122
  </div>
123
123
 
@@ -130,15 +130,19 @@ loaded, and loads each missing file in sequence up to the current file.
130
130
  onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
131
131
  <div class="method-source-code" id="M000005-source">
132
132
  <pre>
133
- <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 75</span>
133
+ <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 77</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
- <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
- <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>
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
+ <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>
137
137
  <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>
138
138
  <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>
139
139
  <span class="ruby-identifier">url</span> = <span class="ruby-node">&quot;https://dmf.ntis.gov/dmldata/monthly/MA#{run_file_date.strftime(&quot;%y%m%d&quot;)}&quot;</span>
140
140
  <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Loading file #{url}&quot;</span>
141
- <span class="ruby-constant">DeathMasterFileLoader</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">url</span>,<span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>)).<span class="ruby-identifier">load_file</span>
141
+ <span class="ruby-keyword kw">yield</span> <span class="ruby-node">&quot;Loading file #{url}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
142
+ <span class="ruby-identifier">dmf</span> = <span class="ruby-constant">DeathMasterFileLoader</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">run_file_date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">&quot;%Y-%m-%d&quot;</span>)){<span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>}
143
+ <span class="ruby-identifier">dmf</span>.<span class="ruby-identifier">load_file</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span>
144
+ <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
145
+ <span class="ruby-keyword kw">end</span>
142
146
  <span class="ruby-identifier">run_file_date</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">month</span>
143
147
  <span class="ruby-keyword kw">end</span>
144
148
  <span class="ruby-keyword kw">end</span>
@@ -152,7 +156,7 @@ loaded, and loads each missing file in sequence up to the current file.
152
156
 
153
157
  <div class="method-heading">
154
158
  <a href="#M000001" class="method-signature">
155
- <span class="method-name">new</span><span class="method-args">(path_or_url,file_as_of)</span>
159
+ <span class="method-name">new</span><span class="method-args">(path_or_url, file_as_of) {|status if block_given?| ...}</span>
156
160
  </a>
157
161
  </div>
158
162
 
@@ -167,10 +171,10 @@ data is accurate.
167
171
  <div class="method-source-code" id="M000001-source">
168
172
  <pre>
169
173
  <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 11</span>
170
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">path_or_url</span>,<span class="ruby-identifier">file_as_of</span>)
174
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">path_or_url</span>, <span class="ruby-identifier">file_as_of</span>)
171
175
  <span class="ruby-ivar">@file_path_or_url</span> = <span class="ruby-identifier">path_or_url</span>
172
- <span class="ruby-ivar">@file_as_of</span> = <span class="ruby-identifier">file_as_of</span>
173
- <span class="ruby-identifier">valid?</span>
176
+ <span class="ruby-ivar">@file_as_of</span> = <span class="ruby-identifier">file_as_of</span>
177
+ <span class="ruby-identifier">valid?</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>}
174
178
  <span class="ruby-keyword kw">end</span>
175
179
  </pre>
176
180
  </div>
@@ -184,7 +188,7 @@ data is accurate.
184
188
 
185
189
  <div class="method-heading">
186
190
  <a href="#M000004" class="method-signature">
187
- <span class="method-name">get_file_from_web</span><span class="method-args">()</span>
191
+ <span class="method-name">get_file_from_web</span><span class="method-args">() {|&quot;%d%% done (%d of %d&quot; % [(size * 100) / total, size, total])| ...}</span>
188
192
  </a>
189
193
  </div>
190
194
 
@@ -193,18 +197,18 @@ data is accurate.
193
197
  onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
194
198
  <div class="method-source-code" id="M000004-source">
195
199
  <pre>
196
- <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 46</span>
200
+ <span class="ruby-comment cmt"># File lib/ssn_validator/models/death_master_file_loader.rb, line 47</span>
197
201
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_file_from_web</span>
198
- <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-ivar">@file_path_or_url</span>)
202
+ <span class="ruby-identifier">uri</span> = <span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-ivar">@file_path_or_url</span>)
199
203
 
200
204
  <span class="ruby-identifier">request</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span><span class="ruby-operator">::</span><span class="ruby-constant">Get</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">request_uri</span>)
201
- <span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-constant">SsnValidator</span><span class="ruby-operator">::</span><span class="ruby-constant">Ntis</span>.<span class="ruby-identifier">user_name</span>,<span class="ruby-constant">SsnValidator</span><span class="ruby-operator">::</span><span class="ruby-constant">Ntis</span>.<span class="ruby-identifier">password</span>)
205
+ <span class="ruby-identifier">request</span>.<span class="ruby-identifier">basic_auth</span>(<span class="ruby-constant">SsnValidator</span><span class="ruby-operator">::</span><span class="ruby-constant">Ntis</span>.<span class="ruby-identifier">user_name</span>, <span class="ruby-constant">SsnValidator</span><span class="ruby-operator">::</span><span class="ruby-constant">Ntis</span>.<span class="ruby-identifier">password</span>)
202
206
 
203
- <span class="ruby-identifier">http</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>)
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>)
207
+ <span class="ruby-identifier">http</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">uri</span>.<span class="ruby-identifier">host</span>, <span class="ruby-identifier">uri</span>.<span class="ruby-identifier">port</span>)
208
+ <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
209
  <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
210
 
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>
211
+ <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
212
  <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
213
  <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
214
  <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>)
@@ -213,6 +217,7 @@ data is accurate.
213
217
  <span class="ruby-identifier">size</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">size</span>
214
218
  <span class="ruby-identifier">csv_file</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">chunk</span>
215
219
  <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>]
220
+ <span class="ruby-keyword kw">yield</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>]) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
216
221
  <span class="ruby-keyword kw">end</span>
217
222
 
218
223
  <span class="ruby-keyword kw">end</span>
@@ -229,7 +234,7 @@ data is accurate.
229
234
 
230
235
  <div class="method-heading">
231
236
  <a href="#M000003" class="method-signature">
232
- <span class="method-name">load_file</span><span class="method-args">()</span>
237
+ <span class="method-name">load_file</span><span class="method-args">() {|&quot;Converting file to csv format for Mysql import. This could take several minutes.&quot; if block_given?| ...}</span>
233
238
  </a>
234
239
  </div>
235
240
 
@@ -243,12 +248,13 @@ data is accurate.
243
248
 
244
249
  <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>)
245
250
  <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>
251
+ <span class="ruby-keyword kw">yield</span> <span class="ruby-value str">&quot;Converting file to csv format for Mysql import. This could take several minutes.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
246
252
 
247
- <span class="ruby-identifier">csv_file</span> = <span class="ruby-identifier">convert_file_to_csv</span>
253
+ <span class="ruby-identifier">csv_file</span> = <span class="ruby-identifier">convert_file_to_csv</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>}
248
254
 
249
- <span class="ruby-identifier">bulk_mysql_update</span>(<span class="ruby-identifier">csv_file</span>)
255
+ <span class="ruby-identifier">bulk_mysql_update</span>(<span class="ruby-identifier">csv_file</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>}
250
256
  <span class="ruby-keyword kw">else</span>
251
- <span class="ruby-identifier">active_record_file_load</span>
257
+ <span class="ruby-identifier">active_record_file_load</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>}
252
258
  <span class="ruby-keyword kw">end</span>
253
259
 
254
260
  <span class="ruby-keyword kw">end</span>
@@ -262,7 +268,7 @@ data is accurate.
262
268
 
263
269
  <div class="method-heading">
264
270
  <a href="#M000002" class="method-signature">
265
- <span class="method-name">valid?</span><span class="method-args">()</span>
271
+ <span class="method-name">valid?</span><span class="method-args">() {|status if block_given?| ...}</span>
266
272
  </a>
267
273
  </div>
268
274
 
@@ -281,7 +287,7 @@ data is accurate.
281
287
  <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>)
282
288
  <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>)
283
289
  <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>)
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>)
290
+ <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>{<span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>})
285
291
  <span class="ruby-keyword kw">else</span>
286
292
  <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>)
287
293
  <span class="ruby-keyword kw">end</span>
@@ -114,7 +114,7 @@
114
114
 
115
115
  <div class="method-heading">
116
116
  <a href="#M000006" class="method-signature">
117
- <span class="method-name">load_all_high_group_codes_files</span><span class="method-args">()</span>
117
+ <span class="method-name">load_all_high_group_codes_files</span><span class="method-args">() {|status if block_given?| ...}</span>
118
118
  </a>
119
119
  </div>
120
120
 
@@ -146,7 +146,9 @@
146
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
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
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>))
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>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">status</span><span class="ruby-operator">|</span>
150
+ <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
151
+ <span class="ruby-keyword kw">end</span>
150
152
  <span class="ruby-identifier">file_processed</span> = <span class="ruby-keyword kw">true</span>
151
153
  <span class="ruby-keyword kw">break</span>
152
154
  <span class="ruby-keyword kw">end</span>
@@ -180,7 +182,7 @@ href="http://www.socialsecurity.gov/employer/ssns/highgroup.txt">www.socialsecur
180
182
  onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
181
183
  <div class="method-source-code" id="M000007-source">
182
184
  <pre>
183
- <span class="ruby-comment cmt"># File lib/ssn_validator/models/ssn_high_group_code_loader.rb, line 39</span>
185
+ <span class="ruby-comment cmt"># File lib/ssn_validator/models/ssn_high_group_code_loader.rb, line 41</span>
184
186
  <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>
185
187
  <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>))
186
188
  <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
- Tue, 21 Dec 2010 12:09:12 -0500
1
+ Mon, 07 Mar 2011 16:17:46 -0500
@@ -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 21 12:06:44 -0500 2010</td>
59
+ <td>Mon Mar 07 16:14:18 -0500 2011</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>Thu Sep 09 11:12:19 -0400 2010</td>
59
+ <td>Mon Mar 07 16:14:18 -0500 2011</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.8
8
+ ssn_validator 1.0.9
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.8</title>
13
+ <title>ssn_validator 1.0.9</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.8"
8
+ s.version = "1.0.9"
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-12-21}
12
+ s.date = %q{2011-03-07}
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
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 8
9
- version: 1.0.8
8
+ - 9
9
+ version: 1.0.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kevin Tyll
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-21 00:00:00 -05:00
17
+ date: 2011-03-07 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20