aeries-api 1.0.2 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5769f47b9398392bf09682a8af92d464ebd319c5132e46d8e9d8339b93a1d4bd
4
- data.tar.gz: 3d0608985d45651e4f7b9c6116c332ea8b8e7ef5e7b465e58f9a1f2e914c1a48
3
+ metadata.gz: 878d38ffffac76bf491d369d7bd8a3f9238b5ec30055ba5af5a01595251a9eb3
4
+ data.tar.gz: 4a149b37d5155e5411167fbc86e141adcc45efc82b2aa80c0ba77681e53424e6
5
5
  SHA512:
6
- metadata.gz: 10080122370c9ad4295b97f80fdd5d16c18021a8aac7cd96e84919af9fe0ac6d9cfc617273ef66ac3a9b30de9ab309af77881bc5fbd0ba75bfa0f3e1efeb9621
7
- data.tar.gz: 25847d47ba664b5bd69a6cfd5f7d4d2d3028ad8fbb0e701b25f0a1ebfc635b143230af5589b4643afc74a245789f8f2f9c1a95a523183bd006cf6de5933ab91d
6
+ metadata.gz: fbe805cc25342a4af2bf439c2affcfc0b405f21f1fa05e583a602f9bb801710eb894b56bcdd404ec2f83a84cafecb3daa9d5f985a299ab1ac96c8147c5c5444f
7
+ data.tar.gz: 7939d7a015af2fe09efebf9e9199d86d0bfa39fc9f2f7b774becfcb60758f98affa07dcb35dab1a9b58ff82c8d2462d78181b787f8dfcb4ea7ae75ab692eff32
data/lib/aeries-api.rb CHANGED
@@ -3,5 +3,23 @@ require 'aeries-api/version'
3
3
  require 'aeries-api/client'
4
4
 
5
5
  module AeriesApi
6
- class Error < StandardError; end
6
+ class ResponseError < StandardError
7
+ attr_accessor :response
8
+
9
+ def initialize(response)
10
+ message = response.parsed_response['Message']
11
+ super(message.length <= 50 ? message[0..50] : message)
12
+ @response = response
13
+ end
14
+ end
15
+
16
+ class AuthenticationError < ResponseError; end
17
+
18
+ class BadRequest < ResponseError; end
19
+
20
+ class Forbidden < ResponseError; end
21
+
22
+ class NotFound < ResponseError; end
23
+
24
+ class ServerError < ResponseError; end
7
25
  end
@@ -9,6 +9,7 @@ require 'aeries-api/client/student_groups'
9
9
  require 'aeries-api/client/student_pictures'
10
10
  require 'aeries-api/client/student_programs'
11
11
  require 'aeries-api/client/supplemental'
12
+ require 'aeries-api/error_handler'
12
13
 
13
14
  module AeriesApi
14
15
  class Client
@@ -24,6 +25,8 @@ module AeriesApi
24
25
  format :json
25
26
 
26
27
  def initialize(aeries_cert: nil, base_uri: nil)
28
+ @error_handler = AeriesApi::ErrorHandler.new
29
+
27
30
  aeries_cert ||= ENV['AERIES_CERT']
28
31
  base_uri ||= ENV['AERIES_BASE_URI']
29
32
 
@@ -3,6 +3,7 @@ module AeriesApi
3
3
  module Contacts
4
4
  def contacts(school_code:, student_id:)
5
5
  response = self.class.get("/schools/#{school_code}/contacts/#{student_id}")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
  end
@@ -3,11 +3,13 @@ module AeriesApi
3
3
  module Schools
4
4
  def school(school_code:)
5
5
  response = self.class.get("/schools/#{school_code}")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
 
9
10
  def schools
10
11
  response = self.class.get('/schools')
12
+ @error_handler.handle_error(response)
11
13
  mash_and_underscore_keys(response.parsed_response)
12
14
  end
13
15
  end
@@ -3,6 +3,7 @@ module AeriesApi
3
3
  module StudentGroups
4
4
  def student_groups(school_code:)
