clever 3.2.8 → 3.2.10

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: 555e971aed2bc72b24d66ad95c92f09deb2b8302f6f53b6d68e3f70d87966e30
4
- data.tar.gz: 368d5cca074115d9ae70d4199edb2facfdfdd7c8795c2a2250fa13ae00d186c3
3
+ metadata.gz: ceec693a7d2d2f1bc55b066c15e28e6db98653c71e5dd746a2923868ad5b1b55
4
+ data.tar.gz: c1a680ed722256d4a0fe1440991e1853d69889c491728f3d37934c0136203a80
5
5
  SHA512:
6
- metadata.gz: 0e996e7e8ddbd810bb5ea10a03b128134210fa409708b4dacd61a17ee51b2225d42d86e9ceba2fb28a533e419aec7ec4ce632a18f9a9a8045d7ce1acee148c20
7
- data.tar.gz: 80651e3fd43eaed6fb2a26dc8390756687558ae53cdb30a5be80a27014e9e3bba3c731e337f69e6c31d2a517f62397fe3cd453d09f165093ffd677f122ba80a9
6
+ metadata.gz: 04f28e43270da90cfa839dcaf370afba666163f0c34f333fd83a1583629476cb82b0a8a42eb6d265d5fc1612540efea00af29fa8e8ed2251ae64f39ab7a28ab6
7
+ data.tar.gz: 28411f7c9abcb4eb50234de31376c554dd35fd0b1a23bbb34413540bf35151c8f18098d2efb45aace7b4578d5edf6d557eb8b201db4199e5e338b65fd7b2b0c7
data/Gemfile.lock CHANGED
@@ -1,42 +1,43 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clever (3.2.8)
4
+ clever (3.2.10)
5
5
  faraday
6
6
  faraday_middleware
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- ast (2.4.0)
11
+ ast (2.4.2)
12
12
  builder (3.2.3)
13
13
  coderay (1.1.2)
14
14
  diff-lcs (1.3)
15
- docile (1.3.1)
15
+ docile (1.4.1)
16
16
  faraday (1.0.1)
17
17
  multipart-post (>= 1.2, < 3)
18
18
  faraday_middleware (1.0.0)
19
19
  faraday (~> 1.0)
20
- jaro_winkler (1.5.2)
21
- json (2.2.0)
20
+ json (2.9.1)
21
+ language_server-protocol (3.17.0.4)
22
22
  metaclass (0.0.4)
23
23
  method_source (0.8.2)
24
24
  mocha (1.8.0)
25
25
  metaclass (~> 0.0.1)
26
26
  multipart-post (2.1.1)
27
- parallel (1.14.0)
28
- parser (2.6.0.0)
29
- ast (~> 2.4.0)
30
- powerpack (0.1.2)
27
+ parallel (1.26.3)
28
+ parser (3.3.7.0)
29
+ ast (~> 2.4.1)
30
+ racc
31
31
  pry (0.10.4)
32
32
  coderay (~> 1.1.0)
33
33
  method_source (~> 0.8.1)
34
34
  slop (~> 3.4)
35
35
  pry-nav (0.2.4)
36
36
  pry (>= 0.9.10, < 0.11.0)
37
- psych (3.1.0)
38
- rainbow (3.0.0)
37
+ racc (1.8.1)
38
+ rainbow (3.1.1)
39
39
  rake (10.5.0)
40
+ regexp_parser (2.10.0)
40
41
  rspec (3.8.0)
41
42
  rspec-core (~> 3.8.0)
42
43
  rspec-expectations (~> 3.8.0)
@@ -53,23 +54,29 @@ GEM
53
54
  rspec_junit_formatter (0.2.2)
54
55
  builder (< 4)
55
56
  rspec-core (>= 2, < 4, != 2.12.0)
56
- rubocop (0.65.0)
57
- jaro_winkler (~> 1.5.1)
57
+ rubocop (1.71.0)
58
+ json (~> 2.3)
59
+ language_server-protocol (>= 3.17.0)
58
60
  parallel (~> 1.10)
59
- parser (>= 2.5, != 2.5.1.1)
60
- powerpack (~> 0.1)
61
- psych (>= 3.1.0)
61
+ parser (>= 3.3.0.2)
62
62
  rainbow (>= 2.2.2, < 4.0)
