class Object

Public Instance Methods

create_http_request(http_method, path, *arguments) click to toggle source
# File lib/quickbooks/util/multipart.rb, line 7
def create_http_request(http_method, path, *arguments)
  http_method = http_method.to_sym

  if [:post, :put].include?(http_method)
    data = arguments.shift
  end

  # if the base site contains a path, add it now
  uri = URI.parse(site)
  path = uri.path + path if uri.path

  headers = arguments.first.is_a?(Hash) ? arguments.shift : {}

  case http_method
  when :post
    request = Net::HTTP::Post.new(path,headers)
    request["Content-Length"] = '0' # Default to 0
  when :put
    request = Net::HTTP::Put.new(path,headers)
    request["Content-Length"] = '0' # Default to 0
  when :get
    request = Net::HTTP::Get.new(path,headers)
  when :delete
    request =  Net::HTTP::Delete.new(path,headers)

  when :head
    request = Net::HTTP::Head.new(path,headers)
  when :multipart_post
    request = Net::HTTP::Post::Multipart.new(path, headers)
  else
    raise ArgumentError, "Don't know how to handle http_method: :#{http_method.to_s}"
  end

  if data.is_a?(Hash)
    form_data = {}
    data.each {|k,v| form_data[k.to_s] = v if !v.nil?}
    request.set_form_data(form_data)
  elsif data
    if data.respond_to?(:read)
      request.body_stream = data
      if data.respond_to?(:length)
        request["Content-Length"] = data.length.to_s
      elsif data.respond_to?(:stat) && data.stat.respond_to?(:size)
        request["Content-Length"] = data.stat.size.to_s
      else
        raise ArgumentError, "Don't know how to send a body_stream that doesn't respond to .length or .stat.size"
      end
    else
      request.body = data.to_s
      request["Content-Length"] = request.body.length.to_s
    end
  end

  request

end
multipart_post(*args) click to toggle source
# File lib/quickbooks/util/multipart.rb, line 71
def multipart_post(*args)
 request(:multipart_post, *args)
end
post_with_multipart(*args) click to toggle source
# File lib/quickbooks/util/multipart.rb, line 67
def post_with_multipart(*args)
  multipart_post *args
end