case sensitive dir
This commit is contained in:
parent
300b268f6c
commit
118cd59bb6
2 changed files with 79 additions and 0 deletions
1
Adafruit_IO/__init__.py
Normal file
1
Adafruit_IO/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
from .client import Client
|
||||||
78
Adafruit_IO/client.py
Normal file
78
Adafruit_IO/client.py
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
import json
|
||||||
|
|
||||||
|
from urllib3 import connection_from_url
|
||||||
|
from urllib import urlencode, quote
|
||||||
|
|
||||||
|
#fork of ApiClient Class: https://github.com/shazow/apiclient
|
||||||
|
class Client(object):
|
||||||
|
BASE_URL = 'http://localhost:3002/'
|
||||||
|
|
||||||
|
def __init__(self, key, rate_limit_lock=None):
|
||||||
|
self.key = key
|
||||||
|
self.rate_limit_lock = rate_limit_lock
|
||||||
|
self.connection_pool = self._make_connection_pool(self.BASE_URL)
|
||||||
|
|
||||||
|
def _make_connection_pool(self, url):
|
||||||
|
return connection_from_url(url)
|
||||||
|
|
||||||
|
def _compose_url(self, path):
|
||||||
|
return self.BASE_URL + path
|
||||||
|
|
||||||
|
def _compose_get_url(self, path, params=None):
|
||||||
|
return self.BASE_URL + path + '?' + urlencode(params)
|
||||||
|
|
||||||
|
def _handle_response(self, response):
|
||||||
|
return json.loads(response.data)
|
||||||
|
|
||||||
|
def _request(self, method, path, params=None):
|
||||||
|
if (method.lower() == "get"):
|
||||||
|
url = self._compose_get_url(path, params)
|
||||||
|
else:
|
||||||
|
url = self._compose_url(path)
|
||||||
|
|
||||||
|
self.rate_limit_lock and self.rate_limit_lock.acquire()
|
||||||
|
headers = {"X-Api-Key": self.key, 'Content-Type':'application/json'}
|
||||||
|
if (method.upper() == "GET"):
|
||||||
|
r = self.connection_pool.urlopen(method.upper(), url, headers=headers)
|
||||||
|
else:
|
||||||
|
r = self.connection_pool.urlopen(method.upper(), url, headers=headers, body=json.dumps(params))
|
||||||
|
|
||||||
|
return self._handle_response(r)
|
||||||
|
|
||||||
|
def _get(self, path, **params):
|
||||||
|
return self._request('GET', path, params=params)
|
||||||
|
|
||||||
|
def _post(self, path, params):
|
||||||
|
return self._request('POST', path, params=params)
|
||||||
|
|
||||||
|
def send(self, feed_name, data):
|
||||||
|
feed_name = quote(feed_name)
|
||||||
|
path = "api/feeds/{}/streams/send".format(feed_name)
|
||||||
|
return self._post(path, {'value': data})
|
||||||
|
|
||||||
|
def receive(self, feed_name):
|
||||||
|
feed_name = quote(feed_name)
|
||||||
|
path = "api/feeds/{}/streams/last".format(feed_name)
|
||||||
|
return self._get(path)
|
||||||
|
|
||||||
|
def receive_next(self, feed_name):
|
||||||
|
feed_name = quote(feed_name)
|
||||||
|
path = "api/feeds/{}/streams/next".format(feed_name)
|
||||||
|
return self._get(path)
|
||||||
|
|
||||||
|
def receive_previous(self, feed_name):
|
||||||
|
feed_name = quote(feed_name)
|
||||||
|
path = "api/feeds/{}/streams/last".format(feed_name)
|
||||||
|
return self._get(path)
|
||||||
|
|
||||||
|
def streams(self, feed_id_or_key, stream_id=None):
|
||||||
|
if stream_id is None:
|
||||||
|
path = "api/feeds/{}/streams".format(feed_id_or_key)
|
||||||
|
else:
|
||||||
|
path = "api/feeds/{}/streams/{}".format(feed_id_or_key, stream_id)
|
||||||
|
return self._get(path)
|
||||||
|
|
||||||
|
def create_stream(self, feed_id_or_key, data):
|
||||||
|
path = "api/feeds/{}/streams".format(feed_id_or_key)
|
||||||
|
return self._post(path, data)
|
||||||
|
|
||||||
Loading…
Reference in a new issue