class Amber::Switch

Public Instance Methods

query(request) click to toggle source
# File lib/amber/switch.rb, line 2
def query(request)
  if request.is_a? Amber::Switch::Request
    result = nil
    case request
    when Amber::Switch::Request::Get
      result = self.request(request.url, request.method, request.header)
    when Amber::Switch::Request::Post
      body = request.content.is_a?(Amber::Switch::Content) ? request.content.body : nil
      result = self.request(request.url, request.method, request.header, body)
    end
    if result
      response = Amber::Switch::Response.new
      response.status = result["status"]
      response.header = result["header"]
      response_content_type = result["content_type"].is_a?(Array) ? result["content_type"].first : result["content_type"].to_s
      case response_content_type
      when Amber::Switch::Content::JSON_CONTENT
        response.content = Amber::Switch::Content::Json.new
        response.content.body = result["body"]
      else
        response.content = Amber::Switch::Content::Text.new
        response.content.body = result["body"]
      end
      return response
    end
  end

  p "#{request} should be an instance of Amber::Switch::Request"
  return
end
request(url, method, header = {}, body = nil) click to toggle source
# File lib/amber/switch.rb, line 33
def request(url, method, header = {}, body = nil)
  request = nil
  uri = URI(url)
  response = {
    "status" => false,
    "code" => 400,
    "content_type" => nil,
    "header" => {},
    "body" => nil
  }
  case method
  when Amber::Switch::Request::GET_METHOD
    request = Net::HTTP::Get.new uri
  when Amber::Switch::Request::POST_METHOD
    request = Net::HTTP::Post.new uri
  end
  if request
    header.each do |key, value|
      request[key] = value
    end
    request.body = body if body
    result = Net::HTTP.start(uri.hostname, uri.port) do |http|
      http.request(request)
    end

    case result
    when Net::HTTPSuccess
      response["status"] = true
      response["code"] = result.code.to_i
      response["content_type"] = result.content_type
      response["header"] = result.to_hash
      response["body"] = result.body
    end
  end
  response
end