class GenesisCollector::SimpleHTTP

Public Class Methods

new(host, headers: {}, timeout: 10) click to toggle source
# File lib/genesis_collector/simple_http.rb, line 8
def initialize(host, headers: {}, timeout: 10)
  @host = host
  @headers = {'User-Agent' => GenesisCollector::USER_AGENT}.merge! headers
  @timeout = timeout
end

Public Instance Methods

patch(endpoint, payload = nil, headers = {}) click to toggle source
# File lib/genesis_collector/simple_http.rb, line 18
def patch(endpoint, payload = nil, headers = {})
  verb(endpoint, payload, headers) { |uri| Net::HTTP::Patch.new(uri) }
end
post(endpoint, payload = nil, headers = {}) click to toggle source
# File lib/genesis_collector/simple_http.rb, line 14
def post(endpoint, payload = nil, headers = {})
  verb(endpoint, payload, headers) { |uri| Net::HTTP::Post.new(uri) }
end

Private Instance Methods

add_headers(request, headers) click to toggle source
# File lib/genesis_collector/simple_http.rb, line 35
def add_headers(request, headers)
  headers.merge!(@headers)
  headers.each do |k, v|
    request[k] = v
  end
  request
end
verb(endpoint, payload, headers) { |request_uri| ... } click to toggle source
# File lib/genesis_collector/simple_http.rb, line 24
def verb(endpoint, payload, headers)
  uri = URI.parse("#{@host}#{endpoint}")
  http = Net::HTTP.new(uri.host, uri.port)
  http.open_timeout = http.read_timeout = http.ssl_timeout = @timeout
  http.use_ssl = true if @host.start_with?('https')
  request = yield uri.request_uri
  request.body = JSON.dump(payload) unless payload.nil?
  request = add_headers(request, headers)
  http.request(request)
end