class Splitwise::Request

Attributes

uri[RW]

Public Class Methods

new() click to toggle source
# File lib/splitwise/client.rb, line 8
def initialize
  @uri = Splitwise::BASE_URL+ "/" + Splitwise::API_VERSION + "/"
  @accessor_token = Splitwise.access_token
end

Public Instance Methods

fetch(params) click to toggle source
# File lib/splitwise/client.rb, line 13
def fetch(params)
  url = get_path(params)
  if @accessor_token.nil?
    url = URI.parse(url)
    response = request(:get, url)
  else
    response = request(:get, url)
  end
  parse_response(response)
  response.body
end
get_path(params) click to toggle source
# File lib/splitwise/client.rb, line 32
def get_path(params)
  url = @uri + params
end
parse_response(response) click to toggle source
# File lib/splitwise/client.rb, line 60
def parse_response(response)
  response_code = response.code.to_i
  if valid_response_code?(response_code)
    begin
      JSON.parse(response.body)
    rescue JSON::ParserError => e
      raise Splitwise::InvalidJSONResponse(response.body)
    end
  else
    error_class = Splitwise::Error.codes[response_code] || Splitwise::UnknownError
    raise error_class.new(response.body, response_code)
  end
end
request(req_method, uri, post_data=nil) click to toggle source
# File lib/splitwise/client.rb, line 36
def request(req_method, uri, post_data=nil)
  if @accessor_token.nil?
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = (uri.scheme == "https")
    if http.use_ssl?
      http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    else
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    end
    if req_method == :get
      request = Net::HTTP::Get.new(uri)
    end
    response = http.request(request)
  else
    if req_method == :get
      response = @accessor_token.get(uri)
    else
      header = {'Content-Type' => 'text/json'}
      response = @accessor_token.post(uri, post_data, header)
    end
  end
  response
end
update(params, data) click to toggle source
# File lib/splitwise/client.rb, line 25
def update(params, data)
  url = get_path(params)
  response = request(:post, url, data)
  parse_response(response)
  response.body
end
valid_response_code?(code) click to toggle source
# File lib/splitwise/client.rb, line 74
def valid_response_code?(code)
  [200, 201].include?(code)
end