class Neb::Client::Request

Attributes

action[R]
block[R]
payload[R]
url[R]

Public Class Methods

new(action, url, payload = {}, block = nil) click to toggle source
# File lib/neb/client/request.rb, line 9
def initialize(action, url, payload = {}, block = nil)
  @action  = action
  @url     = url
  @payload = payload
  @block   = custom_block(block)
end

Public Instance Methods

execute() click to toggle source
# File lib/neb/client/request.rb, line 32
def execute
  Neb.logger.debug(self.to_s)
  if block.present?
    ::RestClient::Request.execute(request_args)
  else
    ::RestClient::Request.execute(request_args, &default_block)
  end
end
request_args() click to toggle source
# File lib/neb/client/request.rb, line 20
def request_args
  args = {
    method:  action,
    url:     url,
    payload: payload.deep_camelize_keys(:lower).to_json,
    headers: { content_type: :json, accept: :json },
    timeout: CONFIG[:timeout]
  }
  args.merge!(block_response: block) if block.present?
  args
end
to_s() click to toggle source
# File lib/neb/client/request.rb, line 16
def to_s
  "#{self.class}{action=#{action}, url=#{url}, payload=#{payload}}"
end

Private Instance Methods

custom_block(block) click to toggle source
# File lib/neb/client/request.rb, line 47
def custom_block(block)
  return nil if block.blank?
  Proc.new do |resp|
    resp.read_body do |chunk|
      block.call(chunk.force_encoding('utf-8'))
    end
  end
end
default_block() click to toggle source
# File lib/neb/client/request.rb, line 43
def default_block
  Proc.new { |resp, _, _| Response.new(resp) }
end