63
+ regexp_parser (>= 2.9.3, < 3.0)
64
+ rubocop-ast (>= 1.36.2, < 2.0)
63
65
  ruby-progressbar (~> 1.7)
64
- unicode-display_width (~> 1.4.0)
65
- ruby-progressbar (1.10.0)
66
- simplecov (0.16.1)
66
+ unicode-display_width (>= 2.4.0, < 4.0)
67
+ rubocop-ast (1.38.0)
68
+ parser (>= 3.3.1.0)
69
+ ruby-progressbar (1.13.0)
70
+ simplecov (0.22.0)
67
71
  docile (~> 1.1)
68
- json (>= 1.8, < 3)
69
- simplecov-html (~> 0.10.0)
70
- simplecov-html (0.10.2)
72
+ simplecov-html (~> 0.11)
73
+ simplecov_json_formatter (~> 0.1)
74
+ simplecov-html (0.13.1)
75
+ simplecov_json_formatter (0.1.4)
71
76
  slop (3.6.0)
72
- unicode-display_width (1.4.1)
77
+ unicode-display_width (3.1.4)
78
+ unicode-emoji (~> 4.0, >= 4.0.4)
79
+ unicode-emoji (4.0.4)
73
80
 
74
81
  PLATFORMS
75
82
  ruby
@@ -83,8 +90,8 @@ DEPENDENCIES
83
90
  rake (~> 10.0)
84
91
  rspec (~> 3.0)
85
92
  rspec_junit_formatter
86
- rubocop
87
- simplecov
93
+ rubocop (~> 1.53)
94
+ simplecov (~> 0.22)
88
95
 
89
96
  BUNDLED WITH
90
97
  2.1.4
data/clever.gemspec CHANGED
@@ -42,6 +42,6 @@ Gem::Specification.new do |spec|
42
42
  spec.add_development_dependency 'rake', '~> 10.0'
43
43
  spec.add_development_dependency 'rspec', '~> 3.0'
44
44
  spec.add_development_dependency 'rspec_junit_formatter'
45
- spec.add_development_dependency 'rubocop'
46
- spec.add_development_dependency 'simplecov'
45
+ spec.add_development_dependency 'rubocop', '~>1.53'
46
+ spec.add_development_dependency 'simplecov', '~>0.22'
47
47
  end
data/lib/clever/client.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  module Clever
4
4
  class Client
5
5
  attr_accessor :app_id, :app_token, :sync_id, :logger, :redirect_uri,
6
- :vendor_key, :vendor_secret, :username_source, :staff_username_source
6
+ :vendor_key, :vendor_secret, :username_source, :staff_username_source,
7
+ :sentry_client
7
8
 
8
9
  attr_reader :api_url, :tokens_endpoint
9
10
 
@@ -103,17 +104,27 @@ module Clever
103
104
  admins.select { |record| record_uids_set.include?(record.uid) }
104
105
  end
105
106
 
107
+ def schools
108
+ authenticate
109
+
110
+ Paginator.fetch(connection, Clever::SCHOOLS_ENDPOINT,
111
+ :get, Types::School, client: self).force
112
+ end
113
+
106
114
  # discard params to make the API behave the same as the one roster gem
107
115
  def classrooms(*)
108
116
  authenticate
109
117
 
110
118
  fetched_courses = courses
119
+ fetched_schools = schools
111
120
 
112
121
  terms_hash = terms.each_with_object({}) { |term, terms| terms[term.uid] = term }
113
122
 
114
123
  sections.map do |section|
115
124
  course = fetched_courses.find { |clever_course| clever_course.uid == section.course }
116
125
  term = terms_hash[section.term_id]
126
+ school = fetched_schools.find { |school| school.uid == section.school_uid }
127
+
117
128
  Types::Classroom.new(
118
129
  'id' => section.uid,
119
130
  'name' => section.name,
@@ -124,7 +135,9 @@ module Clever
124
135
  'term_name' => term&.name,
125
136
  'term_start_date' => term&.start_date,
126
137
  'term_end_date' => term&.end_date,
127
- 'term_id' => section.term_id
138
+ 'term_id' => section.term_id,
139
+ 'school_name' => school&.name,
140
+ 'school_uid' => school&.uid
128
141
  )
129
142
  end
130
143
  end
@@ -10,7 +10,21 @@ module Clever
10
10
  end
