Commit c31ef28

mo <mo.khan@gmail.com>
2019-01-05 00:30:01
extract meta class
1 parent 83274c9
lib/scim/kit/v2/templates/meta.json.jbuilder
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+json.key_format! camelize: :lower
+json.location location
+json.resource_type resource_type
+json.created created.iso8601 if created
+json.last_modified last_modified.iso8601 if last_modified
+json.version version.to_i if version
lib/scim/kit/v2/templates/service_provider_configuration.json.jbuilder
@@ -25,9 +25,5 @@ json.authentication_schemes authentication_schemes do |authentication_scheme|
   render authentication_scheme, json: json
 end
 json.meta do
-  json.location location
-  json.resource_type 'ServiceProviderConfig'
-  json.created created.iso8601
-  json.last_modified last_modified.iso8601
-  json.version version.to_i
+  render meta, json: json
 end
lib/scim/kit/v2/meta.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Scim
+  module Kit
+    module V2
+      # Represents a meta section
+      class Meta
+        include Templatable
+
+        attr_accessor :created, :last_modified, :version
+        attr_reader :location
+        attr_reader :resource_type
+
+        def initialize(resource_type, location)
+          @resource_type = resource_type
+          @location = location
+          @version = @created = @last_modified = Time.now
+        end
+      end
+    end
+  end
+end
lib/scim/kit/v2/service_provider_configuration.rb
@@ -8,14 +8,12 @@ module Scim
         include Templatable
         attr_reader :location
         attr_accessor :documentation_uri
-        attr_accessor :created, :last_modified, :version
         attr_reader :authentication_schemes
         attr_reader :etag, :sort, :change_password, :patch
-        attr_reader :bulk, :filter
+        attr_reader :bulk, :filter, :meta
 
         def initialize(location:)
-          @location = location
-          @version = @created = @last_modified = Time.now
+          @meta = Meta.new('ServiceProviderConfig', location)
           @authentication_schemes = []
           @etag = Supportable.new
           @sort = Supportable.new
lib/scim/kit.rb
@@ -10,6 +10,7 @@ require 'scim/kit/version'
 
 require 'scim/kit/v2/attribute_type'
 require 'scim/kit/v2/authentication_scheme'
+require 'scim/kit/v2/meta'
 require 'scim/kit/v2/mutability'
 require 'scim/kit/v2/resource_type'
 require 'scim/kit/v2/returned'