rsmart_toolbox 0.4 → 0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 03e485c6af0e8ad69f335bd9ae85b688e4ea8522
4
- data.tar.gz: 8b61849786e697ed743d3323ea5314dd7b480634
3
+ metadata.gz: b2e7e3f98bbbd519f2f57c8c5a9da33cca0a3de3
4
+ data.tar.gz: c90a54912dc4d9c536337697a13c028bbdfb8011
5
5
  SHA512:
6
- metadata.gz: 608569c7c6d2c1ea94da69e7db5ecf7f03b864f28457fb44ca10844c762ce0379b386801cb5dd974790374c1e864be6476a666cbd67b3d61eb22ba3f912a72f6
7
- data.tar.gz: 4eaf7f8dec003edc9a4d5df0587bf210eb4dca6bdff2d1f963ea132b034b08aa15da1613a9234474938aa225972e346759477033ca0f45cfbac83dc755eb289b
6
+ metadata.gz: 34892dcd8adf786319d6d4261fc291bda5cdeb4903c78ed8fcc74b0de74cc734c192886ce809b2c9a91e40f7916b21941214be55a32c7832787dbccc92a56b05
7
+ data.tar.gz: 6ec1f8e88e4a45aee20efb607c05169dee3994262093367915abc8a25ca138f850aa043672fa353d2c33a3b90db41ac208043d22e4cfdbfb36fc235831bb2065
checksums.yaml.gz.sig CHANGED
@@ -1 +1 @@
1
- ]���b+�>b ��)������9�Ej��]�\쿾��`�Ӏ�|rcqI�Di�
1
+ kd����Z}�>�f������22wtLH ι�
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -8,7 +8,12 @@ Client library and command-line tools to help interact with rSmart's cloud APIs.
8
8
 
9
9
  ## Installation
10
10
 
11
- Add this line to your application's Gemfile:
11
+ To simply install the gem and provide access to the command line tools:
12
+
13
+ $ gem install rsmart_toolbox
14
+
15
+ However, if you would like to reuse the our ruby modules in your own ruby program,
16
+ add this line to your application's Gemfile:
12
17
 
13
18
  ```ruby
14
19
  gem 'rsmart_toolbox'
@@ -18,10 +23,6 @@ And then execute:
18
23
 
19
24
  $ bundle
20
25
 
21
- Or install it yourself as:
22
-
23
- $ gem install rsmart_toolbox
24
-
25
26
  ## Usage
26
27
 
27
28
  ### transform_CSV_to_HR_XML
@@ -33,6 +34,9 @@ Usage: transform_CSV_to_HR_XML [options] csv_file
33
34
  --separator
34
35
  -q, --quote [quote_character] The character used to quote fields.
35
36
  -e, --email [email_recipients] Email recipient list that will receive job report status.
37
+ -u, --username [username] The username used to authenticate to the HR REST API.
38
+ -p, --password [password] The password used to authenticate to the HR REST API.
39
+ -l, --url [url] The full URL of the HR REST API; e.g. https://localhost/kc-dev/hr-import/hrimport/import
36
40
  -h, --help Display this screen
