Sha256: a9965b70b8b15bb572c844396c31b3fa69ae034053a9e19c296498af51812b4d

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

#
# Copyright 2013-2017 Conjur Inc
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
require 'conjur/cast'

module Conjur
  module BuildObject
    def self.included base
      base.module_eval do
        extend Cast
        extend ClassMethods
      end
    end

    module ClassMethods
      def build_object id, credentials, default_class:
        id = cast_to_id(id)
        class_name = id.kind.classify.to_sym
        find_class(class_name, default_class)
          .new(id, credentials)
      end

      def find_class class_name, default_class
        cls = if Conjur.constants.member?(class_name)
          Conjur.const_get(class_name)
        else
          default_class
        end
        cls < BaseObject ? cls : default_class
      end
    end

    def build_object id, default_class: Resource
      self.class.build_object id, credentials, default_class: default_class
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
conjur-api-5.3.0 lib/conjur/build_object.rb
conjur-api-5.2.1 lib/conjur/build_object.rb