Class: Dor::Configuration

Inherits:
Confstruct::Configuration
  • Object
show all
Includes:
ActiveSupport::Callbacks
Defined in:
lib/dor/config.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Configuration

Returns a new instance of Configuration.



15
16
17
18
# File 'lib/dor/config.rb', line 15

def initialize(*args)
  super *args
  run_callbacks(:initialize) {}
end

Instance Method Details

#autoconfigure(url, cert_file = Config.ssl.cert_file, key_file = Config.ssl.key_file, key_pass = Config.ssl.key_pass) ⇒ Object



35
36
37
38
39
# File 'lib/dor/config.rb', line 35

def autoconfigure(url, cert_file = Config.ssl.cert_file, key_file = Config.ssl.key_file, key_pass = Config.ssl.key_pass)
  client = make_rest_client(url, cert_file, key_file, key_pass)
  config = Confstruct::Configuration.symbolize_hash JSON.parse(client.get(accept: 'application/json'))
  configure(config)
end

#configure(*args) ⇒ Object

Call the super method with callbacks and with $VERBOSE temporarily disabled



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/dor/config.rb', line 21

def configure(*args)
  result = self
  temp_verbose = $VERBOSE
  $VERBOSE = nil
  begin
    run_callbacks :configure do
      result = super(*args)
    end
  ensure
    $VERBOSE = temp_verbose
  end
  result
end

#configure_client!(config) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/dor/config.rb', line 120

def configure_client!(config)
  # Do not configure client if URL not specified
  return if config.dor_services&.url.blank?

  params = {
    url: config.dor_services.url
  }
  params[:username] = config.dor_services.user if config.dor_services&.user.present?
  params[:password] = config.dor_services.pass if config.dor_services&.pass.present?

  Dor::Services::Client.configure(params)
end

#default_ssl_cert_storeObject



153
154
155
# File 'lib/dor/config.rb', line 153

def default_ssl_cert_store
  @default_ssl_cert_store ||= RestClient::Request.default_ssl_cert_store
end

#fedora_configObject



136
137
138
139
140
141
142
143
# File 'lib/dor/config.rb', line 136

def fedora_config
  fedora_uri = URI.parse(fedora.url)
  connection_opts = { url: fedora.safeurl, user: fedora_uri.user, password: fedora_uri.password }
  connection_opts[:ssl_client_cert] = OpenSSL::X509::Certificate.new(File.read(ssl.cert_file)) if ssl.cert_file.present?
  connection_opts[:ssl_client_key] = OpenSSL::PKey::RSA.new(File.read(ssl.key_file), ssl.key_pass) if ssl.key_file.present?
  connection_opts[:ssl_cert_store] = default_ssl_cert_store
  connection_opts
end

#init(*args) ⇒ Object

Act like an ActiveFedora.configurator



134
# File 'lib/dor/config.rb', line 134

def init(*args); end

#make_rest_client(url, cert = Config.ssl.cert_file, key = Config.ssl.key_file, pass = Config.ssl.key_pass) ⇒ Object



46
47
48
49
50
51
# File 'lib/dor/config.rb', line 46

def make_rest_client(url, cert = Config.ssl.cert_file, key = Config.ssl.key_file, pass = Config.ssl.key_pass)
  params = {}
  params[:ssl_client_cert] = OpenSSL::X509::Certificate.new(File.read(cert)) if cert
  params[:ssl_client_key]  = OpenSSL::PKey::RSA.new(File.read(key), pass) if key
  RestClient::Resource.new(url, params)
end

#make_solr_connection(add_opts = {}) ⇒ Object



54
55
56
57
58
59
# File 'lib/dor/config.rb', line 54

def make_solr_connection(add_opts = {})
  opts = Dor::Config.solr.opts.merge(add_opts).merge(
    url: Dor::Config.solr.url
  )
  ::RSolr.connect(opts)
end

#predicate_configObject



149
150
151
# File 'lib/dor/config.rb', line 149

def predicate_config
  YAML.load(File.read(File.expand_path('../../config/predicate_mappings.yml', __dir__)))
end

#sanitizeObject



42
43
44
# File 'lib/dor/config.rb', line 42

def sanitize
  dup
end

#solr_configObject



145
146
147
# File 'lib/dor/config.rb', line 145

def solr_config
  { url: solr.url }
end