clever 2.3.0 → 3.1.1

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
  SHA1:
3
- metadata.gz: eadea65a93fb58c3c03e4669c9eee742a4d0ca3b
4
- data.tar.gz: 5cf08d8b4e9c9aa374b522e448ef867fc95db0f6
3
+ metadata.gz: ba04605f8dd24c5294e0ad902c29df9296ce14e1
4
+ data.tar.gz: 275fecc1abefb5af4a08d146b38eca3acc24602a
5
5
  SHA512:
6
- metadata.gz: 8d8ba0401e1c2076e71b8e633a53d2e388a72b1e4c1bd49ac01d1792e0801002c12d743578be42ba75deacd96355f80c5a4584a49aa6e40ca50e19352de6fed5
7
- data.tar.gz: 55e3247234f4b6612f6ee9dd90c16773608b5c042042e323f562446341e5f8226cdd582a98c198814a3ad36b94d3c49eb60e1fc661cb55c47ec9e324af258dad
6
+ metadata.gz: a336127ba0c65de367f9ed9a027ab71baa411baf0ee2302e105a475665035d1a6ec9da5cbe1680adc6280acfacf2ae7ac9c8ec28b52837610a39cadacfbd5810
7
+ data.tar.gz: 1eea6ee645d14b4410dcab268a4508a23200faf724f77467c61822ba8a904e994f11871a39fefe3cc25bd1c633f0c45635aeb9c5676ec55fb6cb13c4fbec7134
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clever (2.3.0)
4
+ clever (3.1.1)
5
5
  faraday
6
6
  faraday_middleware
7
7
 
data/lib/clever.rb CHANGED
@@ -17,18 +17,20 @@ require 'clever/types/event'
17
17
  require 'clever/types/student'
18
18
  require 'clever/types/section'
19
19
  require 'clever/types/teacher'
20
+ require 'clever/types/admin'
20
21
  require 'clever/types/term'
21
22
  require 'clever/types/token'
22
23
 
23
24
  module Clever
24
- API_URL = 'https://api.clever.com/v2.0'
25
+ API_URL = 'https://api.clever.com/v3.0'
25
26
  TOKENS_ENDPOINT = 'https://clever.com/oauth/tokens?owner_type=district'
26
- STUDENTS_ENDPOINT = '/v2.0/students'
27
- COURSES_ENDPOINT = '/v2.0/courses'
28
- SECTIONS_ENDPOINT = '/v2.0/sections'
29
- TEACHERS_ENDPOINT = '/v2.0/teachers'
27
+ STUDENTS_ENDPOINT = '/v3.0/users?role=student'
28
+ COURSES_ENDPOINT = '/v3.0/courses'
29
+ SECTIONS_ENDPOINT = '/v3.0/sections'
30
+ TEACHERS_ENDPOINT = '/v3.0/users?role=teacher'
31
+ ADMINS_ENDPOINT = '/v3.0/users?role=district_admin'
30
32
  EVENTS_ENDPOINT = '/v1.2/events'
31
- TERMS_ENDPOINT = '/v2.0/terms'
33
+ TERMS_ENDPOINT = '/v3.0/terms'
32
34
  GRADES_ENDPOINT = 'https://grades-api.beta.clever.com/v1/grade'
33
35
 
34
36
  class DistrictNotFound < StandardError; end
data/lib/clever/client.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Clever
4
4
  class Client
5
5
  attr_accessor :app_id, :app_token, :sync_id, :logger,
6
- :vendor_key, :vendor_secret, :username_source
6
+ :vendor_key, :vendor_secret, :username_source, :staff_username_source
7
7
 
8
8
  attr_reader :api_url, :tokens_endpoint
9
9
 
@@ -54,7 +54,7 @@ module Clever
54
54
  Paginator.fetch(connection, endpoint, :get, Types::Event, client: self).force
55
55
  end
56
56
 
57
- %i(students courses teachers sections terms).each do |record_type|
57
+ %i(students courses teachers admins sections terms).each do |record_type|
58
58
  define_method(record_type) do |record_uids = []|
59
59
  authenticate
