openapply 0.2.8 → 0.2.9

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
  SHA256:
3
- metadata.gz: 7daf1c8615f04294450317b2673835f0861e7fa090677da1ace14d15d11a6eef
4
- data.tar.gz: e13d752545d7d5d4b068754ae85fb318982d1b57f06cc86f99865853ebe782b6
3
+ metadata.gz: a0be02e1d15d91a8728fd5976a12bf17b0891c659646cba982ad30ee4eb19733
4
+ data.tar.gz: f4260bbd1314883afee1986b1123090cd29c20b93292f423789f0b8f69aba14b
5
5
  SHA512:
6
- metadata.gz: 29abae7f308e955673d1a75d7c43cd8a549fefdfea4b957c461a34dfb15f4f58fc8a3b490be31357dbd1683e039ce819429cdb59c10f010903ee57e1fab3581c
7
- data.tar.gz: 75f3cd2d673087d9ef22defbdd2d5066eaae3768ebe861448c0f9fc97baf0a6d507a73b106c2aeb685a8a07e5d128c4357f7efca4bead81b1a91c857a0e2e252
6
+ metadata.gz: c6e2e549759e97d3c07ce54de63f74c57a2f141f865031789521caf117adc7c844c6335c982f71b177671ef2134f2906f52a4ba16423bae0a03672f8fc66b053
7
+ data.tar.gz: ac1d72e8f5f1a264d276bd41c950a5108517bc36af448b7d3b8462083d696cc4fdd301ce1e3741aa179aae5df5cbc81c73581367e84fcbfbb848dfed99dc655b
data/Gemfile CHANGED
@@ -7,6 +7,8 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
7
7
  # ref: '776037c0fc799bb09da8c9ea47980bd3bf296874'
8
8
 
9
9
  # https://github.com/randym/axlsx/issues/501
10
+ # https://github.com/straydogstudio/axlsx_rails/issues/77
11
+ # gem 'axlsx', "2.1.0.pre", git: 'https://github.com/randym/axlsx', branch: 'master'
10
12
  # gem 'axlsx', git: 'https://github.com/randym/axlsx', branch: 'master'
11
13
  # gem 'axlsx', git: 'https://github.com/randym/axlsx.git', ref: '776037c0fc799bb09da8c9ea47980bd3bf296874'
12
14
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openapply (0.2.8)
4
+ openapply (0.2.9)
5
5
  httparty (~> 0.15)
6
6
  json (~> 2.1)
7
7
  net-scp (~> 1.2)
@@ -22,15 +22,21 @@ GEM
22
22
  multi_xml (>= 0.5.2)
23
23
  json (2.1.0)
24
24
  method_source (0.9.0)
25
+ mini_portile2 (2.3.0)
25
26
  multi_xml (0.6.0)
26
27
  net-scp (1.2.1)
27
28
  net-ssh (>= 2.6.5)
28
29
  net-ssh (4.2.0)
30
+ nokogiri (1.8.1)
31
+ mini_portile2 (~> 2.3.0)
29
32
  pry (0.11.3)
30
33
  coderay (~> 1.1.0)
31
34
  method_source (~> 0.9.0)
32
35
  public_suffix (3.0.1)
33
36
  rake (10.5.0)
37
+ roo (2.7.1)
38
+ nokogiri (~> 1)
39
+ rubyzip (~> 1.1, < 2.0.0)
34
40
  rspec (3.7.0)
35
41
  rspec-core (~> 3.7.0)
36
42
  rspec-expectations (~> 3.7.0)
@@ -44,6 +50,7 @@ GEM
44
50
  diff-lcs (>= 1.2.0, < 2.0)
45
51
  rspec-support (~> 3.7.0)
46
52
  rspec-support (3.7.0)
53
+ rubyzip (1.2.1)
47
54
  safe_yaml (1.0.4)
48
55
  simplecov (0.15.1)
49
56
  docile (~> 1.1.0)
@@ -63,6 +70,7 @@ DEPENDENCIES
63
70
  openapply!
64
71
  pry (~> 0.11)
