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