class Gemometer::Notifiers::Base

Attributes

gems[R]
key[R]
url[R]
username[R]

Public Class Methods

mandatory_options() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 24
def self.mandatory_options
  raise NotImplementedError
end
new(opts) click to toggle source
# File lib/gemometer/notifiers/base.rb, line 11
def initialize(opts)
  @gems     = opts[:gems]
  @url      = opts[:url]
  @key      = opts[:key]
  @username = opts[:username]
end

Public Instance Methods

notify() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 18
def notify
  return false if gems.empty?
  response = make_request
  %w(204 200).include?(response.code) || raise(Gemometer::NotifyError.new("#{response.code}: #{response.message}"))
end

Private Instance Methods

data() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 65
def data
  raise NotImplementedError
end
http() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 53
def http
  @http ||= begin
    _http = Net::HTTP.new(uri.host, uri.port)
    _http.use_ssl = (uri.scheme == "https")
    _http
  end
end
json?() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 69
def json?
  true
end
make_request() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 30
def make_request
  setup_auth
  setup_data
  http.request(request)
end
request() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 61
def request
  @request ||= Net::HTTP::Post.new(uri)
end
require_auth?() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 73
def require_auth?
  false
end
setup_auth() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 36
def setup_auth
  request.basic_auth(username, key) if require_auth?
end
setup_data() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 40
def setup_data
  if json?
    request.content_type = 'application/json'
    request.body = JSON.generate(data)
  else
    request.set_form_data(data)
  end
end
uri() click to toggle source
# File lib/gemometer/notifiers/base.rb, line 49
def uri
  @uri ||= URI(url)
end