oneroster 2.2.0 → 2.3.3

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: a5d6015d83caa8a16179106a7989b290ade4e55c
4
- data.tar.gz: b5c49be79af2479551f2ab83d960be422e6102c2
3
+ metadata.gz: 22cfb219341af86583ad0be1601058826784c557
4
+ data.tar.gz: 419847c21f7e5bec0e3d85e98fefcb47834a7cac
5
5
  SHA512:
6
- metadata.gz: c38baa996a5efe36b531a5f785d8c6cfd353a5259d3c5b6b07474bf648d8d91132b0ac18a61a20fa4a0907da15bdc4a5381b237ac97c600ef1851f2be4a57a62
7
- data.tar.gz: bbe85324fc9799e923c8bda4897ef05dcd002c379ab30ef8c8f067cf67c03abb29cddf46d31b2001bf6442c6d007b1a7d21c350a639eb2a4857b22ba37b25dd7
6
+ metadata.gz: 7f27a2372bc742484d796a40f3e26fa3c8cdc8694cf58ed9797a9023244b7eec3503df68075a0227dc23cc11d0bcb8f3cbd44ba179f655644895e6792e9ef5a0
7
+ data.tar.gz: f443a111507f5d03ee8f089a0fdb5163077229d70d76d4b45e96ea5d9f8deff79d06fb2f49fe4144f4f0b61a228567127d43b920df2cb91efd43f068bc39f40b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oneroster (2.2.0)
4
+ oneroster (2.3.3)
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
 
@@ -31,7 +31,8 @@ module OneRoster
31
31
 
32
32
  return records if record_uids.empty?
33
33
 
34
- records.select { |record| record_uids.to_set.include?(record.uid) }
34
+ record_uids_set = record_uids.to_set
35
+ records.select { |record| record_uids_set.include?(record.uid) }
35
36
  end
36
37
  end
37
38
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OneRoster
4
- VERSION = '2.2.0'
4
+ VERSION = '2.3.3'
5
5
  end
data/lib/types/class.rb CHANGED
@@ -20,7 +20,7 @@ module OneRoster
20
20
  @period = first_period(attributes) || period_from_code(attributes)
21
21
  @grades = presence(attributes['grades']) || []
22
22
  @subjects = presence(attributes['subjects']) || []
23
- @term_id = attributes['terms'][0]['sourcedId']
23
+ @term_id = attributes.dig('terms', 0, 'sourcedId')
24
24
  @provider = 'oneroster'
25
25
  end
26
26
 
@@ -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
data/lib/types/teacher.rb CHANGED
@@ -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.2.0
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Julius
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-29 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -250,7 +250,7 @@ licenses:
250
250
  - MIT
251
251
  metadata:
252
252
  allowed_push_host: https://rubygems.org
253
- post_install_message:
253
+ post_install_message:
254
254
  rdoc_options: []
255
255
  require_paths:
256
256
  - lib
@@ -265,9 +265,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
265
  - !ruby/object:Gem::Version
266
266
  version: '0'
267
267
  requirements: []
268
- rubyforge_project:
269
- rubygems_version: 2.6.13
270
- signing_key:
268
+ rubyforge_project:
269
+ rubygems_version: 2.6.11
270
+ signing_key:
271
271
  specification_version: 4
272
272
  summary: Wrapper for the OneRoster API.
273
273
  test_files: []