Sha256: bd5b3a2fb197acf55f4ea297931e7e0758737aa719dd20b42b0315181982ff8d

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 KB

Contents

require 'base64'

module Messenger

  def self.valid_url?(url)
    service_handler = handler(url)
    service_handler.valid_url?(url)
  rescue ProtocolError
    false
  end

  def self.deliver(url, message, options={})
    service_handler = handler(url)
    if defined?(SystemTimer) && SystemTimer.respond_to?(:timeout_after)
      SystemTimer.timeout_after(options[:timeout] || 15) do
        service_handler.deliver(url, message, options)
      end
    else
      Timeout.timeout(options[:timeout] || 15) do
        service_handler.deliver(url, message, options)
      end
    end
  end

  def self.obfuscate(url)
    service_handler = handler(url)
    service_handler.obfuscate(url)
  end


  def self.protocol(url)
    # TODO: More services
    #   sms://1231231234
    #   twitter://username
    #   aim://username
    case url
    when /^http/ then      :http
    when /^campfire/ then  :campfire
    when /^jabber/ then    :jabber
    when /^notifo/ then    :notifo
    when /^mailto|@+/ then :email
    end
  end

  def self.handler(url)
    case protocol(url)
    when :email then    Messenger::Email
    when :http then     Messenger::Web
    when :campfire then Messenger::Campfire
    when :jabber then   Messenger::Jabber
    when :notifo then   Messenger::Notifo
    else
      raise Messenger::ProtocolError, "Malformed service URL: #{url}. Either this syntax is wrong or this service type is not yet implemented."
    end
  end

  def self.basic_auth(user, password)
    encoded_credentials = ["#{user}:#{password}"].pack("m*").gsub(/\n/, '')
    {"HTTP_AUTHORIZATION" => "Basic #{encoded_credentials}"}
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
messenger-0.5.0 lib/messenger/messenger.rb
messenger-0.4.4 lib/messenger/messenger.rb
messenger-0.4.3 lib/messenger/messenger.rb
messenger-0.4.2 lib/messenger/messenger.rb