65
72
  rake (~> 10.0)
73
+ roo (~> 2.7)
66
74
  rspec (~> 3.7)
67
75
  simplecov (~> 0.15)
68
76
  webmock (~> 3.1)
data/README.md CHANGED
@@ -5,24 +5,23 @@ This gem allows ruby access to the OpenApply API v1 - and supports the GET featu
5
5
 
6
6
  ### Still TODO
7
7
 
8
- * **add google sheets to convert**
9
- * make tests for scp / ssh (at least data type conversions)
10
- * allow csv and xlsx reports with default summary info only?
8
+ * allow flattening to work with arrays?
9
+ * allow flattening and reject to work at 2 levels of depth?
10
+ * make tests for scp / ssh (at least data type conversions)?
11
11
  * write PUTS methods - *currently api only allows status update*
12
12
  * write a recursive custom query - when results are more than one page
13
- * **allow flattening and reject to work at any depth (with recursion?)**
13
+ * allow flattening and reject to work at any depth (with recursion)?
14
14
  * speed up response when returning large number of records? - **looks like API**
15
15
 
16
16
 
17
17
  ### CHANGE LOG
18
18
 
19
- * **v0.2.9** - compatible with 0.2.x - 2017-12-?? *(https://github.com/straydogstudio/axlsx_rails/issues/77)*
20
- - allow flattening to work with arrays
21
- - allow flattening and reject to work at 2 levels of depth
22
- - allow flattening and reject to work at any depth (with recursion?)
19
+ * **v0.2.9** - compatible with 0.2.x - 2017-12-13 *(https://github.com/straydogstudio/axlsx_rails/issues/77)*
20
+ - separated convert (& its dependencies) into separate modules that can be loaded on need in the next version (0.3.x)
21
+ - hash to array now handles both student_details and student_summaries (this also allows conversion then to csv)
23
22
 
24
23
  * **v0.2.8** - compatible with 0.2.x - 2017-12-11 *(https://github.com/randym/axlsx/issues/234)*
25
- - axlsx - passes tests - but won't run embedded in a rails app - pulling axlsx again!
24
+ - axlsx - passes tests - but won't properly install inside another project (even using gem install ./openapply-0.2.7) - will look for a solution
26
25
 
27
26
  * **v0.2.7** - compatible with 0.2.x - 2017-12-10
28
27
  - safely re-enabled axlsx by using the master branch and upgradeing rubyzip
@@ -1,7 +1,12 @@
1
+
2
+ require "openapply/convert_to_array"
3
+ # require "openapply/convert_to_xlsx"
4
+ require "openapply/convert_to_csv"
5
+ require "openapply/send_to_remote"
1
6
  require "openapply/get_students"
2
7
  require "openapply/get_student"
3
- require "openapply/convert"
4
- require "openapply/client"
8
+ # require "openapply/convert"
9
+ # require "openapply/client"
5
10
  require "openapply/put"
6
11
  require 'httparty'
7
12
 
@@ -14,12 +19,16 @@ module Openapply
14
19
 
15
20
  # PUT api calls
16
21
  include Put
17
-
18
22
  # GET api calls
19
23
  include Get
20
-
21
24
  # Convert student data to various formats
22
- include Convert
25
+ include ConvertToArray
26
+ # AXLSX files
27
+ include ConvertToCsv
28
+ # AXLSX files
29
+ # include ConvertToXlsx
30
+ # Send To Remote ssh
31
+ include SendToRemote
23
32
 
24
33
  # Library for API calls to OpenApply
25
34
  include HTTParty
@@ -56,7 +65,7 @@ module Openapply
56
65
  # Defines and makes visible the maximum records OpenApply should return
57
66
  # (code default is 50 - OA default is 10 - doc says 100)
58
67
  def api_records
59
- ENV['OA_REPLY_RECORDS'] || '50'
68
+ ENV['OA_RECORD_COUNT'] || '50'
60
69
  end
61
70
 
62
71
  # Does the actual api call to OpenApply & handles API timeouts gracefully
@@ -1,4 +1,4 @@
1
- require 'csv'
1
+ # require 'csv'
2
2
  # require 'axlsx'
3
3
  require 'net/scp'
4
4
  require 'net/ssh'
@@ -6,7 +6,8 @@ require 'net/ssh'
6
6
  # CODE THAT TRANSFORMS STUDENT DATA
7
7
  ###################################
8
8
 
9
- module Convert
9
+ module ConvertToArray
10
+
10
11
 
11
12
  # Queries by status to get a list of students details of a given status
12
13
  # and converts the result to an array with headers (based on keys sent)
@@ -45,122 +46,6 @@ module Convert
45
46
 
46
47
 
47
48
 
48
- # CSV CODE
49
- ##########
50
-
51
- # Queries by status to get a list of students details of a given status
52
- # and converts the result to a CSV string with headers (based on keys sent)
53
- #
54
- # ==== Attributes
55
- # * +status+ - hash to convert to an array
56
- # * +flatten_keys+ - an array of keys to bring to the top level
57
- # (with this key prepened) -- default (blank does nothing)
58
- # * +reject_keys+ - an array of keys to remove from the data -- default (blank does nothing)
59
- # * +student_keys+ - [:id, :name] - include student record keys
60
- # * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
61
- # * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
62
- # * guardian & payment info options:
63
- # count: 2 -- how many parent or payment records to return)
64
- # keys: [:id, :date] -- an array of keys of data to return
65
- # order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
66
- def students_as_csv_by_status( status,
67
- flatten_keys=[], reject_keys=[],
68
- student_keys=[],
69
- guardian_info={}, payment_info={})
70
- #
71
- check = check_details_keys_validity(flatten_keys, reject_keys)
72
- return check unless check.nil? # or check[:error].nil?
73
- # check = check_header_keys_validity(student_keys, guardian_info, payment_info)
74
- # return check unless check.nil?
75
- #
76
- students_array = students_as_array_by_status( status,
77
- flatten_keys, reject_keys,
78
- student_keys, guardian_info, payment_info )
79
- #
80
- return students_array if students_array.is_a? Hash
81
- #
82
- student_csv_txt = students_array_to_csv( students_array )
83
- end
84
- alias_method :students_as_csv_by_statuses, :students_as_csv_by_status
85
-
86
- # Given an array convert to CSV string
87
- #
88
- # ==== Attributes
89
- # +array+ - expects a hash of students_details (should be flattened to use custom fields)
90
- def students_array_to_csv(array)
91
- return "" if array.nil? or array.empty?
92
- # https://stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby
93
- csv_string = CSV.generate do |csv|
94
- array.each do |row|
95
- csv << row
96
- end
97
- end
98
- return csv_string
99
- end
100
-
101
-
102
- # # XLSX CODE
103
- # ###########
104
- #
105
- #
106
- # # Queries by status to get a list of students details of a given status
107
- # # and converts the result to a XLSX Object (Axlsx::Package) with headers
108
- # # (based on keys sent)
109
- # #
110
- # # ==== Attributes
111
- # # * +status+ - hash to convert to an array
112
- # # * +flatten_keys+ - an array of keys to bring to the top level
113
- # # (with this key prepened) -- default (blank does nothing)
114
- # # * +reject_keys+ - an array of keys to remove from the data -- default (blank does nothing)
115
- # # * +student_keys+ - [:id, :name] - include student record keys
116
- # # * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
117
- # # * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
118
- # # * guardian & payment info options:
119
- # # count: 2 -- how many parent or payment records to return)
120
- # # keys: [:id, :date] -- an array of keys of data to return
121
- # # order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
122
- # def students_as_xlsx_by_status( status,
123
- # flatten_keys=[], reject_keys=[],
124
- # student_keys=[],
125
- # guardian_info={}, payment_info={})
126
- # #
127
- # check = check_details_keys_validity(flatten_keys, reject_keys)
128
- # return check unless check.nil? # or check[:error].nil?
129
- # # check = check_header_keys_validity(student_keys, guardian_info, payment_info)
130
- # # return check unless check.nil?
131
- # #
132
- # students_array = students_as_array_by_status( status,
133
- # flatten_keys, reject_keys,
134
- # student_keys, guardian_info, payment_info )
135
- # #
136
- # return students_array if students_array.is_a? Hash
137
- # #
138
- # students_xlsx = students_array_to_xlsx( students_array )
139
- #
140
- # # example how to save the xlsx object as a file
141
- # # students_xlsx.serialize("spec/data/xlsx/students_from_oa.xlsx")
142
- #
143
- # return students_xlsx
144
- # end
145
- # alias_method :students_as_xlsx_by_statuses, :students_as_xlsx_by_status
146
- #
147
-
148
- # # Given an array convert to XLSX Object (Axlsx::Package)
149
- # #
150
- # # ==== Attributes
151
- # # +array+ - expects a hash of students_details (should be flattened to use custom fields)
152
- # def students_array_to_xlsx(student_array)
153
- # xlsx_obj = Axlsx::Package.new do |p|
154
- # p.workbook.add_worksheet(:name => "Students from OpenApply") do |sheet|
155
- # student_array.each{ |r| sheet.add_row r }
156
- # end
157
- # # to save the xlsx object as a file
158
- # # p.serialize("spec/data/xlsx/students_from_oa.xlsx")
159
- # end
160
- # return xlsx_obj
161
- # end
162
-
163
-
164
49
  # ARRAY CODE
165
50
  ############
166
51
 
@@ -190,9 +75,18 @@ module Convert
190
75
  # next if student.nil? or student.empty? or
191
76
  # student[:record].nil? or student[:record].empty?
192
77
 
193
- kid_record = student[:record]
194
- guardians = student[:guardians]
195
- payments = student[:payments]
78
+ # when student summary data
79
+ if student[:record].nil?
80
+ kid_record = student
81
+ guardians = []
82
+ payments = []
83
+ end
84
+ # when student detailed data
85
+ if student[:record]
86
+ kid_record = student[:record]
87
+ guardians = student[:guardians]
88
+ payments = student[:payments]
89
+ end
196
90
 
197
91
  # inject student record info into the array
198
92
  student_keys.each{ |key| row << kid_record[key] }
@@ -283,62 +177,6 @@ module Convert
283
177
  return headers
284
178
  end
285
179
 
286
- # XFER CODE
287
- ###########
288
-
289
- # Send a string to convert to a file on a remote server
290
- # setup using ssh keys - not sure how to test - use at own risk
291
- #
292
- # === Attributes
293
- # * +data+ - object to be converted to a file on a remote system --
294
- # object can be a CSV String, Axlsx::Package or File object to be transfered
295
- # * +srv_hostname+ - fqdn or IP address of the remote host
296
- # * +srv_hostname+ - username to access the remote host
297
- # * +srv_path_file+ - full path and file name of the file on the remote host
298
- # * +file_permissions+ - permissions to make the file on the remote host (default is: 0750)
299
- # * +options+ - allow ssh start options to be passed in
300
- def send_data_to_remote_server( data, srv_hostname, srv_username,
301
- srv_path_file, srv_file_permissions="0750",
302
- ssl_options={}
303
- )
304
- # be sure its a file type that can be sent
305
- return "Unrecognized Object" unless known_transfer_object?(data)
306
-
307
- # Prep data as necessary for scp
308
- # https://www.safaribooksonline.com/library/view/ruby-cookbook/0596523696/ch06s15.html
309
- # convert the string to a stringio object (which can act as a file)
310
- # xfer = data.to_stream() if data.is_a? Axlsx::Package
311
- xfer = data if data.is_a? StringIO
312
- xfer = StringIO.new( data ) if data.is_a? String
313
- xfer = data if data.is_a? File
314
-
315
- # http://www.rubydoc.info/github/delano/net-scp/Net/SCP
316
- # send the stringio object to the remote host via scp
317
- Net::SCP.start(srv_hostname, srv_username, ssl_options) do |scp|
318
- # asynchronous upload; call returns immediately
319
- channel = scp.upload( xfer, srv_path_file )
320
- channel.wait
321
- end
322
- # ensure file has desired permissions (via remote ssh command)
323
- Net::SSH.start(srv_hostname, srv_username, ssl_options) do |ssh|
324
- # Capture all stderr and stdout output from a remote process
325
- output = ssh.exec!("chmod #{srv_file_permissions} #{srv_path_file}")
326
- end
327
- end
328
- alias_method :send_string_to_server_file, :send_data_to_remote_server
329
-
330
- # Check that the data to transfer is of a known data type
331
- #
332
- # === Attributes
333
- # * +data+ - is it an Axlsx::Package, Sting, StringIO or a File class?
334
- def known_transfer_object?( data )
335
- # return true if data.is_a? Axlsx::Package
336
- return true if data.is_a? StringIO
337
- return true if data.is_a? String
338
- return true if data.is_a? File
339
- return false
340
- end
341
-
342
180
  # Check header info before processing
343
181
  #
344
182
  # === Attributes
@@ -0,0 +1,59 @@
1
+ require 'csv'
2
+
3
+ # CODE THAT TRANSFORMS STUDENT DATA
4
+ ###################################
5
+
6
+ module ConvertToCsv
7
+
8
+
9
+ # Queries by status to get a list of students details of a given status
10
+ # and converts the result to a CSV string with headers (based on keys sent)
11
+ #
12
+ # ==== Attributes
13
+ # * +status+ - hash to convert to an array
14
+ # * +flatten_keys+ - an array of keys to bring to the top level
15
+ # (with this key prepened) -- default (blank does nothing)
16
+ # * +reject_keys+ - an array of keys to remove from the data -- default (blank does nothing)
17
+ # * +student_keys+ - [:id, :name] - include student record keys
18
+ # * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
19
+ # * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
20
+ # * guardian & payment info options:
21
+ # count: 2 -- how many parent or payment records to return)
22
+ # keys: [:id, :date] -- an array of keys of data to return
23
+ # order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
24
+ def students_as_csv_by_status( status,
25
+ flatten_keys=[], reject_keys=[],
26
+ student_keys=[],
27
+ guardian_info={}, payment_info={})
28
+ #
29
+ check = check_details_keys_validity(flatten_keys, reject_keys)
30
+ return check unless check.nil? # or check[:error].nil?
31
+ # check = check_header_keys_validity(student_keys, guardian_info, payment_info)
32
+ # return check unless check.nil?
33
+ #
34
+ students_array = students_as_array_by_status( status,
35
+ flatten_keys, reject_keys,
36
+ student_keys, guardian_info, payment_info )
37
+ #
38
+ return students_array if students_array.is_a? Hash
39
+ #
40
+ student_csv_txt = students_array_to_csv( students_array )
41
+ end
42
+ alias_method :students_as_csv_by_statuses, :students_as_csv_by_status
43
+
44
+ # Given an array convert to CSV string
45
+ #
46
+ # ==== Attributes
47
+ # +array+ - expects a hash of students_details (should be flattened to use custom fields)
48
+ def students_array_to_csv(array)
49
+ return "" if array.nil? or array.empty?
50
+ # https://stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby
51
+ csv_string = CSV.generate do |csv|
52
+ array.each do |row|
53
+ csv << row
54
+ end
55
+ end
56
+ return csv_string
57
+ end
58
+
59
+ end
@@ -0,0 +1,80 @@
1
+ require 'axlsx'
2
+
3
+ # CODE THAT TRANSFORMS STUDENT DATA INTO XLSX DATA
4
+ ##################################################
5
+
6
+ module ConvertToXlsx
7
+
8
+ # XLSX CODE
9
+ ###########
10
+
11
+ # Queries by status to get a list of students details of a given status
12
+ # and converts the result to a XLSX Object (Axlsx::Package) with headers
13
+ # (based on keys sent)
14
+ #
15
+ # ==== Attributes
16
+ # * +status+ - hash to convert to an array
17
+ # * +flatten_keys+ - an array of keys to bring to the top level
18
+ # (with this key prepened) -- default (blank does nothing)
19
+ # * +reject_keys+ - an array of keys to remove from the data -- default (blank does nothing)
20
+ # * +student_keys+ - [:id, :name] - include student record keys
21
+ # * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
22
+ # * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
23
+ # * guardian & payment info options:
24
+ # count: 2 -- how many parent or payment records to return)
25
+ # keys: [:id, :date] -- an array of keys of data to return
26
+ # order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
27
+ def students_as_xlsx_by_status( status,
28
+ flatten_keys=[], reject_keys=[],
29
+ student_keys=[],
30
+ guardian_info={}, payment_info={})
31
+ #
32
+ check = check_details_keys_validity(flatten_keys, reject_keys)
33
+ return check unless check.nil? # or check[:error].nil?
34
+ # check = check_header_keys_validity(student_keys, guardian_info, payment_info)
35
+ # return check unless check.nil?
36
+ #
37
+ students_array = students_as_array_by_status( status,
38
+ flatten_keys, reject_keys,
39
+ student_keys, guardian_info, payment_info )
40
+ #
41
+ return students_array if students_array.is_a? Hash
42
+ #
43
+ students_xlsx = students_array_to_xlsx( students_array )
44
+
45
+ # example how to save the xlsx object as a file
46
+ # students_xlsx.serialize("spec/data/xlsx/students_from_oa.xlsx")
47
+
48
+ return students_xlsx
49
+ end
50
+ alias_method :students_as_xlsx_by_statuses, :students_as_xlsx_by_status
51
+
52
+
53
+ # Given an array convert to XLSX Object (Axlsx::Package)
54
+ #
55
+ # ==== Attributes
56
+ # +array+ - expects a hash of students_details (should be flattened to use custom fields)
57
+ def students_array_to_xlsx(student_array)
58
+ xlsx_obj = Axlsx::Package.new do |p|
59
+ p.workbook.add_worksheet(:name => "Students from OpenApply") do |sheet|
60
+ student_array.each{ |r| sheet.add_row r }
61
+ end
62
+ # to save the xlsx object as a file
63
+ # p.serialize("spec/data/xlsx/students_from_oa.xlsx")
64
+ end
65
+ return xlsx_obj
66
+ end
67
+
68
+ def send_xlsx_to_remote_server( data, srv_hostname, srv_username,
69
+ srv_path_file, srv_file_permissions="0750",
70
+ ssl_options={}
71
+ )
72
+ return false unless data.is_a? Axlsx::Package
73
+ xfer = data.to_stream() if data.is_a? Axlsx::Package
74
+ send_data_to_remote_server( xfer, srv_hostname, srv_username,
75
+ srv_path_file, srv_file_permissions,
76
+ ssl_options
77
+ )
78
+ end
79
+
80
+ end
@@ -0,0 +1,61 @@
1
+ require 'net/scp'
2
+ require 'net/ssh'
3
+
4
+ # CODE THAT TRANSFORMS STUDENT DATA
5
+ ###################################
6
+
7
+ module SendToRemote
8
+
9
+ # Send a string to convert to a file on a remote server
10
+ # setup using ssh keys - not sure how to test - use at own risk
11
+ #
12
+ # === Attributes
13
+ # * +data+ - object to be converted to a file on a remote system --
14
+ # object can be a CSV String, Axlsx::Package or File object to be transfered
15
+ # * +srv_hostname+ - fqdn or IP address of the remote host
16
+ # * +srv_hostname+ - username to access the remote host
17
+ # * +srv_path_file+ - full path and file name of the file on the remote host
18
+ # * +file_permissions+ - permissions to make the file on the remote host (default is: 0750)
19
+ # * +options+ - allow ssh start options to be passed in
20
+ def send_data_to_remote_server( data, srv_hostname, srv_username,
21
+ srv_path_file, srv_file_permissions="0750",
22
+ ssl_options={}
23
+ )
24
+ # be sure its a file type that can be sent
25
+ return "Unrecognized Object" unless known_transfer_object?(data)
26
+
27
+ # Prep data as necessary for scp
28
+ # https://www.safaribooksonline.com/library/view/ruby-cookbook/0596523696/ch06s15.html
29
+ # convert the string to a stringio object (which can act as a file)
30
+
31
+ xfer = data if data.is_a? StringIO
32
+ xfer = StringIO.new( data ) if data.is_a? String
33
+ xfer = data if data.is_a? File
34
+
35
+ # http://www.rubydoc.info/github/delano/net-scp/Net/SCP
36
+ # send the stringio object to the remote host via scp
37
+ Net::SCP.start(srv_hostname, srv_username, ssl_options) do |scp|
38
+ # asynchronous upload; call returns immediately
39
+ channel = scp.upload( xfer, srv_path_file )
40
+ channel.wait
41
+ end
42
+ # ensure file has desired permissions (via remote ssh command)
43
+ Net::SSH.start(srv_hostname, srv_username, ssl_options) do |ssh|
44
+ # Capture all stderr and stdout output from a remote process
45
+ output = ssh.exec!("chmod #{srv_file_permissions} #{srv_path_file}")
46
+ end
47
+ end
48
+ alias_method :send_string_to_server_file, :send_data_to_remote_server
49
+
50
+ # Check that the data to transfer is of a known data type
51
+ #
52
+ # === Attributes
53
+ # * +data+ - is it an Axlsx::Package, Sting, StringIO or a File class?
54
+ def known_transfer_object?( data )
55
+ return true if data.is_a? StringIO
56
+ return true if data.is_a? String
57
+ return true if data.is_a? File
58
+ return false
59
+ end
60
+
61
+ end
@@ -1,3 +1,3 @@
1
1
  module Openapply
2
- VERSION = "0.2.8"
2
+ VERSION = "0.2.9"
3
3
  end
@@ -44,7 +44,8 @@ Gem::Specification.new do |spec|
44
44
  # https://github.com/straydogstudio/axlsx_rails/issues/77
45
45
  # gem 'axlsx', git: 'https://github.com/randym/axlsx.git',
46
46
  # ref: '776037c0fc799bb09da8c9ea47980bd3bf296874'
47
- # spec.add_dependency 'axlsx', "2.1.0.pre"
47
+ # spec.add_dependency 'axlsx', git: 'https://github.com/randym/axlsx', branch: 'master'
48
+ # spec.add_dependency 'axlsx', "2.1.0.pre", git: 'https://github.com/randym/axlsx', branch: 'master'
48
49
  # # https://github.com/randym/axlsx/issues/234
49
50
  # # spec.add_dependency 'zip-zip'
50
51
  #
@@ -54,6 +55,8 @@ Gem::Specification.new do |spec|
54
55
  # don't use official release - use above
55
56
  # spec.add_dependency "axlsx", "2.1.0.pre"
56
57
  # spec.add_dependency "rubyzip", "~> 1.2"
58
+ # spec.add_runtime_dependency "axlsx", "2.1.0.pre"
59
+ # spec.add_runtime_dependency "rubyzip", "~> 1.2"
57
60
 
58
61
  spec.add_development_dependency "simplecov", "~> 0.15"
59
62
  spec.add_development_dependency "webmock" , "~> 3.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openapply
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bill Tihen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-11 00:00:00.000000000 Z
11
+ date: 2017-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -174,10 +174,13 @@ files:
174
174
  - examples/demo/demo_site.rb
175
175
  - lib/openapply.rb
176
176
  - lib/openapply/client.rb
177
- - lib/openapply/convert.rb
177
+ - lib/openapply/convert_to_array.rb
178
+ - lib/openapply/convert_to_csv.rb
179
+ - lib/openapply/convert_to_xlsx.rb
178
180
  - lib/openapply/get_student.rb
179
181
  - lib/openapply/get_students.rb
180
182
  - lib/openapply/put.rb
183
+ - lib/openapply/send_to_remote.rb
181
184
  - lib/openapply/version.rb
182
185
  - openapply.gemspec
183
186
  homepage: https://github.com/btihen/openapply