37
41
  ```
38
42
 
@@ -8,7 +8,7 @@ require 'csv'
8
8
  require 'net/http'
9
9
  require 'nokogiri'
10
10
  require 'optparse'
11
- require 'ostruct'
11
+ require 'rest_client'
12
12
  require 'tempfile'
13
13
  require 'time'
14
14
  require 'rsmart_toolbox/etl/grm'
@@ -17,7 +17,7 @@ ETL = Rsmart::ETL
17
17
  GRM = Rsmart::ETL::GRM
18
18
  TextParseError = Rsmart::ETL::TextParseError
19
19
 
20
- def self.parse_csv_command_line_options(
20
+ def self.parse_command_line_options(
21
21
  executable, args, opt={ csv_options: { headers: :first_row,
22
22
  header_converters: :symbol,
23
23
  skip_blanks: true,
@@ -30,15 +30,24 @@ def self.parse_csv_command_line_options(
30
30
  opts.on( '-o [xml_file_output]' ,'--output [xml_file_output]', 'The file in which the the XML data will be writen (defaults to <csv_file>.xml)') do |f|
31
31
  opt[:xml_filename] = f
32
32
  end
33
- opts.on( '-s [separator_character]' ,'--separator [separator_character]', 'The character that separates each column of the CSV file.') do |s|
33
+ opts.on( '-s [separator_character]' ,'--separator [separator_character]', 'The character that separates each column of the CSV file.' ) do |s|
34
34
  opt[:col_sep] = s
35
35
  end
36
- opts.on( '-q [quote_character]' ,'--quote [quote_character]', 'The character used to quote fields.') do |q|
36
+ opts.on( '-q [quote_character]' ,'--quote [quote_character]', 'The character used to quote fields.' ) do |q|
37
37
  opt[:quote_char] = q
38
38
  end
39
- opts.on('-e [email_recipients]', '--email [email_recipients]', 'Email recipient list that will receive job report status.') do |e|
39
+ opts.on( '-e [email_recipients]', '--email [email_recipients]', 'Email recipient list that will receive job report status.' ) do |e|
40
40
  opt[:email_recipients] = e
41
41
  end
42
+ opts.on( '-u [username]', '--username [username]', 'The username used to authenticate to the HR REST API.' ) do |u|
43
+ opt[:username] = u
44
+ end
45
+ opts.on( '-p [password]', '--password [password]', 'The password used to authenticate to the HR REST API.' ) do |p|
46
+ opt[:password] = p
47
+ end
48
+ opts.on( '-l [url]', '--url [url]', 'The full URL of the HR REST API; e.g. https://localhost/kc-dev/hr-import/hrimport/import' ) do |l|
49
+ opt[:url] = l
50
+ end
42
51
  opts.on( '-h', '--help', 'Display this screen' ) do
43
52
  puts opts
44
53
  exit 1
@@ -64,10 +73,16 @@ def self.parse_csv_command_line_options(
64
73
  opt[:email_recipients] = "no-reply@rsmart.com"
65
74
  end
66
75
 
76
+ if opt[:url]
77
+ unless opt[:username] && opt[:password]
78
+ raise ArgumentError, "Username and password are required when POSTing to a URL!"
79
+ end
80
+ end
81
+
67
82
  return opt
68
83
  end
69
84
 
70
- opt = parse_csv_command_line_options (File.basename $0), ARGF.argv
85
+ opt = parse_command_line_options (File.basename $0), ARGF.argv
71
86
 
72
87
  CSV.open(opt[:csv_filename], opt[:csv_options]) do |csv|
73
88
  record_count = csv.readlines.count
@@ -261,7 +276,7 @@ CSV.open(opt[:csv_filename], opt[:csv_options]) do |csv|
261
276
  end # row
262
277
  end # record
263
278
  end # hrmanifest
264
- end # file
279
+ end # xml_file
265
280
  end # csv
266
281
  puts "\nXML file written to #{opt[:xml_filename]}\n\n"
267
282
 
@@ -280,9 +295,9 @@ Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
280
295
  doc = Nokogiri::XML File.read opt[:xml_filename]
281
296
  xml_errors = xsd.validate doc
282
297
  if xml_errors.empty?
283
- puts "Congratulations! The XML file passes XSD schema validation! w00t!"
298
+ puts "Congratulations! The XML file passes XSD schema validation! w00t!\n\n"
284
299
  else
285
- puts "The XML file does NOT pass XSD schema validation!:"
300
+ puts "Sorry, the XML file does NOT pass XSD schema validation!:"
286
301
  xml_errors.each do |error|
287
302
  puts error.message
288
303
  end
@@ -290,3 +305,10 @@ Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
290
305
  end
291
306
  end # file
292
307
  end
308
+
309
+ # POST the XML file to the server if opt[:url]
310
+ if opt[:url]
311
+ resource = RestClient::Resource.new( opt[:url], opt[:username], opt[:password] )
312
+ resource.post file: File.new(opt[:xml_filename], 'rt'), content_type: 'multipart/form-data', multipart: true
313
+ puts "\n"
314
+ end
@@ -114,7 +114,7 @@ module Rsmart::ETL::GRM
114
114
 
115
115
  def self.parse_address_type_code(str, opt={})
116
116
  # TODO find real column name
117
- opt[:name] = "TODO_address_type_code" if opt[:name].nil?
117
+ opt[:name] = "ADDR_TYP_CD" if opt[:name].nil?
118
118
  opt[:length] = 3 if opt[:length].nil?
119
119
  opt[:valid_values] = /^(HM|OTH|WRK)$/i if opt[:valid_values].nil?
120
120
  return Rsmart::ETL::parse_flag str, opt
@@ -145,7 +145,7 @@ module Rsmart::ETL::GRM
145
145
 
146
146
  def self.parse_phone_type(str, opt={})
147
147
  # TODO find real column name
148
- opt[:name] = "TODO_phone_type" if opt[:name].nil?
148
+ opt[:name] = "PHONE_TYP_CD" if opt[:name].nil?
149
149
  opt[:length] = 3 if opt[:length].nil?
150
150
  opt[:valid_values] = /^(FAX|HM|MBL|OTH|WRK)$/i if opt[:valid_values].nil?
151
151
  return Rsmart::ETL::parse_flag str, opt
@@ -15,5 +15,5 @@
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
 
17
17
  module Rsmart
18
- VERSION = "0.4"
18
+ VERSION = "0.5"
19
19
  end
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
37
37
 
38
38
  spec.add_runtime_dependency 'builder', '~> 3.2.2'
39
39
  spec.add_runtime_dependency 'nokogiri', '~> 1.6.3.1'
40
+ spec.add_runtime_dependency 'rest-client', '~> 1.7.2'
40
41
 
41
42
  spec.required_ruby_version = '>= 1.9'
42
43
  spec.add_development_dependency "bundler", "~> 1.6"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmart_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: '0.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lance Speelmon
@@ -30,7 +30,7 @@ cert_chain:
30
30
  sKRWzEtHFamxQaIspOja5O4oQKiCbWa90fEuIoCtwyy1rQtL9VKoDTs4vZASXNuc
31
31
  F/lEyekXSjN36uTtlt4LkKLn/k7k5gRbt4+C9Q==
32
32
  -----END CERTIFICATE-----
33
- date: 2014-08-12 00:00:00.000000000 Z
33
+ date: 2014-08-17 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: builder
@@ -60,6 +60,20 @@ dependencies:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 1.6.3.1
63
+ - !ruby/object:Gem::Dependency
64
+ name: rest-client
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.7.2
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 1.7.2
63
77
  - !ruby/object:Gem::Dependency
64
78
  name: bundler
65
79
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file