class Hknife::Request

Public Class Methods

new() click to toggle source
# File lib/hknife.rb, line 12
def initialize
  @headers = {}
  @response = nil
  @requestor = nil
  @request = nil
  @http_client = nil
end

Public Instance Methods

async(&block) click to toggle source
# File lib/hknife.rb, line 93
def async(&block)
  @async_thread = Thread.new do
    @response = @requestor.call(@request)
    block.call @response if block_given?
  end
end
delete(uri) click to toggle source
# File lib/hknife.rb, line 36
def delete(uri)
  uriObj = URI.parse(uri)
  @http_client = Net::HTTP.new(uriObj.host, uriObj.port)
  @http_client.use_ssl = uriObj.scheme == 'https'
  @request = Net::HTTP::Delete.new(uriObj.path)
  @requestor = lambda do |request| 
    res = @http_client.request(request) 
    case res['Content-Type']
    when /application\/json/ then
      res.body = JSON.parse(res.body)
    end
    res
  end
  self
end
get(uri) click to toggle source
# File lib/hknife.rb, line 20
def get(uri)
  uriObj = URI.parse(uri)
  @http_client = Net::HTTP.new(uriObj.host, uriObj.port)
  @http_client.use_ssl = uriObj.scheme == 'https'
  @request = Net::HTTP::Get.new(uriObj.path)
  @requestor = lambda do |request| 
    res = @http_client.request(request) 
    case res['Content-Type']
    when /application\/json/ then
      res.body = JSON.parse(res.body)
    end
    res
  end
  self
end
header(hsh) click to toggle source
# File lib/hknife.rb, line 85
def header(hsh)
  @headers = {} if @headers.nil?
  hsh.each do |key, val|
    @headers[key] = val
  end
  self
end
post_form(uri, data) click to toggle source
# File lib/hknife.rb, line 68
def post_form(uri, data)      
  uriObj = URI.parse(uri)
  @http_client = Net::HTTP.new(uriObj.host, uriObj.port)
  @http_client.use_ssl = uriObj.scheme == 'https'
  @request = Net::HTTP::Post.new(uriObj.path)
  @requestor = lambda do |request| 
    res = @http_client.request(@request, URI.encode_www_form(data))

    case res['Content-Type']
    when /application\/json/ then
      res.body = JSON.parse(res.body)
    end
    res
    end        
  self
end
put(uri, data) click to toggle source
# File lib/hknife.rb, line 52
def put(uri, data)
  uriObj = URI.parse(uri)
  @http_client = Net::HTTP.new(uriObj.host, uriObj.port)
  @http_client.use_ssl = uriObj.scheme == 'https'
  @request = Net::HTTP::Put.new(uriObj.path)
  @requestor = lambda do |request| 
    res = @http_client.request(request) 
    case res['Content-Type']
    when /application\/json/ then
      res.body = JSON.parse(res.body)
    end
    res
  end
  self
end
request() click to toggle source
# File lib/hknife.rb, line 104
def request
  @request
end
response() click to toggle source
# File lib/hknife.rb, line 108
def response
  @headers.each_pair {|k, v| @request.add_field(k, v)}
  @response = @requestor.call(@request)
  @response
end
wait() click to toggle source
# File lib/hknife.rb, line 100
def wait
  @async_thread.join
end