11
11
 
12
12
  def execute(path, method = :get, params = nil, body = nil)
13
- Response.new(raw_request(path, method, params, body))
13
+ response = Response.new(raw_request(path, method, params, body))
14
+
15
+ if [502, 504].include?(response.status)
16
+ log_to_sentry(
17
+ 'client.app_id' => @client.app_id,
18
+ 'connection.body' => body,
19
+ 'connection.method' => method,
20
+ 'connection.params' => params,
21
+ 'connection.path' => path,
22
+ 'response.http_status' => response.status,
23
+ 'response.raw_body' => response.raw_body
24
+ )
25
+ end
26
+
27
+ response
14
28
  end
15
29
 
16
30
  def set_token(token)
@@ -48,5 +62,11 @@ module Clever
48
62
  request.body = body
49
63
  end
50
64
  end
65
+
66
+ def log_to_sentry(payload)
67
+ return unless @client.sentry_client
68
+
69
+ @client.sentry_client.capture_message('Exception in Clever::Connection', **{ extra: payload })
70
+ end
51
71
  end
52
72
  end
@@ -13,7 +13,9 @@ module Clever
13
13
  :term_name,
14
14
  :term_start_date,
15
15
  :term_end_date,
16
- :term_id
16
+ :term_id,
17
+ :school_name,
18
+ :school_uid
17
19
 
18
20
  def initialize(attributes = {}, *)
19
21
  @uid = attributes['id']
@@ -26,6 +28,8 @@ module Clever
26
28
  @term_start_date = attributes['term_start_date']
27
29
  @term_end_date = attributes['term_end_date']
28
30
  @term_id = attributes['term_id']
31
+ @school_name = attributes['school_name']
32
+ @school_uid = attributes['school_uid']
29
33
  @provider = 'clever'
30
34
  end
31
35
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Clever
4
+ module Types
5
+ class School
6
+ attr_reader :uid, :name, :number
7
+
8
+ def initialize(attributes = {}, *)
9
+ @uid = attributes['id']
10
+ @name = attributes['name']
11
+ @number = attributes['school_number']
12
+ @provider = 'clever'
13
+ end
14
+ end
15
+ end
16
+ end
@@ -13,6 +13,7 @@ module Clever
13
13
  :teachers,
14
14
  :term_id,
15
15
  :provider,
16
+ :school_uid,
16
17
  :primary_teacher_uid
17
18
 
18
19
  def initialize(attributes = {}, *)
@@ -25,8 +26,9 @@ module Clever
25
26
  @students = attributes['students']
26
27
  @teachers = attributes['teachers']
27
28
  @term_id = attributes['term_id']
28
- @provider = 'clever'
29
29
  @primary_teacher_uid = attributes['teacher']
30
+ @school_uid = attributes['school']
31
+ @provider = 'clever'
30
32
  end
31
33
  end
32
34
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Clever
4
- VERSION = '3.2.8'
4
+ VERSION = '3.2.10'
5
5
  end
data/lib/clever.rb CHANGED
@@ -16,6 +16,7 @@ require 'clever/types/enrollment'
16
16
  require 'clever/types/event'
17
17
  require 'clever/types/student'
18
18
  require 'clever/types/section'
19
+ require 'clever/types/school'
19
20
  require 'clever/types/teacher'
20
21
  require 'clever/types/district_admin'
21
22
  require 'clever/types/school_admin'
@@ -36,6 +37,7 @@ module Clever
36
37
  EVENTS_ENDPOINT = '/v1.2/events'
37
38
  TERMS_ENDPOINT = '/v3.0/terms'
38
39
  GRADES_ENDPOINT = 'https://grades-api.beta.clever.com/v1/grade'
40
+ SCHOOLS_ENDPOINT = '/v3.0/schools'
39
41
 
40
42
  class DistrictNotFound < StandardError; end
41
43
  class ConnectionError < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clever
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.8
4
+ version: 3.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Julius
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-19 00:00:00.000000000 Z
11
+ date: 2025-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -140,30 +140,30 @@ dependencies:
140
140
  name: rubocop
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: '1.53'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0'
152
+ version: '1.53'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: simplecov
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: '0.22'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: '0.22'
167
167
  description: Wrapper for the Clever API.
168
168
  email:
169
169
  - robertmjulius@gmail.com
