scim-shady 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +2 -2
- data/.travis.yml +2 -2
- data/README.md +6 -5
- data/lib/scim/shady.rb +6 -19
- data/lib/scim/shady/enterprise_user.rb +93 -0
- data/lib/scim/shady/group.rb +49 -17
- data/lib/scim/shady/user.rb +550 -63
- data/lib/scim/shady/version.rb +1 -1
- data/scim-shady.gemspec +3 -2
- metadata +12 -38
- data/lib/scim/shady/address.rb +0 -41
- data/lib/scim/shady/buildable.rb +0 -21
- data/lib/scim/shady/builders.rb +0 -14
- data/lib/scim/shady/builders/addresses.rb +0 -24
- data/lib/scim/shady/builders/bulk.rb +0 -19
- data/lib/scim/shady/builders/emails.rb +0 -16
- data/lib/scim/shady/builders/filter.rb +0 -17
- data/lib/scim/shady/builders/groups.rb +0 -16
- data/lib/scim/shady/builders/instant_messengers.rb +0 -16
- data/lib/scim/shady/builders/metadata.rb +0 -29
- data/lib/scim/shady/builders/name.rb +0 -27
- data/lib/scim/shady/builders/phone_numbers.rb +0 -16
- data/lib/scim/shady/builders/photos.rb +0 -16
- data/lib/scim/shady/builders/resource.rb +0 -26
- data/lib/scim/shady/builders/service_provider_config.rb +0 -87
- data/lib/scim/shady/builders/user.rb +0 -96
- data/lib/scim/shady/builders/x509_certificates.rb +0 -16
- data/lib/scim/shady/instant_messenger.rb +0 -21
- data/lib/scim/shady/metadata.rb +0 -45
- data/lib/scim/shady/name.rb +0 -17
- data/lib/scim/shady/phone_number.rb +0 -29
- data/lib/scim/shady/photo.rb +0 -29
- data/lib/scim/shady/resource.rb +0 -25
- data/lib/scim/shady/schemas.rb +0 -17
- data/lib/scim/shady/service_provider_config.rb +0 -71
- data/lib/scim/shady/x509_certificate.rb +0 -17
@@ -1,87 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
module Builders
|
4
|
-
class ServiceProviderConfig
|
5
|
-
extend Forwardable
|
6
|
-
def_delegators :@meta, :created_at=, :updated_at=, :location=, :version=
|
7
|
-
def_delegators :@meta, :created_at, :updated_at, :location, :version
|
8
|
-
attr_accessor :documentation_uri
|
9
|
-
attr_accessor :patch
|
10
|
-
attr_accessor :change_password_supported
|
11
|
-
attr_accessor :sort_supported
|
12
|
-
attr_accessor :etag_supported
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
@authentication_schemes = []
|
16
|
-
@created_at = @updated_at = Time.now
|
17
|
-
@meta = Metadata.new(self)
|
18
|
-
end
|
19
|
-
|
20
|
-
def meta
|
21
|
-
yield @meta
|
22
|
-
end
|
23
|
-
|
24
|
-
def bulk
|
25
|
-
@bulk = Bulk.new
|
26
|
-
yield @bulk
|
27
|
-
end
|
28
|
-
|
29
|
-
def filter
|
30
|
-
@filter = Filter.new
|
31
|
-
yield @filter
|
32
|
-
end
|
33
|
-
|
34
|
-
def add_authentication_scheme(type)
|
35
|
-
if :oauth_bearer_token == type
|
36
|
-
@authentication_schemes.push({
|
37
|
-
"name" => "OAuth Bearer Token",
|
38
|
-
"description" => "Authentication scheme using the OAuth Bearer Token Standard",
|
39
|
-
"specUri" => "http://www.rfc-editor.org/info/rfc6750",
|
40
|
-
"documentationUri" => "http://example.com/help/oauth.html",
|
41
|
-
"type" => "oauthbearertoken",
|
42
|
-
})
|
43
|
-
elsif :http_basic == type
|
44
|
-
@authentication_schemes.push({
|
45
|
-
"name" => "HTTP Basic",
|
46
|
-
"description" => "Authentication scheme using the HTTP Basic Standard",
|
47
|
-
"specUri" => "http://www.rfc-editor.org/info/rfc2617",
|
48
|
-
"documentationUri" => "http://example.com/help/httpBasic.html",
|
49
|
-
"type" => "httpbasic",
|
50
|
-
})
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def build
|
55
|
-
Scim::Shady::ServiceProviderConfig.new(to_json)
|
56
|
-
end
|
57
|
-
|
58
|
-
def to_json
|
59
|
-
JSON.generate(to_h)
|
60
|
-
end
|
61
|
-
|
62
|
-
def to_h
|
63
|
-
{
|
64
|
-
'schemas' => [Schemas::SERVICE_PROVIDER_CONFIG],
|
65
|
-
'documentationUri' => documentation_uri,
|
66
|
-
'patch' => { "supported" => patch },
|
67
|
-
'bulk' => @bulk.to_h,
|
68
|
-
'filter' => @filter.to_h,
|
69
|
-
'changePassword' => {
|
70
|
-
'supported' => change_password_supported,
|
71
|
-
},
|
72
|
-
'sort' => {
|
73
|
-
'supported' => sort_supported,
|
74
|
-
},
|
75
|
-
'etag' => {
|
76
|
-
'supported' => etag_supported,
|
77
|
-
},
|
78
|
-
'authenticationSchemes' => @authentication_schemes.each_with_index.map do |scheme, index|
|
79
|
-
scheme['primary'] = true if index.zero?
|
80
|
-
scheme
|
81
|
-
end
|
82
|
-
}.merge(@meta.to_h)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
@@ -1,96 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
module Builders
|
4
|
-
class User < Resource
|
5
|
-
attr_accessor :external_id
|
6
|
-
attr_accessor :username
|
7
|
-
attr_accessor :display_name
|
8
|
-
attr_accessor :nick_name
|
9
|
-
attr_accessor :profile_url
|
10
|
-
attr_accessor :user_type
|
11
|
-
attr_accessor :title
|
12
|
-
attr_accessor :preferred_language
|
13
|
-
attr_accessor :locale
|
14
|
-
attr_accessor :timezone
|
15
|
-
attr_accessor :active
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
@name = Name.new
|
19
|
-
@emails = Emails.new
|
20
|
-
@addresses = Addresses.new
|
21
|
-
@phone_numbers = PhoneNumbers.new
|
22
|
-
@instant_messengers = InstantMessengers.new
|
23
|
-
@photos = Photos.new
|
24
|
-
@groups = Groups.new
|
25
|
-
@x509_certificates = X509Certificates.new
|
26
|
-
super
|
27
|
-
end
|
28
|
-
|
29
|
-
def name
|
30
|
-
yield @name
|
31
|
-
end
|
32
|
-
|
33
|
-
def emails
|
34
|
-
yield @emails
|
35
|
-
end
|
36
|
-
|
37
|
-
def addresses
|
38
|
-
yield @addresses
|
39
|
-
end
|
40
|
-
|
41
|
-
def phone_numbers
|
42
|
-
yield @phone_numbers
|
43
|
-
end
|
44
|
-
|
45
|
-
def instant_messengers
|
46
|
-
yield @instant_messengers
|
47
|
-
end
|
48
|
-
|
49
|
-
def photos
|
50
|
-
yield @photos
|
51
|
-
end
|
52
|
-
|
53
|
-
def groups
|
54
|
-
yield @groups
|
55
|
-
end
|
56
|
-
|
57
|
-
def x509_certificates
|
58
|
-
yield @x509_certificates
|
59
|
-
end
|
60
|
-
|
61
|
-
def build
|
62
|
-
Scim::Shady::User.new(to_json)
|
63
|
-
end
|
64
|
-
|
65
|
-
def to_json
|
66
|
-
JSON.generate(to_h)
|
67
|
-
end
|
68
|
-
|
69
|
-
def to_h
|
70
|
-
super.merge({
|
71
|
-
'schemas' => [Schemas::USER],
|
72
|
-
'externalId' => external_id,
|
73
|
-
'userName' => username,
|
74
|
-
'displayName' => display_name,
|
75
|
-
'nickName' => nick_name,
|
76
|
-
'profile_url' => profile_url,
|
77
|
-
'userType' => user_type,
|
78
|
-
'title' => title,
|
79
|
-
'preferredLanguage' => preferred_language,
|
80
|
-
'locale' => locale,
|
81
|
-
'timezone' => timezone,
|
82
|
-
'active' => active,
|
83
|
-
})
|
84
|
-
.merge(@name.to_h)
|
85
|
-
.merge(@emails.to_h)
|
86
|
-
.merge(@addresses.to_h)
|
87
|
-
.merge(@phone_numbers.to_h)
|
88
|
-
.merge(@instant_messengers.to_h)
|
89
|
-
.merge(@photos.to_h)
|
90
|
-
.merge(@groups.to_h)
|
91
|
-
.merge(@x509_certificates.to_h)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
module Builders
|
4
|
-
class X509Certificates
|
5
|
-
def add(certificate)
|
6
|
-
@items ||= []
|
7
|
-
@items.push(value: certificate.to_pem.gsub(/-----BEGIN CERTIFICATE-----/, '').gsub(/-----END CERTIFICATE-----/, ''))
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_h
|
11
|
-
{ 'x509Certificates' => @items }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
data/lib/scim/shady/metadata.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
class Metadata
|
4
|
-
def initialize(hash)
|
5
|
-
@hash = hash
|
6
|
-
end
|
7
|
-
|
8
|
-
def created
|
9
|
-
created_at
|
10
|
-
end
|
11
|
-
|
12
|
-
def created_at
|
13
|
-
DateTime.parse(to_h['meta']['created'])
|
14
|
-
end
|
15
|
-
|
16
|
-
def last_modified
|
17
|
-
updated_at
|
18
|
-
end
|
19
|
-
|
20
|
-
def updated_at
|
21
|
-
DateTime.parse(to_h['meta']['lastModified'])
|
22
|
-
end
|
23
|
-
|
24
|
-
def version
|
25
|
-
to_h['meta']['version']
|
26
|
-
end
|
27
|
-
|
28
|
-
def location
|
29
|
-
to_h['meta']['location']
|
30
|
-
end
|
31
|
-
|
32
|
-
def resource_type
|
33
|
-
to_h['meta']['resourceType']
|
34
|
-
end
|
35
|
-
|
36
|
-
def user?
|
37
|
-
resource_type == 'User'
|
38
|
-
end
|
39
|
-
|
40
|
-
def to_h
|
41
|
-
@hash
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
data/lib/scim/shady/name.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
class PhoneNumber
|
4
|
-
def initialize(hash)
|
5
|
-
@hash = hash
|
6
|
-
end
|
7
|
-
|
8
|
-
def value
|
9
|
-
to_h['value']
|
10
|
-
end
|
11
|
-
|
12
|
-
def type
|
13
|
-
to_h['type']
|
14
|
-
end
|
15
|
-
|
16
|
-
def work?
|
17
|
-
type == 'work'
|
18
|
-
end
|
19
|
-
|
20
|
-
def mobile?
|
21
|
-
type == 'mobile'
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_h
|
25
|
-
@hash
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/scim/shady/photo.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
class Photo
|
4
|
-
def initialize(hash)
|
5
|
-
@hash = hash
|
6
|
-
end
|
7
|
-
|
8
|
-
def value
|
9
|
-
to_h['value']
|
10
|
-
end
|
11
|
-
|
12
|
-
def type
|
13
|
-
to_h['type']
|
14
|
-
end
|
15
|
-
|
16
|
-
def photo?
|
17
|
-
type == 'photo'
|
18
|
-
end
|
19
|
-
|
20
|
-
def thumbnail?
|
21
|
-
type == 'thumbnail'
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_h
|
25
|
-
@hash
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/scim/shady/resource.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
class Resource
|
4
|
-
def initialize(json)
|
5
|
-
@json = json
|
6
|
-
end
|
7
|
-
|
8
|
-
def meta
|
9
|
-
Metadata.new(to_h)
|
10
|
-
end
|
11
|
-
|
12
|
-
def id
|
13
|
-
to_h['id']
|
14
|
-
end
|
15
|
-
|
16
|
-
def to_h
|
17
|
-
@json_hash ||= JSON.parse(to_json)
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_json
|
21
|
-
@json
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/scim/shady/schemas.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
class Schemas
|
4
|
-
CORE = "urn:ietf:params:scim:schemas:core:2.0"
|
5
|
-
GROUP = "#{CORE}:Group"
|
6
|
-
SERVICE_PROVIDER_CONFIG = "#{CORE}:ServiceProviderConfig"
|
7
|
-
USER = "#{CORE}:User"
|
8
|
-
end
|
9
|
-
|
10
|
-
class Messages
|
11
|
-
CORE = "urn:ietf:params:scim:api:messages:2.0"
|
12
|
-
LIST_RESPONSE = "#{CORE}:ListResponse"
|
13
|
-
SEARCH_REQUEST = "#{CORE}:SearchRequest"
|
14
|
-
ERROR = "#{CORE}:Error"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
module Scim
|
2
|
-
module Shady
|
3
|
-
class ServiceProviderConfig
|
4
|
-
include Buildable
|
5
|
-
|
6
|
-
def initialize(json)
|
7
|
-
@json = json
|
8
|
-
end
|
9
|
-
|
10
|
-
def meta
|
11
|
-
Metadata.new(to_h)
|
12
|
-
end
|
13
|
-
|
14
|
-
def documentation_uri
|
15
|
-
to_h['documentationUri']
|
16
|
-
end
|
17
|
-
|
18
|
-
def patch
|
19
|
-
to_h['patch']['supported']
|
20
|
-
end
|
21
|
-
|
22
|
-
def bulk_supported
|
23
|
-
to_h['bulk']['supported']
|
24
|
-
end
|
25
|
-
|
26
|
-
def bulk_max_operations
|
27
|
-
to_h['bulk']['maxOperations']
|
28
|
-
end
|
29
|
-
|
30
|
-
def bulk_max_payload_size
|
31
|
-
to_h['bulk']['maxPayloadSize']
|
32
|
-
end
|
33
|
-
|
34
|
-
def filter_supported
|
35
|
-
to_h['filter']['supported']
|
36
|
-
end
|
37
|
-
|
38
|
-
def filter_max_results
|
39
|
-
to_h['filter']['maxResults']
|
40
|
-
end
|
41
|
-
|
42
|
-
def change_password_supported
|
43
|
-
to_h['changePassword']['supported']
|
44
|
-
end
|
45
|
-
|
46
|
-
def sort_supported
|
47
|
-
to_h['sort']['supported']
|
48
|
-
end
|
49
|
-
|
50
|
-
def etag_supported
|
51
|
-
to_h['etag']['supported']
|
52
|
-
end
|
53
|
-
|
54
|
-
def authentication_schemes
|
55
|
-
to_h['authenticationSchemes']
|
56
|
-
end
|
57
|
-
|
58
|
-
def to_h
|
59
|
-
@hash ||= JSON.parse(to_json)
|
60
|
-
end
|
61
|
-
|
62
|
-
def to_json
|
63
|
-
@json
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.builder_class
|
67
|
-
Scim::Shady::Builders::ServiceProviderConfig
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|