openapply 0.2.10 → 0.3.0
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +7 -7
- data/.travis.yml.bak +18 -0
- data/CHANGE_LOG.md +50 -0
- data/Gemfile.lock +6 -4
- data/MM +0 -0
- data/README.md +26 -200
- data/lib/openapply/client.rb +13 -39
- data/lib/openapply/get_many_students.rb +125 -0
- data/lib/openapply/get_one_student.rb +65 -0
- data/lib/openapply/version.rb +1 -1
- data/openapply.gemspec +9 -39
- metadata +17 -18
- data/examples/demo/Gemfile +0 -6
- data/examples/demo/Gemfile.lock +0 -24
- data/examples/demo/README.md +0 -123
- data/examples/demo/demo_site.rb +0 -92
- data/lib/openapply/convert_to_array.rb +0 -215
- data/lib/openapply/convert_to_csv.rb +0 -59
- data/lib/openapply/convert_to_xlsx.rb +0 -80
- data/lib/openapply/get_student.rb +0 -219
- data/lib/openapply/get_students.rb +0 -209
- data/lib/openapply/send_to_remote.rb +0 -61
data/examples/demo/demo_site.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'httparty'
|
4
|
-
require 'openapply'
|
5
|
-
|
6
|
-
class MySite < Openapply::Client
|
7
|
-
include HTTParty
|
8
|
-
|
9
|
-
# Defines OpenApply domain name from ENV-VARS
|
10
|
-
API_URL = ENV['MY_API_BASE_URI']
|
11
|
-
|
12
|
-
# Defines the OpenApply path from ENV-VARS - default is 5 seconds
|
13
|
-
API_TIMEOUT = (ENV['MY_API_TIMEOUT'].to_i || 5)
|
14
|
-
|
15
|
-
base_uri API_URL
|
16
|
-
default_timeout API_TIMEOUT
|
17
|
-
|
18
|
-
# Makes OpenApply domain name visible:
|
19
|
-
def api_url
|
20
|
-
API_URL
|
21
|
-
end
|
22
|
-
|
23
|
-
# make OpenApply timeout visible
|
24
|
-
def api_timeout
|
25
|
-
API_TIMEOUT
|
26
|
-
end
|
27
|
-
|
28
|
-
# Defines & makes visible OpenApply secret access key with ENV-VARS
|
29
|
-
def api_key
|
30
|
-
ENV['MY_API_AUTH_TOKEN']
|
31
|
-
end
|
32
|
-
|
33
|
-
# Defines and makes visib le the OpenApply path with ENV-VARS
|
34
|
-
def api_path
|
35
|
-
ENV['MY_API_PATH'] || "/api/v1/students/"
|
36
|
-
end
|
37
|
-
|
38
|
-
# Defines and makes visible the maximum records OpenApply should return
|
39
|
-
# (code default is 50 - OA default is 10 - doc says 100)
|
40
|
-
def api_records
|
41
|
-
ENV['MY_API_RECORDS'] || '50'
|
42
|
-
end
|
43
|
-
|
44
|
-
def initialize
|
45
|
-
@my_flatten_keys = [:custom_fields]
|
46
|
-
@my_reject_keys = [:parent_guardian]
|
47
|
-
end
|
48
|
-
|
49
|
-
# defines remote host to recieve openapply data
|
50
|
-
REMOTE_HOSTNAME = ENV['REMOTE_HOSTNAME'].freeze
|
51
|
-
REMOTE_USERNAME = ENV['REMOTE_USERNAME'].freeze
|
52
|
-
REMOTE_PATH_FILE = ENV['REMOTE_PATH_FILE'].freeze
|
53
|
-
REMOTE_PERMISSIONS = ENV['REMOTE_PERMISSIONS'].freeze
|
54
|
-
|
55
|
-
# custom code to prepare my.openapply.com data for remote host recieving data
|
56
|
-
def records_as_csv_to_file( status, flatten_keys=[],
|
57
|
-
reject_keys=[], student_keys=[],
|
58
|
-
guardian_info={}, payment_info={}, file )
|
59
|
-
data = students_as_csv_by_status( status, flatten_keys, reject_keys,
|
60
|
-
student_keys, guardian_info, payment_info)
|
61
|
-
# save csv string as a file
|
62
|
-
open(file, 'w') { |f| f.puts data }
|
63
|
-
end
|
64
|
-
|
65
|
-
def records_as_csv_to_server( status, flatten_keys=[],
|
66
|
-
reject_keys=[], student_keys=[],
|
67
|
-
guardian_info={}, payment_info={})
|
68
|
-
data = students_as_csv_by_status( status, flatten_keys, reject_keys,
|
69
|
-
student_keys, guardian_info, payment_info)
|
70
|
-
send_data_to_remote_server( data, REMOTE_HOSTNAME, REMOTE_USERNAME,
|
71
|
-
"#{REMOTE_PATH_FILE}.csv", REMOTE_PERMISSIONS)
|
72
|
-
end
|
73
|
-
|
74
|
-
# DISABLED UNTIL AXLSX works with rubyzip 1.2.1 or later
|
75
|
-
# def records_as_xlsx_to_file( status, flatten_keys=[],
|
76
|
-
# reject_keys=[], student_keys=[],
|
77
|
-
# guardian_info={}, payment_info={}, file )
|
78
|
-
# data = students_as_xlsx_by_status( status, flatten_keys, reject_keys,
|
79
|
-
# student_keys, guardian_info, payment_info)
|
80
|
-
# data.serialize(file)
|
81
|
-
# end
|
82
|
-
#
|
83
|
-
# def records_as_xlsx_to_server( status, flatten_keys=[],
|
84
|
-
# reject_keys=[], student_keys=[],
|
85
|
-
# guardian_info={}, payment_info={})
|
86
|
-
# data = students_as_xlsx_by_status( status, flatten_keys, reject_keys,
|
87
|
-
# student_keys, guardian_info, payment_info)
|
88
|
-
# send_data_to_remote_server( data, REMOTE_HOSTNAME, REMOTE_USERNAME,
|
89
|
-
# "#{REMOTE_PATH_FILE}.xlsx", REMOTE_PERMISSIONS)
|
90
|
-
# end
|
91
|
-
|
92
|
-
end
|
@@ -1,215 +0,0 @@
|
|
1
|
-
# require 'net/scp'
|
2
|
-
# require 'net/ssh'
|
3
|
-
|
4
|
-
# CODE THAT TRANSFORMS STUDENT DATA
|
5
|
-
###################################
|
6
|
-
|
7
|
-
module ConvertToArray
|
8
|
-
|
9
|
-
|
10
|
-
# Queries by status to get a list of students details of a given status
|
11
|
-
# and converts the result to an array with headers (based on keys sent)
|
12
|
-
#
|
13
|
-
# ==== Attributes
|
14
|
-
# * +status+ - hash to convert to an array
|
15
|
-
# * +flatten_keys+ - an array of keys to bring to the top level
|
16
|
-
# (with this key prepened) -- default (blank does nothing)
|
17
|
-
# * +reject_keys+ - an array of keys to remove from the data -- default (blank does nothing)
|
18
|
-
# * +student_keys+ - [:id, :name] - include student record keys
|
19
|
-
# * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
|
20
|
-
# * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
|
21
|
-
# * guardian & payment info options:
|
22
|
-
# count: 2 -- how many parent or payment records to return)
|
23
|
-
# keys: [:id, :date] -- an array of keys of data to return
|
24
|
-
# order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
|
25
|
-
def students_as_array_by_status(status,
|
26
|
-
flatten_keys=[], reject_keys=[],
|
27
|
-
student_keys=[],
|
28
|
-
guardian_info={}, payment_info={})
|
29
|
-
#
|
30
|
-
check = check_details_keys_validity(flatten_keys, reject_keys)
|
31
|
-
return check unless check.nil? # or check[:error].nil?
|
32
|
-
#
|
33
|
-
# by default get payment info (unless no payment info is requested)
|
34
|
-
get_payments = true
|
35
|
-
get_payments = false if payment_info.nil? or payment_info.empty?
|
36
|
-
# go get student details from api
|
37
|
-
students_hash = students_details_by_status( status,
|
38
|
-
flatten_keys, reject_keys, get_payments )
|
39
|
-
#
|
40
|
-
students_array = students_hash_to_array( students_hash,
|
41
|
-
student_keys, guardian_info, payment_info)
|
42
|
-
end
|
43
|
-
alias_method :students_as_array_by_statuses, :students_as_array_by_status
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
# ARRAY CODE
|
48
|
-
############
|
49
|
-
|
50
|
-
# Given an hash of students_details converts to an arrary
|
51
|
-
#
|
52
|
-
# ==== Attributes
|
53
|
-
# * +students+ - hash to convert to an array
|
54
|
-
# * +student_keys+ - [:id, :name] - include student record keys
|
55
|
-
# * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
|
56
|
-
# * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
|
57
|
-
# * guardian & payment info options:
|
58
|
-
# count: 2 -- how many parent or payment records to return)
|
59
|
-
# keys: [:id, :date] -- an array of keys of data to return
|
60
|
-
# order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
|
61
|
-
def students_hash_to_array(students, student_keys=[], guardian_info={}, payment_info={})
|
62
|
-
|
63
|
-
check = check_header_keys_validity(student_keys, guardian_info, payment_info)
|
64
|
-
return check unless check.nil?
|
65
|
-
|
66
|
-
array = []
|
67
|
-
array << create_headers( student_keys, guardian_info, payment_info )
|
68
|
-
return array if students.nil? or students.empty?
|
69
|
-
|
70
|
-
students[:students].each do |student|
|
71
|
-
row = []
|
72
|
-
|
73
|
-
# next if student.nil? or student.empty? or
|
74
|
-
# student[:record].nil? or student[:record].empty?
|
75
|
-
|
76
|
-
# when student summary data
|
77
|
-
if student[:record].nil?
|
78
|
-
kid_record = student
|
79
|
-
guardians = []
|
80
|
-
payments = []
|
81
|
-
end
|
82
|
-
# when student detailed data
|
83
|
-
if student[:record]
|
84
|
-
kid_record = student[:record]
|
85
|
-
guardians = student[:guardians]
|
86
|
-
payments = student[:payments]
|
87
|
-
end
|
88
|
-
|
89
|
-
# inject student record info into the array
|
90
|
-
student_keys.each{ |key| row << kid_record[key] }
|
91
|
-
|
92
|
-
# inject guardian record info into the array
|
93
|
-
if process_key_info?(guardian_info)
|
94
|
-
count = info_count(guardian_info).to_i - 1
|
95
|
-
# loop through the correct number of parents
|
96
|
-
(0..count).each do |i|
|
97
|
-
# add info if parent record exists
|
98
|
-
guardian_info[:keys].each{ |key| row << guardians[i][key] } if guardians[i]
|
99
|
-
# add nils if there isn't a parent record
|
100
|
-
guardian_info[:keys].each{ |key| row << nil } unless guardians[i]
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
# inject guardian record info (most recent - last to oldest) into the array
|
105
|
-
if process_key_info?(payment_info)
|
106
|
-
if payment_info[:order].nil? or payment_info[:order].eql? :newest
|
107
|
-
# get the newest records first
|
108
|
-
count = info_count(payment_info).to_i
|
109
|
-
# loop through the correct number of parents
|
110
|
-
(1..count).each do |index|
|
111
|
-
i = index * -1
|
112
|
-
# puts "INDEX #{i}"
|
113
|
-
payment_info[:keys].each{ |key| row << payments[i][key] } if payments[i]
|
114
|
-
payment_info[:keys].each{ |key| row << nil } unless payments[i]
|
115
|
-
end
|
116
|
-
else
|
117
|
-
# start with the oldest records
|
118
|
-
count = info_count(payment_info).to_i - 1
|
119
|
-
# loop through the correct number of parents
|
120
|
-
(0..count).each do |i|
|
121
|
-
payment_info[:keys].each{ |key| row << payments[i][key] } if payments[i]
|
122
|
-
payment_info[:keys].each{ |key| row << nil } unless payments[i]
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
array << row
|
127
|
-
end
|
128
|
-
return array
|
129
|
-
end
|
130
|
-
|
131
|
-
# internal key to process given info or not
|
132
|
-
def process_key_info?(info)
|
133
|
-
return true unless info.nil? or info.empty? or
|
134
|
-
info[:keys].nil? or info[:keys].empty?
|
135
|
-
return false
|
136
|
-
end
|
137
|
-
|
138
|
-
# determine count - may extend later to self-discover max number of records
|
139
|
-
def info_count(info)
|
140
|
-
info[:count] || 1
|
141
|
-
end
|
142
|
-
|
143
|
-
# Given the parameters passed in create the create csv / arrary headers
|
144
|
-
#
|
145
|
-
# ==== Attributes
|
146
|
-
# * +students+ - hash to convert to an array
|
147
|
-
# * +student_keys+ - include student record keys
|
148
|
-
# * +guardian_info+ - include guardian record info {count: 2, keys: [:id, :name]}
|
149
|
-
# * +payment_info+ - include payment info {count: 2, order: :newest, keys: [:date, :amount]}
|
150
|
-
# * guardian & payment info options:
|
151
|
-
# count: 2 -- how many parent or payment records to return)
|
152
|
-
# keys: [:id, :date] -- an array of keys of data to return
|
153
|
-
# order: :newest -- the order to return payments :newest (most recent first - default) or :oldest
|
154
|
-
def create_headers( student_keys=[], guardian_info={}, payment_info={} )
|
155
|
-
headers = []
|
156
|
-
# figure out student headers
|
157
|
-
student_keys = [:id] if student_keys.nil? or student_keys.empty?
|
158
|
-
headers = student_keys.map{ |k| "student_" + k.to_s }
|
159
|
-
# figure out guardian headers
|
160
|
-
if process_key_info?(guardian_info)
|
161
|
-
guardian_count = info_count(guardian_info)
|
162
|
-
# add the correct headers
|
163
|
-
(1..guardian_count).each do |i|
|
164
|
-
headers += guardian_info[:keys].map{|k| "guardian#{i}_" + k.to_s }
|
165
|
-
end
|
166
|
-
end
|
167
|
-
# calculate payment headers
|
168
|
-
if process_key_info?(payment_info)
|
169
|
-
payment_count = info_count(payment_info)
|
170
|
-
# add the correct headers
|
171
|
-
(1..payment_count).each do |i|
|
172
|
-
headers += payment_info[:keys].map{|k| "payment#{i}_" + k.to_s }
|
173
|
-
end
|
174
|
-
end
|
175
|
-
return headers
|
176
|
-
end
|
177
|
-
|
178
|
-
# Check header info before processing
|
179
|
-
#
|
180
|
-
# === Attributes
|
181
|
-
# * +student_keys+ - that this is an arrary of symbols
|
182
|
-
# * +guardian_info+ - that this is a hash with keys: using symbols
|
183
|
-
# * +payment_info+ - that this is a hash with keys: using symbols
|
184
|
-
def check_header_keys_validity(student_keys, guardian_info, payment_info)
|
185
|
-
# prepare keys for testing
|
186
|
-
student_keys ||= []
|
187
|
-
#
|
188
|
-
#
|
189
|
-
guardian_info ||= {}
|
190
|
-
return {error: "invalid guardian_info - use hash"} unless guardian_info.is_a? Hash
|
191
|
-
guardian_keys = guardian_info[:keys] #unless guardian_keys[:keys].nil?
|
192
|
-
guardian_keys ||= []
|
193
|
-
#
|
194
|
-
payment_info ||= {}
|
195
|
-
return {error: "invalid payment_info - use hash"} unless payment_info.is_a? Hash
|
196
|
-
payment_keys = payment_info[:keys] #unless payment_keys[:keys].nil?
|
197
|
-
payment_keys ||= []
|
198
|
-
|
199
|
-
# be sure keys are in an array
|
200
|
-
return {error: "invalid student_keys - need array"} unless student_keys.is_a? Array
|
201
|
-
return {error: "invalid guardian_keys - need array"} unless guardian_keys.is_a? Array
|
202
|
-
return {error: "invalid payment_keys - need array"} unless payment_keys.is_a? Array
|
203
|
-
|
204
|
-
# test if any key values are non-symbols (remain after removing symbols)
|
205
|
-
return {error: "invalid student_keys - use symbols"} if student_keys.reject{|k| k.is_a? Symbol}.count > 0
|
206
|
-
return {error: "invalid guardian_keys - use symbols"} if guardian_keys.reject{|k| k.is_a? Symbol}.count > 0
|
207
|
-
return {error: "invalid payment_keys - use symbols"} if payment_keys.reject{|k| k.is_a? Symbol}.count > 0
|
208
|
-
|
209
|
-
# check that if guardian info is given - it also has keys
|
210
|
-
return {error: "invalid guardian_keys - keys missing"} if not guardian_info.empty? and guardian_info[:keys].nil?
|
211
|
-
return {error: "invalid payment_keys - keys missing"} if not payment_info.empty? and payment_info[:keys].nil?
|
212
|
-
|
213
|
-
end
|
214
|
-
|
215
|
-
end
|
@@ -1,59 +0,0 @@
|
|
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
|
@@ -1,80 +0,0 @@
|
|
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
|