Sha256: a09b7ef7eed27e664ff5dd2cf2de86663aaef766ba0ec8d271325af71d719350

Contents?: true

Size: 1.21 KB

Versions: 9

Compression:

Stored size: 1.21 KB

Contents

require 'httparty'
require 'json'

class Messenger::Notifo

  def self.valid_url?(url)
    !!url.match(/^notifo:\/\/.+$/)
  end

  # URL format:
  #     notifo://username
  #
  # Options:
  #     :notifo_api_username => The service's API username
  #     :notifo_api_secret => The service's API secret
  #     :notifo_title => The notificaiton title
  #     :notifo_url => Open this URL
  def self.deliver(url, message, options={})
    raise Messenger::URLError, "The URL provided is invalid" unless valid_url?(url)
    username = matcher(url)
    response = HTTParty.post("https://api.notifo.com/v1/send_notification",
                                      :body => { :to => username, :msg => message, :title => options[:notifo_title], :uri => options[:notifo_url] },
                                      :basic_auth => {:username => options[:notifo_api_username], :password => options[:notifo_api_secret]})
    Messenger::Result.new(success?(response), response)
  end

  def self.obfuscate(url)
    raise Messenger::URLError, "The URL provided is invalid" unless valid_url?(url)
    url
  end


private

  def self.matcher(url)
    url.match(/^notifo:\/\/(.+)/)[1]
  end

  def self.success?(response)
    response.code == 200
  end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
messenger-0.5.0 lib/messenger/notifo.rb
messenger-0.4.4 lib/messenger/notifo.rb
messenger-0.4.3 lib/messenger/notifo.rb
messenger-0.4.2 lib/messenger/notifo.rb
messenger-0.4.1 lib/messenger/notifo.rb
messenger-0.4.0 lib/messenger/notifo.rb
messenger-0.3.6 lib/messenger/notifo.rb
messenger-0.3.5 lib/messenger/notifo.rb
messenger-0.3.4 lib/messenger/notifo.rb