lib/frenetic/connection.rb in frenetic-1.0.0.alpha.1 vs lib/frenetic/connection.rb in frenetic-1.0.0
- old
+ new
@@ -27,19 +27,12 @@
@errors.empty?
end
def process_config(raw_cfg)
@config = {}.merge(raw_cfg.to_hash)
- @config[:url] = Addressable::URI.parse(raw_cfg[:url])
- cfgs = @config.inject({builder:{}, conn:{}}) do |conf, (k,v)|
- if ConnectionConfigKeys.include?(k)
- conf[:conn][k] = v
- else
- conf[:builder][k] = v
- end
- conf
- end
+ @config[:url] = process_url_config(raw_cfg)
+ cfgs = process_config_options(@config)
[
@builder_config = cfgs[:builder],
@connection_config = cfgs[:conn]
]
end
@@ -64,12 +57,29 @@
builder.adapter(builder_config[:adapter])
end
private
+ def process_url_config(raw_cfg)
+ url = Addressable::URI.parse(raw_cfg[:url])
+ return if !url
+ url.port = url.inferred_port if url.port.nil?
+ url
+ end
+
+ def process_config_options(options)
+ options.each_with_object(builder:{}, conn:{}) do |(k, v), conf|
+ if ConnectionConfigKeys.include?(k)
+ conf[:conn][k] = v
+ else
+ conf[:builder][k] = v
+ end
+ end
+ end
+
def validate_configuration!
- raise ConfigError.new(self) if !valid?
+ fail ConfigError.new(self) if !valid?
end
def use_basic_auth(builder)
builder.request :basic_auth, builder_config[:username], builder_config[:password]
end
@@ -81,15 +91,13 @@
def use_rack_cache(builder)
require_lib('rack-cache', 'Frenetic Rack::Cache caching strategy')
builder.use(
FaradayMiddleware::RackCompatible,
Rack::Cache::Context,
- {
- metastore: "file:tmp/rack/meta/#{cache_key}",
- entitystore: "file:tmp/rack/body/#{cache_key}",
- ignore_headers: %w{Authorization Set-Cookie X-Content-Digest}
- }
+ metastore: "file:tmp/rack/meta/#{cache_key}",
+ entitystore: "file:tmp/rack/body/#{cache_key}",
+ ignore_headers: %w(Authorization Set-Cookie X-Content-Digest)
)
end
def use_rails_cache(builder)
require_lib 'faraday-http-cache', 'Frenetic Rails caching strategy'
@@ -102,9 +110,9 @@
def require_lib(lib = nil, context = nil)
lib ? require(lib) : yield
rescue NameError, LoadError => err
context ||= self
- raise ConfigError, "Could not load required `#{lib}` dependency for #{context}: #{err.message}"
+ raise MissingDependency.new(lib, context, err)
end
end
-end
\ No newline at end of file
+end