module FREDAPI::Request

Request module to handle all requests to API

Public Instance Methods

delete(path, opts={}) click to toggle source

Perform a delete request

@param path [String] URL path to send request @param opts [Hash] Request parameters @return [Hashie::Mash] Response body

# File lib/fredapi/request.rb, line 21
def delete path, opts={}
  request(:delete, path, opts).body
end
get(path, opts={}) click to toggle source

Perform a get request

@param path [String] URL path to send request @param opts [Hash] Request parameters @return [Hashie::Mash] Response body

# File lib/fredapi/request.rb, line 12
def get path, opts={}
  request(:get, path, opts).body
end
patch(path, opts={}) click to toggle source

Perform a patch request

@param path [String] URL path to send request @param opts [Hash] Request parameters @return [Hashie::Mash] Response body

# File lib/fredapi/request.rb, line 48
def patch path, opts={}
  request(:patch, path, opts).body
end
post(path, opts={}) click to toggle source

Perform a post request

@param path [String] URL path to send request @param opts [Hash] Request parameters @return [Hashie::Mash] Response body

# File lib/fredapi/request.rb, line 30
def post path, opts={}
  request(:post, path, opts).body
end
put(path, opts={}) click to toggle source

Perform a put request

@param path [String] URL path to send request @param opts [Hash] Request parameters @return [Hashie::Mash] Response body

# File lib/fredapi/request.rb, line 39
def put path, opts={}
  request(:put, path, opts).body
end

Private Instance Methods

connection_options(opts) click to toggle source

Sets connection options

@param opts [Hash] hash of opts passed @return [Hash] connection options

# File lib/fredapi/request.rb, line 58
def connection_options opts
  {
    :headers => {
      :user_agent => user_agent
    },
    :force_urlencoded => opts.delete(:force_urlencoded) || false,
    :url => api_endpoint
  }
end
request(method, path, opts={}) click to toggle source

Perform a request

@param method [String] Type of request path @param path [String] URL path to send request @param opts [Hash] Request parameters @return [Hashie::Mash] Response

# File lib/fredapi/request.rb, line 74
def request method, path, opts={}
  conn_options = connection_options opts
  opts['api_key'] = api_key unless opts.has_key? 'api_key'
  opts['file_type'] = file_type unless opts.has_key? 'file_type'

  response = connection(conn_options).send(method) do |request|
    case method
    when :get
      request.url path, opts
    when :delete
      request.url path, opts
    when :patch, :post, :put
      if conn_options[:force_urlencoded]
        request.url path, opts
      else
        request.path = path
        request.body = MultiJson.dump(opts) unless opts.empty?
      end
    end
  end

  response
end