Sha256: 73a1c961152d9116c370629cfb24c549a18ec8377fae59a326844410d6bf37b0
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
require 'json' require 'curb' class Render::Component::Client def obtain_component(component, attributes) execute_request(component, attributes) end private def execute_request(component, attributes) url = "#{default_endpoint}/#{component}" response = Curl.get(url) do |curl| curl.headers['X-Content'] = apply_default_attributes(attributes) curl.connect_timeout = 3 end code = response.status.to_i return response.body_str if code == 200 raise StandardError.new, "Request Error. URL: #{url}, Response Status Code: #{code}" end def apply_default_attributes(attributes) attributes = JSON.parse(attributes) unless attributes.is_a?(Hash) attributes['base_path'] = default_base_path JSON.generate(attributes) end def default_base_path base_path = Render::Component.configuration.base_path raise Render::Component::Error.new, configuration_error_message(__method__, 'base_path') if base_path.nil? base_path end def default_endpoint endpoint = Render::Component.configuration.endpoint raise Render::Component::Error.new, configuration_error_message(__method__, 'endpoint') if endpoint.nil? endpoint end def configuration_error_message(method, attribute) "To use `#{method}` you must add default #{attribute}. e.g. Render::Component.configuration.#{attribute}=" end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
render-component-0.4.0 | lib/render/component/client.rb |