forked from platypush/platypush
- Support for workdir
- Prepared draft for HttpPoll backend
This commit is contained in:
parent
411874c6a7
commit
b074e03d45
2 changed files with 65 additions and 0 deletions
50
platypush/backend/http/poll/__init__.py
Normal file
50
platypush/backend/http/poll/__init__.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
import json
|
||||
import requests
|
||||
|
||||
from threading import Thread
|
||||
|
||||
from platypush.message.response import Response
|
||||
|
||||
from .. import Backend
|
||||
|
||||
|
||||
class HttpPollBackend(Backend):
|
||||
"""
|
||||
This backend will poll multiple HTTP endpoints/services and return events
|
||||
the bus whenever something new happened. Example configuration:
|
||||
|
||||
backend.http.poll:
|
||||
services:
|
||||
-
|
||||
type: platypush.backend.http.service.ota.booking.GetReservations
|
||||
args:
|
||||
token: YOUR_TOKEN
|
||||
poll_seconds: 10 # Check for updates on this endpoint every 10 seconds
|
||||
limit: 5 # Return the first 5 (new) results (default: all)
|
||||
"""
|
||||
|
||||
def __init__(self, services, *args, **kwargs):
|
||||
"""
|
||||
Params:
|
||||
services -- List/iterable of HttpService objects
|
||||
"""
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
self.services = services
|
||||
|
||||
|
||||
def run(self):
|
||||
super().run()
|
||||
|
||||
def send_message(self, msg):
|
||||
pass
|
||||
|
||||
def on_stop(self):
|
||||
pass
|
||||
|
||||
def stop(self):
|
||||
super().stop()
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
import errno
|
||||
import logging
|
||||
import os
|
||||
import socket
|
||||
|
@ -30,6 +31,8 @@ class Config(object):
|
|||
os.path.join(os.sep, 'etc', 'platypush', 'config.yaml'),
|
||||
]
|
||||
|
||||
_workdir_location = os.path.join(os.environ['HOME'], '.local', 'share', 'platypush')
|
||||
|
||||
def __init__(self, cfgfile=None):
|
||||
"""
|
||||
Constructor. Always use the class as a singleton (i.e. through
|
||||
|
@ -49,6 +52,10 @@ class Config(object):
|
|||
self._cfgfile = cfgfile
|
||||
self._config = self._read_config_file(self._cfgfile)
|
||||
|
||||
if 'workdir' not in self._config:
|
||||
self._config['workdir'] = self._workdir_location
|
||||
mkdir_p(self._config['workdir'])
|
||||
|
||||
if 'logging' not in self._config:
|
||||
self._config['logging'] = logging.INFO
|
||||
else:
|
||||
|
@ -182,5 +189,13 @@ class Config(object):
|
|||
if _default_config_instance is None: _default_config_instance = Config()
|
||||
_default_config_instance._config[key] = key
|
||||
|
||||
|
||||
def mkdir_p(path):
|
||||
try: os.makedirs(path)
|
||||
except OSError as exc: # Python >2.5
|
||||
if exc.errno == errno.EEXIST and os.path.isdir(path): pass
|
||||
else: raise
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
||||
|
||||
|
|
Loading…
Reference in a new issue