clever 3.0.0 → 3.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
  SHA1:
3
- metadata.gz: ae0e8318fdecf7c7c7165bef8c0ac88051f66d18
4
- data.tar.gz: d3d7ae47d72ca7535fa478f4ff5f29dc97b0b192
3
+ metadata.gz: 77dbd6fdbbf2b13bdf7d7011c19f03d90db8ab4e
4
+ data.tar.gz: c98d3ea989e3c3cdfd0bd8114a412965c232c586
5
5
  SHA512:
6
- metadata.gz: 3041336d755fecb6fc2860439c6bc2b9f94e5bbef769647a0fd767587ac3a9eabda9db14311178920aca7edcd5ef2b5e3ac0c52e93630fc8d0a621a6a8394301
7
- data.tar.gz: d043aa91dabd5b5e0044cfdd396bbae6f846776e2e126db85ef70b4afb04e6256aad7e4630ff0541c55fd60167d30f8cd82548175dd1e7162753ede4c31db067
6
+ metadata.gz: 36c9a1621dedd554ff8959ec6f4477baa48a5832dde56fd4d64201fdb5bca3d8b02d502f443beff52978908164e9286b4897cc5aa546cf5b4f153764a381cf5e
7
+ data.tar.gz: 8de9b79585e796b400544747294ddbd4fd23e1688df9875497270004b80c988d6745147556ca23eb70c0b729c5c85f5a7d143b131ed173779220cd8c9c03810d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clever (3.0.0)
4
+ clever (3.1.0)
5
5
  faraday
6
6
  faraday_middleware
7
7
 
data/lib/clever.rb CHANGED
@@ -17,6 +17,7 @@ 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
 
@@ -26,7 +27,8 @@ module Clever
26
27
  STUDENTS_ENDPOINT = '/v3.0/users?role=student'
27
28
  COURSES_ENDPOINT = '/v3.0/courses'
28
29
  SECTIONS_ENDPOINT = '/v3.0/sections'
29
- TEACHERS_ENDPOINT = '/v3.0/users'
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
33
  TERMS_ENDPOINT = '/v3.0/terms'
32
34
  GRADES_ENDPOINT = 'https://grades-api.beta.clever.com/v1/grade'
data/lib/clever/client.rb CHANGED
@@ -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 sections terms).each do |record_type|
58
58
  define_method(record_type) do |record_uids = []|
59
59
  authenticate
60
60
 
@@ -69,6 +69,19 @@ module Clever
69
69
  end
70
70
  end
71
71
 
72
+ def teachers(record_uids = [])
73
+ authenticate
74
+
75
+ teachers = Paginator.fetch(connection, Clever::TEACHERS_ENDPOINT, :get, Types::Teacher, client: self).force
76
+ admins = Paginator.fetch(connection, Clever::ADMINS_ENDPOINT, :get, Types::Admin, client: self).force
77
+
78
+ records = (admins + teachers).uniq(&:uid)
79
+
80
+ return records if record_uids.empty?
81
+
82
+ records.select { |record| record_uids.to_set.include?(record.uid) }
83
+ end
84
+
72
85
  # discard params to make the API behave the same as the one roster gem
73
86
  def classrooms(*)
74
87
  authenticate
@@ -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
@@ -8,18 +8,20 @@ module Clever
8
8
  :first_name,
9
9
  :last_name,
10
10
  :provider,
11
- :legacy_id
11
+ :legacy_id,
12
+ :role
12
13
 
13
14
  def initialize(attributes = {}, *, client: nil)
14
- @district_username = attributes.dig('credentials', 'district_username')
15
+ @district_username = attributes.dig('roles', 'teacher', 'credentials', 'district_username')
15
16
  @email = attributes['email']
16
17
  @first_name = attributes['name']['first']
17
18
  @last_name = attributes['name']['last']
18
19
  @legacy_id = attributes.dig('roles', 'teacher', 'legacy_id')
19
20
  @provider = 'clever'
20
- @sis_id = attributes['sis_id']
21
+ @sis_id = attributes.dig('roles', 'teacher', 'credentials', 'sis_id')
21
22
  @uid = attributes['id']
22
23
  @username = username(client)
24
+ @role = 'teacher'
23
25
  end
24
26
 
25
27
  def username(client = nil)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Clever
4
- VERSION = '3.0.0'
4
+ VERSION = '3.1.0'
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: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Julius
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-28 00:00:00.000000000 Z
11
+ date: 2021-06-01 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