clever 2.3.0 → 3.1.1

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