pax_global_header00006660000000000000000000000064113350452520014512gustar00rootroot0000000000000052 comment=92df046f136aef7e5dff7a1f685b58f4b9230361 jacobb-prowlpy-92df046/000077500000000000000000000000001133504525200150045ustar00rootroot00000000000000jacobb-prowlpy-92df046/.gitignore000066400000000000000000000000271133504525200167730ustar00rootroot00000000000000*.pyc .cache/ .DS_Storejacobb-prowlpy-92df046/LICENSE000066400000000000000000000030311133504525200160060ustar00rootroot00000000000000Copyright (c) 2009, Jaccob Burch Copyright (c) 2009, Olivier Hervieu All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. jacobb-prowlpy-92df046/README000066400000000000000000000017531133504525200156720ustar00rootroot00000000000000======= Prowlpy ======= Originally Written by Jacob Burch, 7/6/2009 Modified by Olivier Hervieu Python module for posting to the iPhone Push Notification service Prowl: http://prowl.weks.net/ Dependencies: ============= No extra dependency. (Prowlpy use only basic python modules) The socket module must be compiled with SSL support Change Log: =========== V0.43 ----- - Remove httplib2 dependency, add providerkey support. V0.42 ----- - Got rid of Now-uncessary URL Encoding. - Working on incorporating forked changes while not totally breaking backward compatibility with the vanilla add function V0.41 ----- - Adding priority setting - Removed debug code V0.4 ---- - Added Prowl.add alias for Post - Switched post to use (oddly enough) POST instead of GET - Added a Prowl.veryify_key method V0.3 ---- - Changed to handle the new API system. V0.2 ---- - Basic working module Todo: ----- - Test against character-limits. - More detailed Exceptions based on the returned XML document jacobb-prowlpy-92df046/demos/000077500000000000000000000000001133504525200161135ustar00rootroot00000000000000jacobb-prowlpy-92df046/demos/example.py000066400000000000000000000035641133504525200201300ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2009, Jaccob Burch # Copyright (c) 2010, Olivier Hervieu # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of the University of California, Berkeley nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Example notification using prowl. """ import prowlpy apikey = '1234567890123456789012345678901234567890' #Dummy API-key) p = prowlpy.Prowl(apikey) try: p.add('TestApp','Server Down',"The Web Box isn't responding to a ping") print 'Success' except Exception,msg: print msg jacobb-prowlpy-92df046/python/000077500000000000000000000000001133504525200163255ustar00rootroot00000000000000jacobb-prowlpy-92df046/python/__init__.py000066400000000000000000000031561133504525200204430ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2009, Jaccob Burch # Copyright (c) 2010, Olivier Hervieu # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of the University of California, Berkeley nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from prowlpy import Prowl jacobb-prowlpy-92df046/python/prowlpy.py000066400000000000000000000123231133504525200204140ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2009, Jaccob Burch # Copyright (c) 2010, Olivier Hervieu # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of the University of California, Berkeley nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Prowlpy V0.42 originally written by Jacob Burch, modified by Olivier Hervieu. Python Prowlpy is a python module that implement the public api of Prowl to send push notification to iPhones. See http://prowl.weks.net for information about Prowl. The prowlpy module respect the API of prowl. So prowlpy provides a Prowl class which implements two methods : - post, to push a notification to an iPhone, - verify_key, to verify an API key. """ __author__ = 'Jacob Burch' __author_email__ = 'jacoburch@gmail.com' __maintainer__ = 'Olivier Hervieu' __maintainer_email__ = 'olivier.hervieu@gmail.com' __version__ = 0.42 from httplib import HTTPSConnection as Https from urllib import urlencode API_DOMAIN = 'prowl.weks.net' class Prowl(object): def __init__(self, apikey, providerkey = None): """ Initialize a Prowl instance. """ self.apikey = apikey # Set User-Agent self.headers = {'User-Agent': "Prowlpy/%s" % str(__version__), 'Content-type': "application/x-www-form-urlencoded"} # Aliasing self.add = self.post def post( self, application=None, event=None, description=None,priority=0, providerkey = None): """ Post a notification.. You must provide either event or description or both. The parameters are : - application ; The name of your application or the application generating the event. - providerkey (optional) : your provider API key. Only necessary if you have been whitelisted. - priority (optional) : default value of 0 if not provided. An integer value ranging [-2, 2] representing: -2. Very Low -1. Moderate 0. Normal 1. High 2. Emergency (note : emergency priority messages may bypass quiet hours according to the user's settings) - event : the name of the event or subject of the notification. - description : a description of the event, generally terse. """ # Create the http object h = Https(API_DOMAIN) # Perform the request and get the response headers and content data = { 'apikey': self.apikey, 'application': application, 'event': event, 'description': description, 'priority': priority } if providerkey is not None: data['providerkey'] = providerkey h.request( "POST", "/publicapi/add", headers = self.headers, body = urlencode(data)) response = h.getresponse() request_status = response.status if request_status == 200: return True elif request_status == 401: raise Exception("Auth Failed: %s" % response.reason) else: raise Exception("Failed") def verify_key(self, providerkey = None): """ Verify if the API key is valid. The parameters are : - providerkey (optional) : your provider API key. Only necessary if you have been whitelisted. """ h = Https(API_DOMAIN) data = {'apikey' : self.apikey} if providerkey is not None: data['providerkey'] = providerkey h.request( "GET", "/publicapi/verify?"+ urlencode(data), headers=self.headers) request_status = h.getresponse().status if request_status != 200: raise Exception("Invalid API Key %s" % self.apikey) jacobb-prowlpy-92df046/setup.py000066400000000000000000000041241133504525200165170ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2009, Jaccob Burch # Copyright (c) 2010, Olivier Hervieu # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of the University of California, Berkeley nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from setuptools import setup import sys sys.path.append('python') from prowlpy import __author__ from prowlpy import __version__ long_description = ''' Python module for posting to the iPhone Push Notification service Prowl: http://prowl.weks.net/ ''' setup( name = 'prowlpy', packages = ['prowlpy'], package_dir= {'prowlpy': 'python'}, version = __version__, description= 'Python module for Prowl iPhone notification service', author = __author__, )