rsmart_toolbox 0.4 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
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