60
60
 
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Clever
4
+ module Types
5
+ class Admin < Teacher
6
+ def initialize(attributes = {}, *, client: nil)
7
+ @district_username = attributes.dig('roles', 'district_admin', 'credentials', 'district_username')
8
+ @email = attributes['email']
9
+ @first_name = attributes['name']['first']
10
+ @last_name = attributes['name']['last']
11
+ @legacy_id = attributes.dig('roles', 'district_admin', 'legacy_id')
12
+ @provider = 'clever'
13
+ @sis_id = attributes.dig('roles', 'district_admin', 'credentials', 'sis_id')
14
+ @uid = attributes['id']
15
+ @username = username(client)
16
+ @role = 'admin'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -6,17 +6,19 @@ module Clever
6
6
  attr_reader :uid,
7
7
  :first_name,
8
8
  :last_name,
9
- :provider
9
+ :provider,
10
+ :legacy_id
10
11
 
11
12
  def initialize(attributes = {}, client: nil)
12
- @uid = attributes['id']
13
+ @district_username = attributes.dig('credentials', 'district_username')
14
+ @email = attributes['email']
13
15
  @first_name = attributes['name']['first']
14
16
  @last_name = attributes['name']['last']
15
- @district_username = attributes.dig('credentials', 'district_username')
17
+ @legacy_id = attributes.dig('roles', 'student', 'legacy_id')
18
+ @provider = 'clever'
16
19
  @sis_id = attributes['sis_id']
17
- @email = attributes['email']
20
+ @uid = attributes['id']
18
21
  @username = username(client)
19
- @provider = 'clever'
20
22
  end
21
23
 
22
24
  def username(client = nil)
@@ -7,14 +7,54 @@ module Clever
7
7
  :email,
8
8
  :first_name,
9
9
  :last_name,
10
- :provider
11
-
12
- def initialize(attributes = {}, *)
13
- @uid = attributes['id']
14
- @email = attributes['email']
15
- @first_name = attributes['name']['first']
16
- @last_name = attributes['name']['last']
17
- @provider = 'clever'
10
+ :provider,
11
+ :legacy_id,
12
+ :role
13
+
14
+ def initialize(attributes = {}, *, client: nil)
15
+ @district_username = attributes.dig('roles', 'teacher', 'credentials', 'district_username')
16
+ @email = attributes['email']
17
+ @first_name = attributes['name']['first']
18
+ @last_name = attributes['name']['last']
19
+ @legacy_id = attributes.dig('roles', 'teacher', 'legacy_id')
20
+ @provider = 'clever'
21
+ @sis_id = attributes.dig('roles', 'teacher', 'credentials', 'sis_id')
22
+ @uid = attributes['id']
23
+ @username = username(client)
24
+ @role = 'teacher'
25
+ end
26
+
27
+ def username(client = nil)
28
+ username_source = client&.staff_username_source
29
+
30
+ @username ||= presence(username_from(username_source))
31
+ end
32
+
33
+ def to_h
34
+ {
35
+ uid: @uid,
36
+ email: @email,
37
+ first_name: @first_name,
38
+ last_name: @last_name,
39
+ username: @username,
40
+ provider: @provider
41
+ }
42
+ end
43
+
44
+ private
45
+
46
+ def username_from(username_source)
47
+ return if blank?(username_source)
48
+
49
+ presence(instance_variable_get("@#{username_source}"))
50
+ end
51
+
52
+ def presence(field)
53
+ field unless blank?(field)
54
+ end
55
+
56
+ def blank?(field)
57
+ field.nil? || field == ''
18
58
  end
19
59
  end
20
60
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Clever
4
- VERSION = '2.3.0'
4
+ VERSION = '3.1.1'
5
5
  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: 2.3.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Julius
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-18 00:00:00.000000000 Z
11
+ date: 2021-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -192,6 +192,7 @@ files:
192
192
  - lib/clever/connection.rb
193
193
  - lib/clever/paginator.rb
194
194
  - lib/clever/response.rb
195
+ - lib/clever/types/admin.rb
195
196
  - lib/clever/types/base.rb
196
197
  - lib/clever/types/classroom.rb
197
198
  - lib/clever/types/course.rb