oneroster 2.0.1 → 2.3.2

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: 56b1e4481ec56f6041edd31f16457ace9bd84d88
4
- data.tar.gz: 364a22aeaa63d58c65997563a239e549e1fbd70a
3
+ metadata.gz: 3d9b2a06cf3a50f5e78071d6a74349c39079a687
4
+ data.tar.gz: fb2d03aca728cf15aa886cf72010ede9ee14359e
5
5
  SHA512:
6
- metadata.gz: f0a4b44c8e3e518fc65bb7ca287b7ace69f5a036b82def7c33f2fbccc5aae60188efe7152e012a4bd4878dbd58512f28d15f1b4557ba95d59432d1226ec3e260
7
- data.tar.gz: 7940dcec5c164d80229032579927374c9b2c9d539d15a30ed8423002ad35795de980152252a58b04b04371762a4c9c76a47e675fd22fabafdc91f0efafecb383
6
+ metadata.gz: 472c0969f9ce2256f1b52615a135c61411be0c4dc04466b72aea5c24bf534cb205586d1727c32b71217fa1663d9db8fbcc9fe1a350858a551e8b7929f8f7cd44
7
+ data.tar.gz: b07e234e1a1c5323e341a8fb3e0a34fd3e194c13b17431db8fea10030d73b7a1cd80ade3b21d8dc64ec88db06cfb98c139463fe3a3ae9c0d9e29a38a1f8e5cd5
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oneroster (2.0.1)
4
+ oneroster (2.3.2)
5
5
  dry-inflector
6
6
  faraday
7
7
  faraday_middleware
@@ -4,7 +4,7 @@ module OneRoster
4
4
  class Client
5
5
  attr_accessor :app_id, :app_token, :api_url,
6
6
  :app_secret, :logger, :vendor_key,
7
- :username_source, :oauth_strategy
7
+ :username_source, :oauth_strategy, :staff_username_source
8
8
 
9
9
  attr_reader :authenticated
10
10
 
@@ -56,6 +56,7 @@ module OneRoster
56
56
  'course_number' => course.course_code,
57
57
  'period' => oneroster_class.period,
58
58
  'grades' => oneroster_class.grades,
59
+ 'subjects' => oneroster_class.subjects,
59
60
  'term_name' => term&.name,
60
61
  'term_start_date' => term&.start_date,
61
62
  'term_end_date' => term&.end_date
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OneRoster
2
4
  class Response
3
5
  attr_reader :status, :raw_body, :headers
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OneRoster
4
- VERSION = '2.0.1'
4
+ VERSION = '2.3.2'
5
5
  end
@@ -9,6 +9,7 @@ module OneRoster
9
9
  :provider,
10
10
  :period,
11
11
  :grades,
12
+ :subjects,
12
13
  :term_id
13
14
 
14
15
  def initialize(attributes = {}, *)
@@ -17,8 +18,9 @@ module OneRoster
17
18
  @course_uid = attributes['course']['sourcedId']
18
19
  @status = attributes['status']
19
20
  @period = first_period(attributes) || period_from_code(attributes)
20
- @grades = attributes['grades']
21
- @term_id = attributes['terms'][0]['sourcedId']
21
+ @grades = presence(attributes['grades']) || []
22
+ @subjects = presence(attributes['subjects']) || []
23
+ @term_id = attributes.dig('terms', 0, 'sourcedId')
22
24
  @provider = 'oneroster'
23
25
  end
24
26
 
@@ -35,6 +37,14 @@ module OneRoster
35
37
  def period_from_code(attributes)
36
38
  attributes['classCode']&.match(/- Period (\d+) -/) { |m| m[1] }
37
39
  end
40
+
41
+ def presence(field)
42
+ field unless blank?(field)
43
+ end
44
+
45
+ def blank?(field)
46
+ field.nil? || field == ''
47
+ end
38
48
  end
39
49
  end
40
50
  end
@@ -8,6 +8,7 @@ module OneRoster
8
8
  :course_number,
9
9
  :period,
10
10
  :grades,
11
+ :subjects,
11
12
  :provider,
12
13
  :term_name,
13
14
  :term_start_date,
@@ -19,6 +20,7 @@ module OneRoster
19
20
  @course_number = attributes['course_number']
20
21
  @period = attributes['period']
21
22
  @grades = attributes['grades']
23
+ @subjects = attributes['subjects']
22
24
  @term_name = attributes['term_name']
23
25
  @term_start_date = attributes['term_start_date']
24
26
  @term_end_date = attributes['term_end_date']
@@ -25,7 +25,7 @@ module OneRoster
25
25
  teacher?
26
26
  end
27
27
 
28
- def primary_teacher?
28
+ def primary
29
29
  teacher? && @primary.to_s == 'true'
30
30
  end
31
31
 
@@ -41,6 +41,7 @@ module OneRoster
41
41
  {
42
42
  classroom_uid: @classroom_uid,
43
43
  user_uid: @user_uid,
44
+ primary: primary,
44
45
  provider: @provider
45
46
  }
46
47
  end
@@ -9,12 +9,59 @@ module OneRoster
9
9
  :last_name,
10
10
  :provider
11
11
 
12
- def initialize(attributes = {}, *)
13
- @uid = attributes['sourcedId']
14
- @email = attributes['email']
15
- @first_name = attributes['givenName']
16
- @last_name = attributes['familyName']
17
- @provider = 'oneroster'
12
+ def initialize(attributes = {}, *, client: nil)
13
+ @uid = attributes['sourcedId']
14
+ @email = attributes['email']
15
+ @first_name = attributes['givenName']
16
+ @last_name = attributes['familyName']
17
+ @api_username = attributes['username']
18
+ @username = username(client)
19
+ @provider = 'oneroster'
20
+ end
21
+
22
+ def username(client = nil)
23
+ username_source = client&.staff_username_source
24
+ @username ||= presence(username_from(username_source))
25
+ end
26
+
27
+ def to_h
28
+ {
29
+ uid: @uid,
30
+ email: @email,
31
+ first_name: @first_name,
32
+ last_name: @last_name,
33
+ username: @username,
34
+ provider: @provider
35
+ }
36
+ end
37
+
38
+ private
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
+ def username_from(username_source)
49
+ return unless presence(username_source)
50
+
51
+ source = username_source(username_source)
52
+
53
+ presence(instance_variable_get("@#{source}"))
54
+ end
55
+
56
+ # if the username_source is `sourcedId`, we want to return `uid`
57
+ # so we can grab the right instance variable
58
+ def username_source(source)
59
+ case source
60
+ when 'sourcedId' then 'uid'
61
+ when 'username' then 'api_username'
62
+ else
63
+ source
64
+ end
18
65
  end
19
66
  end
20
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oneroster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.3.2
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-06-24 00:00:00.000000000 Z
11
+ date: 2020-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday