oneroster 2.0.1 → 2.3.2

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