class ShoutboxClient

Constants

VALID_STATUS

Public Class Methods

configuration() click to toggle source
# File lib/shoutbox_client.rb, line 14
def self.configuration
  @configuration ||= Shoutbox::Configuration.new
end
default_headers( request ) click to toggle source
# File lib/shoutbox_client.rb, line 55
def self.default_headers( request )
  request['User-Agent']             = 'Ruby shoutbox-client'
  request['Content-Type']           = 'application/json'
  request['Accept']                 = 'application/json'
  request['X-Shoutbox-Auth-Token']  = configuration.auth_token
end
delete_status( options ) click to toggle source
# File lib/shoutbox_client.rb, line 45
def self.delete_status( options )
  response = Net::HTTP.Proxy(configuration.proxy_host, configuration.proxy_port).start(self.host, self.port) do |http|
    req = Net::HTTP::Delete.new( request_url(options) )
    req.body = { :name => options[:name], :group => (options[:group] || configuration.default_group) }.to_json
    default_headers(req)
    http.request(req)
  end
  response.body == "OK"
end
host() click to toggle source
# File lib/shoutbox_client.rb, line 66
def self.host
  URI.parse(configuration.host).host
end
port() click to toggle source
# File lib/shoutbox_client.rb, line 70
def self.port
  URI.parse(configuration.host).port
end
request_url( options ) click to toggle source
# File lib/shoutbox_client.rb, line 62
def self.request_url( options )
  '/status'
end
shout( options ) click to toggle source
# File lib/shoutbox_client.rb, line 18
def self.shout( options )
  if valid_status?( options[:status] )
    begin
      VALID_STATUS[options[:status].to_s] == :update ? update_status( options ) : delete_status( options ) 
    rescue Errno::ECONNREFUSED 
      false
    end
  else
    false
  end
end
update_status( options ) click to toggle source
# File lib/shoutbox_client.rb, line 30
def self.update_status( options )
  response = Net::HTTP.Proxy(configuration.proxy_host, configuration.proxy_port).start(self.host, self.port) do |http|
    req = Net::HTTP::Put.new( request_url(options) )
    default_headers(req)
    body_data = { :name => options[:name], :group => (options[:group] || configuration.default_group), :status => options[:status].to_s }
    body_data[:message]      = options[:message]      if options[:message]
    body_data[:expires_in]   = options[:expires_in]   if options[:expires_in]
    body_data[:display_name] = options[:display_name] if options[:display_name]
    raise ArgumentError if (options[:status] == :red or options[:status] == :yellow) and body_data[:message].to_s.empty?
    req.body = body_data.to_json
    http.request(req)
  end
  response.body == "OK"
end
valid_status?( status ) click to toggle source
# File lib/shoutbox_client.rb, line 74
def self.valid_status?( status )
  VALID_STATUS.keys.include?( status.to_s )
end