clever 2.0.0 → 2.3.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: 5c69433963fc1da84ed7e47f2d3193bc40d731a4
4
- data.tar.gz: 8642226c4912d92db027a46bc12d47abb8630f7e
3
+ metadata.gz: c35d6eada204a0058fad8c09d0bd59a63a928255
4
+ data.tar.gz: 467317854d78559603c9d829899b9adc9cc20cfa
5
5
  SHA512:
6
- metadata.gz: 950c9c78c29684ecf22d9f46dde4e06dd3de6b3888b08910b2b27c6b5dada759225a9e71e8d8938d78adfc4ccdb15dc6e0b4f2823d535d280ea4b94a6b9eec23
7
- data.tar.gz: b0f14d5cecb65e02cd1723da7ab9a99c843a27efa9fc50b10c0be69909514ed29610303c7acf6521813bf53732a7630930d1720caa3fa4a7b50adc75ab60fb63
6
+ metadata.gz: 7595b689345c6a9dc347a561f7c0674ae4a82d53b436455f6ce8e5b0bfb278ac39ccb63e625ffbd052a08c291c426f810927d89c6a3c72e8723c0a071d2b9642
7
+ data.tar.gz: 6dc199bfa6d54d851a607cb04d52edb3c5393a5515e28c89ddf6aa6ab1790ecfd542d6405d80dfadb98152c6a7a658ebfb923f24aaacbb20026e40d7237d4e4f
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clever (2.0.0)
4
+ clever (2.3.1)
5
5
  faraday
6
6
  faraday_middleware
7
7
 
@@ -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/term'
20
21
  require 'clever/types/token'
21
22
 
22
23
  module Clever
@@ -27,6 +28,7 @@ module Clever
27
28
  SECTIONS_ENDPOINT = '/v2.0/sections'
28
29
  TEACHERS_ENDPOINT = '/v2.0/teachers'
29
30
  EVENTS_ENDPOINT = '/v1.2/events'
31
+ TERMS_ENDPOINT = '/v2.0/terms'
30
32
  GRADES_ENDPOINT = 'https://grades-api.beta.clever.com/v1/grade'
31
33
 
32
34
  class DistrictNotFound < StandardError; end
@@ -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).each do |record_type|
57
+ %i(students courses teachers sections terms).each do |record_type|
58
58
  define_method(record_type) do |record_uids = []|
59
59
  authenticate
60
60
 
@@ -75,14 +75,21 @@ module Clever
75
75
 
76
76
  fetched_courses = courses
77
77
 
78
+ terms_hash = terms.each_with_object({}) { |term, terms| terms[term.uid] = term }
79
+
78
80
  sections.map do |section|
79
81
  course = fetched_courses.find { |clever_course| clever_course.uid == section.course }
82
+ term = terms_hash[section.term_id]
80
83
  Types::Classroom.new(
81
84
  'id' => section.uid,
82
85
  'name' => section.name,
83
86
  'period' => section.period,
84
87
  'course_number' => course&.number,
85
- 'grades' => section.grades
88
+ 'grades' => section.grades,
89
+ 'subjects' => section.subjects,
90
+ 'term_name' => term&.name,
91
+ 'term_start_date' => term&.start_date,
92
+ 'term_end_date' => term&.end_date
86
93
  )
87
94
  end
88
95
  end
@@ -129,7 +136,8 @@ module Clever
129
136
  section.teachers.each do |teacher_uid|
130
137
  enrollments[:teacher] << Types::Enrollment.new(
131
138
  'classroom_uid' => section.uid,
132
- 'user_uid' => teacher_uid
139
+ 'user_uid' => teacher_uid,
140
+ 'primary' => section.primary_teacher_uid == teacher_uid
133
141
  )
134
142
  end
135
143
  end
@@ -10,6 +10,14 @@ module Clever
10
10
  variables[key] = value
11
11
  end
12
12
  end
13
+
14
+ def presence(field)
15
+ field unless blank?(field)
16
+ end
17
+
18
+ def blank?(field)
19
+ field.nil? || field == ''
20
+ end
13
21
  end
14
22
  end
15
23
  end
@@ -8,15 +8,23 @@ module Clever
8
8
  :period,
9
9
  :course_number,
10
10
  :grades,
11
- :provider
11
+ :subjects,
12
+ :provider,
13
+ :term_name,
14
+ :term_start_date,
15
+ :term_end_date
12
16
 
13
17
  def initialize(attributes = {}, *)