5
5
  response = self.class.get("/schools/#{school_code}/studentgroups")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
  end
@@ -3,11 +3,13 @@ module AeriesApi
3
3
  module StudentPictures
4
4
  def student_picture(school_code:, student_id:)
5
5
  response = self.class.get("/schools/#{school_code}/studentpictures/#{student_id}")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
 
9
10
  def student_pictures(school_code:)
10
11
  response = self.class.get("/schools/#{school_code}/studentpictures")
12
+ @error_handler.handle_error(response)
11
13
  mash_and_underscore_keys(response.parsed_response)
12
14
  end
13
15
  end
@@ -3,6 +3,7 @@ module AeriesApi
3
3
  module StudentPrograms
4
4
  def student_programs(school_code:, student_id:)
5
5
  response = self.class.get("/schools/#{school_code}/students/#{student_id}/programs")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
  end
@@ -3,6 +3,7 @@ module AeriesApi
3
3
  module Students
4
4
  def student(school_code:, student_id:)
5
5
  response = self.class.get("/schools/#{school_code}/students/#{student_id}")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
 
@@ -13,6 +14,7 @@ module AeriesApi
13
14
  endpoint = "/schools/#{school_code}/students"
14
15
  end
15
16
  response = self.class.get(endpoint)
17
+ @error_handler.handle_error(response)
16
18
  mash_and_underscore_keys(response.parsed_response)
17
19
  end
18
20
  end
@@ -3,11 +3,13 @@ module AeriesApi
3
3
  module Supplemental
4
4
  def school_supplemental(school_code:, student_id:)
5
5
  response = self.class.get("/schools/#{school_code}/schoolsupplemental/#{student_id}")
6
+ @error_handler.handle_error(response)
6
7
  mash_and_underscore_keys(response.parsed_response)
7
8
  end
8
9
 
9
10
  def district_supplemental(school_code:, student_id:)
10
11
  response = self.class.get("/schools/#{school_code}/districtsupplemental/#{student_id}")
12
+ @error_handler.handle_error(response)
11
13
  mash_and_underscore_keys(response.parsed_response)
12
14
  end
13
15
 
@@ -17,6 +19,7 @@ module AeriesApi
17
19
  }
18
20
 
19
21
  response = self.class.post("/updateschoolsupplemental/#{school_code}/#{student_number}", options)
22
+ @error_handler.handle_error(response)
20
23
  mash_and_underscore_keys(response.parsed_response)
21
24
  end
22
25
  end
@@ -0,0 +1,22 @@
1
+ module AeriesApi
2
+ class ErrorHandler
3
+ def handle_error(response)
4
+ return if response.success?
5
+ raise http_errors[response.code].new(response)
6
+ end
7
+
8
+ private
9
+
10
+ def http_errors
11
+ {
12
+ 400 => AeriesApi::BadRequest,
13
+ 401 => AeriesApi::AuthenticationError,
14
+ 404 => AeriesApi::NotFound,
15
+ 500 => AeriesApi::ServerError,
16
+ 502 => AeriesApi::ServerError,
17
+ 503 => AeriesApi::ServerError,
18
+ 504 => AeriesApi::ServerError,
19
+ }
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module AeriesApi
2
- VERSION = '1.0.2'
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aeries-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Povah
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-28 00:00:00.000000000 Z
11
+ date: 2021-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -162,6 +162,7 @@ files:
162
162
  - lib/aeries-api/client/student_programs.rb
163
163
  - lib/aeries-api/client/students.rb
164
164
  - lib/aeries-api/client/supplemental.rb
165
+ - lib/aeries-api/error_handler.rb
165
166
  - lib/aeries-api/version.rb
166
167
  homepage: https://github.com/derekpovah/aeries-api
167
168
  licenses:
@@ -185,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
186
  - !ruby/object:Gem::Version
186
187
  version: '0'
187
188
  requirements: []
188
- rubygems_version: 3.1.2
189
+ rubygems_version: 3.2.15
189
190
  signing_key:
190
191
  specification_version: 4
191
192
  summary: A simple REST client for the Aeries SIS API