aeries-api 1.0.2 → 1.1.0

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: 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