14
- @uid = attributes['id']
15
- @name = attributes['name']
16
- @period = attributes['period']
17
- @course_number = attributes['course_number']
18
- @grades = attributes['grades']
19
- @provider = 'clever'
18
+ @uid = attributes['id']
19
+ @name = attributes['name']
20
+ @period = attributes['period']
21
+ @course_number = attributes['course_number']
22
+ @grades = attributes['grades']
23
+ @subjects = attributes['subjects']
24
+ @term_name = attributes['term_name']
25
+ @term_start_date = attributes['term_start_date']
26
+ @term_end_date = attributes['term_end_date']
27
+ @provider = 'clever'
20
28
  end
21
29
  end
22
30
  end
@@ -5,12 +5,14 @@ module Clever
5
5
  class Enrollment < Base
6
6
  attr_reader :classroom_uid,
7
7
  :user_uid,
8
- :provider
8
+ :provider,
9
+ :primary
9
10
 
10
11
  def initialize(attributes = {})
11
- @classroom_uid = attributes['classroom_uid']
12
- @user_uid = attributes['user_uid']
13
- @provider = 'clever'
12
+ @classroom_uid = attributes['classroom_uid']
13
+ @user_uid = attributes['user_uid']
14
+ @provider = 'clever'
15
+ @primary = attributes.dig('primary') || false
14
16
  end
15
17
  end
16
18
  end
@@ -8,19 +8,25 @@ module Clever
8
8
  :period,
9
9
  :course,
10
10
  :grades,
11
+ :subjects,
11
12
  :students,
12
13
  :teachers,
13
- :provider
14
+ :term_id,
15
+ :provider,
16
+ :primary_teacher_uid
14
17
 
15
18
  def initialize(attributes = {}, *)
16
- @uid = attributes['id']
17
- @name = attributes['name']
18
- @period = attributes['period']
19
- @course = attributes['course']
20
- @grades = attributes['grade']
21
- @students = attributes['students']
22
- @teachers = attributes['teachers']
23
- @provider = 'clever'
19
+ @uid = attributes['id']
20
+ @name = attributes['name']
21
+ @period = attributes['period']
22
+ @course = attributes['course']
23
+ @grades = [presence(attributes['grade'])].compact
24
+ @subjects = [presence(attributes['subject'])].compact
25
+ @students = attributes['students']
26
+ @teachers = attributes['teachers']
27
+ @term_id = attributes['term_id']
28
+ @provider = 'clever'
29
+ @primary_teacher_uid = attributes['teacher']
24
30
  end
25
31
  end
26
32
  end
@@ -37,14 +37,6 @@ module Clever
37
37
 
38
38
  private
39
39
 
40
- def presence(field)
41
- field unless blank?(field)
42
- end
43
-
44
- def blank?(field)
45
- field.nil? || field == ''
46
- end
47
-
48
40
  def username_from(username_source)
49
41
  return if blank?(username_source)
50
42
 
@@ -9,13 +9,38 @@ module Clever
9
9
  :last_name,
10
10
  :provider
11
11
 
12
- def initialize(attributes = {}, *)
12
+ def initialize(attributes = {}, *, client: nil)
13
13
  @uid = attributes['id']
14
14
  @email = attributes['email']
15
15
  @first_name = attributes['name']['first']
16
16
  @last_name = attributes['name']['last']
17
+ @district_username = attributes.dig('credentials', 'district_username')
18
+ @sis_id = attributes['sis_id']
19
+ @username = username(client)
17
20
  @provider = 'clever'
18
21
  end
22
+
23
+ def username(client = nil)
24
+ username_source = client&.staff_username_source
25
+
26
+ @username ||= presence(username_from(username_source))
27
+ end
28
+
29
+ private
30
+
31
+ def username_from(username_source)
32
+ return if blank?(username_source)
33
+
34
+ presence(instance_variable_get("@#{username_source}"))
35
+ end
36
+
37
+ def presence(field)
38
+ field unless blank?(field)
39
+ end
40
+
41
+ def blank?(field)
42
+ field.nil? || field == ''
43
+ end
19
44
  end
20
45
  end
21
46
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Clever
4
+ module Types
5
+ class Term < Base
6
+ attr_reader :uid,
7
+ :name,
8
+ :start_date,
9
+ :end_date
10
+
11
+ def initialize(attributes = {}, *)
12
+ @uid = attributes['id']
13
+ @name = attributes['name']
14
+ @start_date = attributes['start_date']
15
+ @end_date = attributes['end_date']
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Clever
4
- VERSION = '2.0.0'
4
+ VERSION = '2.3.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.0.0
4
+ version: 2.3.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-05-15 00:00:00.000000000 Z
11
+ date: 2020-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -200,6 +200,7 @@ files:
200
200
  - lib/clever/types/section.rb
201
201
  - lib/clever/types/student.rb
202
202
  - lib/clever/types/teacher.rb
203
+ - lib/clever/types/term.rb
203
204
  - lib/clever/types/token.rb
204
205
  - lib/clever/version.rb
205
206
  homepage: https://github.com/tci/clever