oneroster 2.2.0 → 2.3.3

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