class Sheetsu::Request
Public Class Methods
new(url, basic_auth)
click to toggle source
# File lib/sheetsu/request.rb, line 4 def initialize(url, basic_auth) @url = url @basic_auth = basic_auth end
Public Instance Methods
call(method, body=nil)
click to toggle source
# File lib/sheetsu/request.rb, line 9 def call(method, body=nil) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = request(method) request = add_headers(request) request = add_basic_auth(request) request = add_body(request, body) http.request(request) end
Private Instance Methods
add_basic_auth(request)
click to toggle source
# File lib/sheetsu/request.rb, line 39 def add_basic_auth(request) if @basic_auth.keys.any? request.basic_auth(CGI.unescape(@basic_auth[:api_key]), CGI.unescape(@basic_auth[:api_secret])) end request end
add_body(request, body)
click to toggle source
# File lib/sheetsu/request.rb, line 46 def add_body(request, body) if body request.body = body.to_json end request end
add_column_value_to_url(options)
click to toggle source
# File lib/sheetsu/request.rb, line 73 def add_column_value_to_url(options) if options[:column] && options[:value] @url += Sheetsu::Util.encoded_column(options) options.delete(:column) options.delete(:value) end end
add_headers(request)
click to toggle source
# File lib/sheetsu/request.rb, line 34 def add_headers(request) Sheetsu::Util.default_headers.each_pair { |k,v| request[k] = v } request end
add_options_to_url(options)
click to toggle source
# File lib/sheetsu/request.rb, line 67 def add_options_to_url(options) add_sheet_to_url(options) add_column_value_to_url(options) add_query_params_to_url(options) end
add_query_params_to_url(options)
click to toggle source
# File lib/sheetsu/request.rb, line 90 def add_query_params_to_url(options) h = Hash.new.tap do |hash| hash[:limit] = options[:limit] if options[:limit] hash[:offset] = options[:offset] if options[:offset] if options[:search] hash.merge!(options[:search]) @url += '/search' end end if h.keys.any? @url = Sheetsu::Util.append_query_string_to_url(@url, h) end end
add_sheet_to_url(options)
click to toggle source
# File lib/sheetsu/request.rb, line 82 def add_sheet_to_url(options) if options[:sheet] @url += ['/sheets/', CGI::escape(options[:sheet]).to_s].join('') options.delete(:sheet) end end
http_klass(method)
click to toggle source
# File lib/sheetsu/request.rb, line 53 def http_klass(method) case method when :get then Net::HTTP::Get when :post then Net::HTTP::Post when :put then Net::HTTP::Put when :patch then Net::HTTP::Patch when :delete then Net::HTTP::Delete end end
parse_response(response)
click to toggle source
# File lib/sheetsu/request.rb, line 63 def parse_response(response) Sheetsu::Util.parse_response(response) end
request(method)
click to toggle source
# File lib/sheetsu/request.rb, line 27 def request(method) request = http_klass(method).new(uri.request_uri) add_headers(request) request end
uri()
click to toggle source
# File lib/sheetsu/request.rb, line 23 def uri @uri ||= URI.parse(@url) end