ps_utilities 1.0.1 → 1.0.4

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
  SHA256:
3
- metadata.gz: 823ebc095fd0fe70b224f173aef9a951e1d1a9acd4bf14ad037895d0832f1ef6
4
- data.tar.gz: 23e29507f3fc51e63cc9a640377bd2e3c437fd624652f387c9931aa93b09c720
3
+ metadata.gz: 1e387aed718dd438a8802b80c32b8ebca545519d5448c0c6597279127306b92c
4
+ data.tar.gz: ed5b94b10309d036c5573c926b09b86838659f3663d2bc1246ad7c9b5c71a01e
5
5
  SHA512:
6
- metadata.gz: 512c0c6e1b8c9d5da4426c7c5e15ee4a478c24fab18521d08371e4d1c71521a58873267a7b93f7808cacfced820914e658416cc58f1e0ba4ca91cf186709abc0
7
- data.tar.gz: 35875ad1cee3a496c645c76f8bcedd1a689428e51642ab7cbcab8da28cd97301026dbc9f2aa884a1073d841cfcd999163e2e42afc2ce210f2a4fb70512bfff13
6
+ metadata.gz: 9080a06391f8e4d94fd5d12433e04a2fcef9f2ac1479b1b5e34306a05bc568462249205e911ec939908e87fe58233664579fcdaa8d70a83938b386450535cba4
7
+ data.tar.gz: cf7c1e93d11e3568d5fb9740c193724e3c41c9d244e439deab6c18d4da3dac8d7c0daa7dc8d02de13a390d1791e3d5dc178ab2f782d662902155ae935cf8a7d8
@@ -72,6 +72,8 @@ module PsUtilities
72
72
  else
73
73
  send(command, params)
74
74
  end
75
+ rescue ArgumentError => error
76
+ return {"error_message" => error.message}
75
77
  end
76
78
 
77
79
  private
@@ -146,7 +148,7 @@ module PsUtilities
146
148
  end
147
149
 
148
150
  def auth_headers(credentials = client)
