class Postgrest::HTTP

Constants

METHODS
RESPONSES
USER_AGENT

Attributes

body[R]
headers[R]
http_method[R]
query[R]
request[R]
response[R]
uri[R]

Public Class Methods

new(uri:, query: {}, body: {}, headers: {}, http_method: :get) click to toggle source
# File lib/postgrest/http.rb, line 26
def initialize(uri:, query: {}, body: {}, headers: {}, http_method: :get)
  @uri = uri
  @body = body
  @headers = headers
  @http_method = http_method.to_sym
  @response = nil
  @request = nil
  uri.query = decode_query_params(query)
end

Public Instance Methods

call() click to toggle source
# File lib/postgrest/http.rb, line 42
def call
  raise InvalidHTTPMethod unless valid_http_method?

  @response = Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl?) do |http|
    @request = create_request
    http.request(request)
  end

  RESPONSES[http_method].new(request, response)
end
Also aliased as: execute
execute()
Alias for: call
update_query_params(new_value = {}) click to toggle source
# File lib/postgrest/http.rb, line 36
def update_query_params(new_value = {})
  @uri.query = decode_query_params(new_value)
rescue NoMethodError
  @uri.query
end

Private Instance Methods

add_headers(request) click to toggle source
# File lib/postgrest/http.rb, line 73
def add_headers(request)
  headers.each { |key, value| request[key] = value }
  request['User-Agent'] = USER_AGENT

  nil
end
create_request() click to toggle source
# File lib/postgrest/http.rb, line 60
def create_request
  request = METHODS[http_method].new(uri)
  request.body = body.to_json
  request.content_type = 'application/json'
  add_headers(request)

  request
end
decode_query_params(query_params) click to toggle source
# File lib/postgrest/http.rb, line 56
def decode_query_params(query_params)
  CGI.unescape(URI.encode_www_form(query_params))
end
use_ssl?() click to toggle source
# File lib/postgrest/http.rb, line 69
def use_ssl?
  uri.scheme == 'https'
end
valid_http_method?() click to toggle source
# File lib/postgrest/http.rb, line 80
def valid_http_method?
  METHODS.keys.include?(http_method)
end