class Bluetail

Public Class Methods

new(oauth_settings = {}, log_file = STDOUT) click to toggle source
# File lib/bluetail.rb, line 8
def initialize(oauth_settings = {}, log_file = STDOUT)
  @oauth_settings = oauth_settings
  @logger = Logger.new(log_file)
end

Public Instance Methods

tweet(status) click to toggle source
# File lib/bluetail.rb, line 13
def tweet(status)
  raise RuntimeError.new("Status too long") if status.length > 140

  header  = SimpleOAuth::Header.new("POST", @@url, {status: status}, @oauth_settings)
  body    = URI.encode("status=#{status}")
  uri     = URI(@@url)
  request = create_request_for(uri.path, header, body)

  Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
    response = http.request request

    if response.code.to_s == "200"
      @logger.info("Success")
    else
      @logger.error("#{response.code} - #{response.body}")
    end
  end
end

Private Instance Methods

create_request_for(path, header, body) click to toggle source
# File lib/bluetail.rb, line 33
def create_request_for(path, header, body)

  request = Net::HTTP::Post.new(path)  

  request.body = body
  request["Accept"]         = "*/*"
  request["Connection"]     = "close"
  request["User-Agent"]     = "Bluetail Notifier 1.0"
  request["Content-Type"]   = "application/x-www-form-urlencoded"
  request["Authorization"]  = header.to_s
  request["Content-Length"] = body.length
  request["Host"]           = "api.twitter.com"
  request
end