Commit ed59c68

mokha <mokha@cisco.com>
2018-02-05 21:52:12
add a metadata command to register metadata.
1 parent 660f053
Changed files (4)
exe/saml-kit
@@ -2,4 +2,8 @@
 
 require "saml/kit/cli"
 
+Saml::Kit.configure do |configuration|
+  configuration.registry = Saml::Kit::Cli::YamlRegistry.new(File.join(Dir.home, ".samlkitrc"))
+end
+
 Saml::Kit::Cli::Application.start(ARGV)
lib/saml/kit/cli/metadata.rb
@@ -0,0 +1,18 @@
+module Saml
+  module Kit
+    module Cli
+      class Metadata < Thor
+        desc "register url", "Registers the Metadata from the remote url."
+        def register(url)
+          say registry.register_url(url).to_xml(pretty: true), :green
+        end
+
+        private
+
+        def registry
+          Saml::Kit.registry
+        end
+      end
+    end
+  end
+end
lib/saml/kit/cli/yaml_registry.rb
@@ -0,0 +1,22 @@
+module Saml
+  module Kit
+    module Cli
+      class YamlRegistry < ::Saml::Kit::DefaultRegistry
+        def initialize(path)
+          @items = YAML::Store.new(path)
+        end
+
+        def register(metadata)
+          @items.transaction do
+            @items[metadata.entity_id] = metadata.to_xml
+          end
+          metadata
+        end
+
+        def metadata_for(entity_id)
+          Saml::Kit::Metadata.from(@items[entity_id])
+        end
+      end
+    end
+  end
+end
lib/saml/kit/cli.rb
@@ -1,9 +1,12 @@
 require "saml/kit"
 require "thor"
+require "yaml/store"
 
-require "saml/kit/cli/version"
 require "saml/kit/cli/decode"
 require "saml/kit/cli/generate"
+require "saml/kit/cli/metadata"
+require "saml/kit/cli/version"
+require "saml/kit/cli/yaml_registry"
 
 module Saml
   module Kit
@@ -14,6 +17,9 @@ module Saml
 
         desc "generate SUBCOMMAND ...ARGS", "generate SAML artifacts."
         subcommand "generate", Generate
+
+        desc "metadata SUBCOMMAND ...ARGS", "Work with SAML Metadata."
+        subcommand "metadata", Metadata
       end
     end
   end