Project

fastprowl

0.0
No commit activity in last 3 years
No release in over 3 years
Ruby Prowl library that uses libcurl-multi for parallel requests
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

>= 0.1.0
 Project Readme

FastProwl

Ruby Prowl library that uses libcurl-multi for parallel requests

FastProwl is a Ruby library for interacting with the Prowl API using Typhoeus (a libcurl-multi interface written in Ruby). It is inspired heavily by August Lilleaas's ruby-prowl library (the class method FastProwl.add() still works if you include this library instead).

FastProwl lets you queue up many Prowl API requests then make them concurrently, which is handy if you make a bunch of requests in quick succession. It was developed for Prey Fetcher, which sends too many notification requests to wait on blocking HTTP calls.

Please fork away and send me a pull request if you think you can make it better or whatnot.

Installation

Install with RubyGems:

gem install fastprowl

You'll need Paul Dix's Typhoeus, which will automatically install as a dependency, but does require a reasonably current version of libcurl installed. Check out the Typhoeus README for more info. If you're having trouble getting that to work and just need a simple Prowl library with no dependancies/native extensions, check out ruby-prowl.

Usage

Pretty simple -- you can send single notifications without bothering with queuing and all that by using the class method FastProwl.add():

FastProwl.add(
  :apikey => 'valid_api_key',
  :application => 'Car Repair Shop',
  :event => 'Your car is now ready!',
  :description => 'We had to replace a part. Bring your credit card.'
)

As mentioned, this is the same as using ruby-prowl. It will return true on success; false otherwise.

If you want to send concurrent requests (presumably you do), create an instance object and use the add() method to queue up your requests. When all of your requests are ready, use the run() method to send all of your queued notifications:

# You can put any attributes you want in the constructor
# to save repeatedly supplying them when you call add()
prowl = FastProwl.new(
  :application => 'Car Repair Shop',
  :event => 'Your car has been ready for ages!',
  :description => 'Hurry up! Bring your credit card!'
)

users.each do |user|
  prowl.add(
    :apikey => user.prowl_apikey,
  )
end

prowl.run

You get the idea.

License

This program is free software; it is distributed under an MIT-style License.


Copyright (c) 2011 Matthew Riley MacPherson.