149
- { 'ContentType' => 'application/x-www-form-urlencoded;charset=UTF-8',
151
+ { 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8',
150
152
  'Accept' => 'application/json',
151
153
  'Authorization' => 'Basic ' + encode64_client(credentials)
152
154
  }
@@ -51,6 +51,8 @@ module PsUtilities
51
51
  def update_students(params)
52
52
  action = "UPDATE"
53
53
  kids_api_array = build_kids_api_array(action, params)
54
+ return kids_api_array if kids_api_array.empty?
55
+
54
56
  options = { body: { students: { student: kids_api_array } }.to_json }
55
57
  answer = api(:post, "/ws/v1/student", options)
56
58
  return answer.parsed_response if answer.code.to_s.eql? "200"
@@ -93,18 +95,20 @@ module PsUtilities
93
95
  #]
94
96
  # @note this is then sent to the API call with a body tag
95
97
  def build_kids_api_array(action, params)
96
- students = []
97
- api_array = []
98
- # students = [params[:student]] if not params[:student].nil? && params[:student].is_a?(Hash)
99
- students = params[:students] #if not params[:students].nil? && params[:students].is_a?(Array)
100
- if students.empty?
101
- return {"errorMessage"=>{"message"=>"Bad student data - USE: {students: [{kid_data1}, {kid_data2}]}"}}
98
+ # ugly protection against bad data feeds - but it works
99
+ # TODO: refactor with an elegant assertion?
100
+ if params.nil? or not params.is_a?(Hash) or params[:students].nil? or not params[:students].is_a?(Array) or params[:students].empty? or not params[:students][0].is_a?(Hash)
101
+ raise ArgumentError, "PARAMS format is: {students: [{kid_data1}, {kid_data2}]} - NOT OK: #{params}"
102
+ end
103
+ if action.nil? or not action.is_a?(String) or action.empty? or not %[INSERT UPDATE].include?(action)
104
+ raise ArgumentError, "ACTION must be: 'INSERT' or 'UPDATE' - NOT OK: #{action}"
102
105
  end
106
+ api_array = []
107
+ students = params.dig(:students)
103
108
  students.each do |kid|
104
- # kid[:las_extensions] = true if params[:las_extensions]
105
109
  api_array << build_kid_attributes(action, kid)
106
110
  end
107
- return api_array
111
+ api_array
108
112
  end
109
113
 
110
114
  # prepare data to update student database extensions
@@ -180,6 +184,12 @@ module PsUtilities
180
184
  # ]
181
185
  # }
182
186
  def build_kid_attributes(action, kid)
187
+ if kid.nil? or not kid.is_a?(Hash) or kid.empty?
188
+ raise ArgumentError, "STUDENT format is: {students: [{kid_data1}, {kid_data2}]} - NOT OK: #{kid}"
189
+ end
190
+ if action.nil? or not action.is_a?(String) or action.empty? or not %[INSERT UPDATE].include?(action)
191
+ raise ArgumentError, "ACTION must be: 'INSERT' or 'UPDATE' - NOT OK: #{action}"
192
+ end
183
193
  # ALWAYS NEEDED INFO
184
194
  attribs = {action: action}
185
195
  attribs[:client_uid] = kid[:student_id].to_s
@@ -190,7 +200,8 @@ module PsUtilities
190
200
  case action
191
201
  when 'INSERT'
192
202
  # must be set on creation (INSERT)
193
- attribs[:local_id] = kid[:oa_id].to_i
203
+ attribs[:local_id] = kid[:local_id].to_i if kid[:local_id]
204
+ attribs[:local_id] = kid[:student_id].to_i if kid[:student_id]
194
205
  # to create an account both first and last name must be present
195
206
  attribs[:name][:last_name] = kid[:last_name] if kid[:last_name] or kid[:first_name]
196
207
  attribs[:name][:first_name] = kid[:first_name] if kid[:last_name] or kid[:first_name]
@@ -1,5 +1,5 @@
1
1
  module PsUtilities
2
2
  module Version
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ps_utilities
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Weisbecker
8
8
  - Bill Tihen
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2018-06-29 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: httparty
@@ -17,70 +16,130 @@ dependencies:
17
16
  requirements:
18
17
  - - "~>"
19
18
  - !ruby/object:Gem::Version
20
- version: '0.16'
19
+ version: '0.18'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - "~>"
26
25
  - !ruby/object:Gem::Version
27
- version: '0.16'
26
+ version: '0.18'
28
27
  - !ruby/object:Gem::Dependency
29
- name: bundler
28
+ name: base64
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
31
  - - "~>"
33
32
  - !ruby/object:Gem::Version
34
- version: '1.16'
35
- type: :development
33
+ version: 0.3.0
34
+ type: :runtime
36
35
  prerelease: false
37
36
  version_requirements: !ruby/object:Gem::Requirement
38
37
  requirements:
39
38
  - - "~>"
40
39
  - !ruby/object:Gem::Version
41
- version: '1.16'
40
+ version: 0.3.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: bigdecimal
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.3'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 3.3.1
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '3.3'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.3.1
61
+ - !ruby/object:Gem::Dependency
62
+ name: csv
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.3'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 3.3.5
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '3.3'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 3.3.5
81
+ - !ruby/object:Gem::Dependency
82
+ name: bundler
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '2.5'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '2.5'
42
95
  - !ruby/object:Gem::Dependency
43
96
  name: rake
44
97
  requirement: !ruby/object:Gem::Requirement
45
98
  requirements:
46
99
  - - "~>"
47
100
  - !ruby/object:Gem::Version
48
- version: '10.5'
101
+ version: '13.0'
49
102
  type: :development
50
103
  prerelease: false
51
104
  version_requirements: !ruby/object:Gem::Requirement
52
105
  requirements:
53
106
  - - "~>"
54
107
  - !ruby/object:Gem::Version
55
- version: '10.5'
108
+ version: '13.0'
56
109
  - !ruby/object:Gem::Dependency
57
110
  name: rspec
58
111
  requirement: !ruby/object:Gem::Requirement
59
112
  requirements:
60
113
  - - "~>"
61
114
  - !ruby/object:Gem::Version
62
- version: '3.7'
115
+ version: '3.9'
63
116
  type: :development
64
117
  prerelease: false
65
118
  version_requirements: !ruby/object:Gem::Requirement
66
119
  requirements:
67
120
  - - "~>"
68
121
  - !ruby/object:Gem::Version
69
- version: '3.7'
122
+ version: '3.9'
70
123
  - !ruby/object:Gem::Dependency
71
124
  name: webmock
72
125
  requirement: !ruby/object:Gem::Requirement
73
126
  requirements:
74
127
  - - "~>"
75
128
  - !ruby/object:Gem::Version
76
- version: '3.4'
129
+ version: '3.26'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 3.26.1
77
133
  type: :development
78
134
  prerelease: false
79
135
  version_requirements: !ruby/object:Gem::Requirement
80
136
  requirements:
81
137
  - - "~>"
82
138
  - !ruby/object:Gem::Version
83
- version: '3.4'
139
+ version: '3.26'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 3.26.1
84
143
  description: 'Uses oauth2 to connection to the Powerschool API. Heavily refactored
85
144
  code (not dependent on Rails) starting with: https://github.com/TomK32/powerschool'
86
145
  email:
@@ -100,7 +159,6 @@ homepage: https://github.com/LAS-IT/ps_utilities
100
159
  licenses:
101
160
  - MIT
102
161
  metadata: {}
103
- post_install_message:
104
162
  rdoc_options: []
105
163
  require_paths:
106
164
  - lib
@@ -115,9 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
173
  - !ruby/object:Gem::Version
116
174
  version: '0'
117
175
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.7.6
120
- signing_key:
176
+ rubygems_version: 3.6.9
121
177
  specification_version: 4
122
178
  summary: Simple ruby wrapper for Powerschool API interaction.
123
179
  test_files: []