@@ -171,7 +171,6 @@ executables: []
171
171
  extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
- - ".circleci/config.yml"
175
174
  - ".codeclimate.yml"
176
175
  - ".gitignore"
177
176
  - ".rspec"
@@ -198,6 +197,7 @@ files:
198
197
  - lib/clever/types/district_admin.rb
199
198
  - lib/clever/types/enrollment.rb
200
199
  - lib/clever/types/event.rb
200
+ - lib/clever/types/school.rb
201
201
  - lib/clever/types/school_admin.rb
202
202
  - lib/clever/types/section.rb
203
203
  - lib/clever/types/student.rb
data/.circleci/config.yml DELETED
@@ -1,116 +0,0 @@
1
- version: 2
2
- defaults: &defaults
3
- docker:
4
- - image: circleci/ruby:2.4.1-node-browsers
5
- working_directory: ~/repo
6
- restore_ruby_cache: &restore_ruby_cache
7
- restore_cache:
8
- keys:
9
- - v2-dependencies-{{ checksum "Gemfile.lock" }}
10
- - v2-dependencies-
11
- setup_rubygems: &setup_rubygems
12
- run:
13
- name: Add RubyGems API key
14
- command: |
15
- mkdir -p ~/.gem
16
- echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
17
- chmod 0600 ~/.gem/credentials
18
-
19
- install_dependencies: &install_dependencies
20
- run:
21
- name: Install Dependencies
22
- command: |
23
- echo 'export BUNDLER_VERSION=$(cat Gemfile.lock | tail -1 | tr -d " ")' >> $BASH_ENV
24
- source $BASH_ENV
25
- gem install bundler -v '2.1.4'
26
- bundle install --jobs=4 --retry=3 --path vendor/bundle
27
-
28
- save_ruby_cache: &save_ruby_cache
29
- save_cache:
30
- paths:
31
- - ./vendor/bundle
32
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
33
- download_cc_reporter: &download_cc_reporter
34
- run:
35
- name: Download Code Climate Test Reporter
36
- command: |
37
- mkdir -p tmp/
38
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
39
- chmod +x ./tmp/cc-test-reporter
40
-
41
-
42
-
43
-
44
- persist: &persist
45
- persist_to_workspace:
46
- root: tmp
47
- paths:
48
- - cc-test-reporter
49
- run_rspec_tests: &run_rspec_tests
50
- run:
51
- name: Run RSpec Tests
52
- command: |
53
- mkdir /tmp/test-results
54
- ./tmp/cc-test-reporter before-build
55
- TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
56
- circleci tests split --split-by=timings)"
57
-
58
- bundle exec rspec --format progress \
59
- --format RspecJunitFormatter \
60
- --out /tmp/test-results/rspec.xml \
61
- --format progress \
62
- $TEST_FILES
63
- ./tmp/cc-test-reporter format-coverage -t simplecov -o "tmp/codeclimate.json"
64
-
65
- upload_coverage: &upload_coverage
66
- run:
67
- name: Upload Coverage
68
- command: |
69
- ./tmp/cc-test-reporter upload-coverage -i tmp/codeclimate.json
70
-
71
- release_rubygem: &release_rubygem
72
- run:
73
- name: Release new version to RubyGems
74
- command: |
75
- bundle exec rake release
76
-
77
- jobs:
78
- rspec-tests:
79
- <<: *defaults
80
- steps:
81
- - checkout
82
- - *restore_ruby_cache
83
- - *install_dependencies
84
- - *save_ruby_cache
85
- - *download_cc_reporter
86
- - *persist
87
- - *run_rspec_tests
88
- - *upload_coverage
89
- - store_test_results:
90
- path: /tmp/test-results
91
- - store_artifacts:
92
- path: /tmp/test-results
93
- destination: test-results
94
-
95
- release:
96
- <<: *defaults
97
- steps:
98
- - checkout
99
- - *restore_ruby_cache
100
- - *setup_rubygems
101
- - *install_dependencies
102
- - *save_ruby_cache
103
- - *release_rubygem
104
-
105
- workflows:
106
- version: 2
107
- commit:
108
- jobs:
109
- - rspec-tests
110
- - release:
111
- requires:
112
- - rspec-tests
113
- filters:
114
- branches:
115
- only:
116
- - master