prowly

Yet another Ruby interface to Prowl with command line utility

Installation

gem install prowly

Usage as a Gem

Sending a notification via prowly gem

Prowly.notify do |n| # :notify is an alias of :add n.apikey = “apikey” or n.apikeys = [“apikey_1”, “apikey_2”, “apikey_n”] n.priority = Prowly::Notification::Priority::MODERATE n.application = “Prowly” n.event = “Notification” n.description = “Your server is under attack!!!” n.url = “www.myserver.com” end notification = Prowly::Notification.new(:apikey => “apikey”, :application => “Prowly”, :description => “Testing…”) notification = Prowly::Notification.new(:apikeys => [“apikey_1”, “apikey_2”, “apikey_n”], :application => “Prowly”, :description => “Testing…”) result = Prowly.notify(notification)

Obtaining a user’s API key with the prowly gem is a three step process:

  • provider gets a token with their provider key via the retrieve_token call

  • user approves the request at a special web URL (in their browser)

  • provider gets user’s API key with their provider key and the token via retrieve_apikey

This is somewhat similar to the OAuth scheme.

# obtain a token first with your provider key first
provider_key = "2b33d3f3f8522aaed4b2fc44382f1519791db6a2"
token_result = Prowly.retrieve_token(provider_key)
if token_result.succeeded?
  # if the call succeeded, the user will need to approve the request in their browser
  puts "go to this #{token_result.url} to approve this request"
  puts "then press <ENTER> to continue "
  dummy = STDIN.gets

  apikey_result = Prowly.retrieve_apikey(options[:provider], token_result.token)

  if apikey_result.succeeded?
    puts "The user apikey is #{apikey_result.apikey}"
  end
end

Usage in the command line

$prowly -h # help $prowly -k one_apikey -a “the application” -e “the event” -d “the description” -p NORMAL $prowly -k key_1,key_2,key_n -a “the application” -e “the event” Options: -k, –api-key APIKEY Prowl API Key -d, –description DESCRIPTION Description -e, –event EVENT Event -p, –priority PRIORITY VERY_LOW, MODERATE, NORMAL (default), HIGH, EMERGENCY -u, –url URL for redirect (v1.2 feature) -v, –version Print the version number and exit

If you only specify the apikey prowly will use the defaults:

:description => “I am testing Prowly, and it works!” :event => “Prowly notification” :application => “Prowly” :priority => NORMAL :url => nil

Handling the Prowl API response

ON SUCCESS result.status # => “success” result.code # => “200”

if result.succeeded? result.remaining # => “977” result.resetdate # => “1266272588” else result.message # => end ON ERROR result.status # => “error” result.code # => “401” <= This depends on the error code sent by the prowl API

if result.succeeded? result.remaining # => result.resetdate # => else result.message # => “Invalid API Key(s)” <= This depends on the message sent by the prowl API end

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

See LICENSE for details