Commit f38560f
Changed files (4)
lib
scim
shady
lib/scim/shady/resource.rb
@@ -0,0 +1,25 @@
+module Scim
+ module Shady
+ class Resource
+ attr_accessor :id
+ attr_accessor :created_at
+ attr_accessor :updated_at
+ attr_accessor :location
+ attr_accessor :version
+
+ def to_h
+ {
+ 'schemas' => [],
+ 'id' => id,
+ 'meta' => {
+ 'resourceType' => self.class.name.split(/::/).last,
+ 'created' => created_at.utc.iso8601,
+ 'lastModified' => updated_at.utc.iso8601,
+ 'location' => location,
+ 'version' => version,
+ },
+ }
+ end
+ end
+ end
+end
lib/scim/shady/schemas.rb
@@ -0,0 +1,7 @@
+module Scim
+ module Shady
+ class Schemas
+ USER = "urn:ietf:params:scim:schemas:core:2.0:User"
+ end
+ end
+end
lib/scim/shady/user.rb
@@ -0,0 +1,22 @@
+module Scim
+ module Shady
+ class User < Resource
+ attr_accessor :username
+
+ def to_h
+ super.merge({
+ 'schemas' => [Schemas::USER],
+ 'userName' => username,
+ })
+ end
+
+ class << self
+ def build
+ user = new
+ yield user
+ user
+ end
+ end
+ end
+ end
+end
lib/scim/shady.rb
@@ -1,42 +1,11 @@
require "time"
+
+require "scim/shady/resource"
+require "scim/shady/schemas"
+require "scim/shady/user"
require "scim/shady/version"
module Scim
module Shady
- class User
- attr_accessor :id
- attr_accessor :username
- attr_accessor :created_at
- attr_accessor :updated_at
- attr_accessor :location
- attr_accessor :version
-
- def to_h
- {
- 'schemas' => [Schemas::USER],
- 'id' => id,
- 'userName' => username,
- 'meta' => {
- 'resourceType' => 'User',
- 'created' => created_at.utc.iso8601,
- 'lastModified' => updated_at.utc.iso8601,
- 'location' => location,
- 'version' => version,
- },
- }
- end
-
- class << self
- def build
- user = new
- yield user
- user
- end
- end
- end
-
- class Schemas
- USER = "urn:ietf:params:scim:schemas:core:2.0:User"
- end
end
end