Commit f38560f

mo <mo.khan@gmail.com>
2018-01-13 21:56:21
extract resource.
1 parent eaf478a
Changed files (4)
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