Sha256: 5190d7d04088ef876a0fcac2b0c8a69eb4b784994cc25f5b67304075c096fae9

Contents?: true

Size: 1.81 KB

Versions: 3

Compression:

Stored size: 1.81 KB

Contents

module Cul
  module Fedora
    class Connector
      attr_reader :config
      
      def self.parse(environments)
        connectors = {}
        
        environments.each_pair do |environment, config|
          connectors[environment] = Connector.new(config)
        end 
        
        connectors
      end
      
      def initialize(config)
        @config = config
      end
      
      def rest_interface()
        http = Net::HTTP.start(config_for(:rest, :host),config_for(:rest, :port))
        yield http
        http.finish()
      end
      
      def rest_location()
        url_builder(:rest, "")
      end
      
      def protocol_for(interface)
        config_for(interface.to_s,"ssl") == true ? "https" : "http"
      end
      
      def config_for(interface, value)
        (@config[interface.to_s] && @config[interface.to_s][value.to_s]) || @config[value.to_s]
      end
      
      def url_builder(interface, url)
        "#{protocol_for(interface)}://#{config_for(interface,:host)}:#{config_for(interface,:port)}/#{url}"
      end
      
      def apim_interface()
        wsdl = url_builder(:admin, "fedora/wsdl?api=API-M")
        driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
        
        if config_for(:admin, :ssl_verify)
          raise "SSL verification not currently supported. Please specify ssl_verify: false"
        else
          driver.options['protocol.http.ssl_config.verify_mode'] = OpenSSL::SSL::VERIFY_NONE
        end
        
        driver.options["protocol.http.basic_auth"] << [url_builder(:admin,"fedora/services/management"), config_for(:admin,:user), config_for(:admin,:password)]
        
        driver
      end
      
      def apim_call(method, *args)
        options = args.extract_options!
        apim_interface.method(method).call(options)
      end
      
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cul-fedora-arm-0.6.0 lib/cul/fedora/connector.rb
cul-fedora-arm-0.5.2 lib/cul/fedora/connector.rb
cul-fedora-arm-0.5.1 lib/cul/fedora/connector.rb