module Fcoin::Request

Public Instance Methods

delete(path, auth=true, payload={}) click to toggle source

Perform an HTTP DELETE request

# File lib/fcoin/request.rb, line 23
def delete(path, auth=true, payload={})
  request(:delete, path, auth, payload)
end
get(path, auth=true, payload={}) click to toggle source

Perform an HTTP GET request

# File lib/fcoin/request.rb, line 8
def get(path, auth=true, payload={})
  request(:get, path, auth, payload)
end
post(path, auth=true, payload={}) click to toggle source

Perform an HTTP POST request

# File lib/fcoin/request.rb, line 13
def post(path, auth=true, payload={})
  request(:post, path, auth, payload)
end
put(path, auth=true, payload={}) click to toggle source

Perform an HTTP PUT request

# File lib/fcoin/request.rb, line 18
def put(path, auth=true, payload={})
  request(:put, path, auth, payload)
end

Private Instance Methods

formatted(body) click to toggle source

change the output format of the body

@param body [Hash] @return [Hash or JSON]

# File lib/fcoin/request.rb, line 62
def formatted(body)
  case format_type
  when :json
    body.to_json
  when :hash
    body
  else
    raise "format_type is #{format_type}. format_type must be included in [:json, :hash]."
  end
end
request(http_method, path, auth, payload) click to toggle source

Perform an HTTP request

# File lib/fcoin/request.rb, line 30
def request(http_method, path, auth, payload)
  response = connection.send(http_method) do |request|
    required = {
      http_method: http_method,
      path:        path,
      payload:     payload,
      endpoint:    endpoint,
      api_key:     api_key,
      secret_key:  secret_key
    }
    
    if auth
      auth = Fcoin::Authorization.new(required)
      request.headers.merge!(auth.original_headers)
    end

    case http_method
    when :get, :delete
      request.url(path, payload)
    when :post, :put
      request.path = path
      request.body = payload unless payload.empty?
    end
  end

  return formatted(response.body)
end