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 +4 -4
- data/Gemfile.lock +32 -25
- data/clever.gemspec +2 -2
- data/lib/clever/client.rb +15 -2
- data/lib/clever/connection.rb +21 -1
- data/lib/clever/types/classroom.rb +5 -1
- data/lib/clever/types/school.rb +16 -0
- data/lib/clever/types/section.rb +3 -1
- data/lib/clever/version.rb +1 -1
- data/lib/clever.rb +2 -0
- metadata +11 -11
- data/.circleci/config.yml +0 -116
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ceec693a7d2d2f1bc55b066c15e28e6db98653c71e5dd746a2923868ad5b1b55
|
4
|
+
data.tar.gz: c1a680ed722256d4a0fe1440991e1853d69889c491728f3d37934c0136203a80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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.
|
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
|
-
|
21
|
-
|
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.
|
28
|
-
parser (
|
29
|
-
ast (~> 2.4.
|
30
|
-
|
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
|
-
|
38
|
-
rainbow (3.
|
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 (
|
57
|
-
|
57
|
+
rubocop (1.71.0)
|
58
|
+
json (~> 2.3)
|
59
|
+
language_server-protocol (>= 3.17.0)
|
58
60
|
parallel (~> 1.10)
|
59
|
-
parser (>=
|
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 (
|
65
|
-
|
66
|
-
|
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
|
-
|
69
|
-
|
70
|
-
simplecov-html (0.
|
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
|
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
|
data/lib/clever/connection.rb
CHANGED
@@ -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
|
data/lib/clever/types/section.rb
CHANGED
@@ -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
|
data/lib/clever/version.rb
CHANGED
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.
|
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:
|
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: '
|
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: '
|
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
|