class FastlyNsq::Http

Adapter class for HTTP requests to NSQD

@example

uri = URI.join(nsqd_url, '/info')
client = FastlyNsq::Http.new(uri: uri)
client.use_ssl

@see FastlyNsq::Http::Nsqd @see FastlyNsq::Http::Nsqlookupd

Attributes

cert_filename[R]
key_filename[R]
uri[R]

Public Class Methods

new(uri:, cert_filename: ENV['NSQ_SSL_CERTIFICATE'], key_filename: ENV['NSQ_SSL_KEY']) click to toggle source
# File lib/fastly_nsq/http.rb, line 18
def initialize(uri:, cert_filename: ENV['NSQ_SSL_CERTIFICATE'], key_filename: ENV['NSQ_SSL_KEY'])
  @uri = uri.is_a?(URI) ? uri : URI.parse(uri)
  @cert_filename = cert_filename
  @key_filename = key_filename
end

Public Instance Methods

get(data = nil) click to toggle source
# File lib/fastly_nsq/http.rb, line 24
def get(data = nil)
  if data
    params = URI.encode_www_form(data)
    uri.query = params
  end
  req = Net::HTTP::Get.new(uri.request_uri)
  http.request(req)
end
post(data, body = nil) click to toggle source
# File lib/fastly_nsq/http.rb, line 33
def post(data, body = nil)
  params = URI.encode_www_form(data)
  uri.query = params
  req = Net::HTTP::Post.new(uri.request_uri)
  http.request(req, body)
end
use_ssl() click to toggle source
# File lib/fastly_nsq/http.rb, line 40
def use_ssl
  return unless can_use_ssl?
  http.use_ssl = true
  http.cert = cert
  http.key = key
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end

Private Instance Methods

can_use_ssl?() click to toggle source
# File lib/fastly_nsq/http.rb, line 56
def can_use_ssl?
  !(cert_filename.nil? || key_filename.nil?)
end
cert() click to toggle source
# File lib/fastly_nsq/http.rb, line 60
def cert
  @cert ||= OpenSSL::X509::Certificate.new(File.read(cert_filename))
end
http() click to toggle source
# File lib/fastly_nsq/http.rb, line 52
def http
  @http ||= Net::HTTP.new(uri.host, uri.port)
end
key() click to toggle source
# File lib/fastly_nsq/http.rb, line 64
def key
  @key ||= OpenSSL::PKey::RSA.new(File.read(key_filename))
end