Skip to content

Commit 118cd59

Browse files
committed
case sensitive dir
1 parent 300b268 commit 118cd59

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

Adafruit_IO/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .client import Client

Adafruit_IO/client.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import json
2+
3+
from urllib3 import connection_from_url
4+
from urllib import urlencode, quote
5+
6+
#fork of ApiClient Class: https://github.com/shazow/apiclient
7+
class Client(object):
8+
BASE_URL = 'http://localhost:3002/'
9+
10+
def __init__(self, key, rate_limit_lock=None):
11+
self.key = key
12+
self.rate_limit_lock = rate_limit_lock
13+
self.connection_pool = self._make_connection_pool(self.BASE_URL)
14+
15+
def _make_connection_pool(self, url):
16+
return connection_from_url(url)
17+
18+
def _compose_url(self, path):
19+
return self.BASE_URL + path
20+
21+
def _compose_get_url(self, path, params=None):
22+
return self.BASE_URL + path + '?' + urlencode(params)
23+
24+
def _handle_response(self, response):
25+
return json.loads(response.data)
26+
27+
def _request(self, method, path, params=None):
28+
if (method.lower() == "get"):
29+
url = self._compose_get_url(path, params)
30+
else:
31+
url = self._compose_url(path)
32+
33+
self.rate_limit_lock and self.rate_limit_lock.acquire()
34+
headers = {"X-Api-Key": self.key, 'Content-Type':'application/json'}
35+
if (method.upper() == "GET"):
36+
r = self.connection_pool.urlopen(method.upper(), url, headers=headers)
37+
else:
38+
r = self.connection_pool.urlopen(method.upper(), url, headers=headers, body=json.dumps(params))
39+
40+
return self._handle_response(r)
41+
42+
def _get(self, path, **params):
43+
return self._request('GET', path, params=params)
44+
45+
def _post(self, path, params):
46+
return self._request('POST', path, params=params)
47+
48+
def send(self, feed_name, data):
49+
feed_name = quote(feed_name)
50+
path = "api/feeds/{}/streams/send".format(feed_name)
51+
return self._post(path, {'value': data})
52+
53+
def receive(self, feed_name):
54+
feed_name = quote(feed_name)
55+
path = "api/feeds/{}/streams/last".format(feed_name)
56+
return self._get(path)
57+
58+
def receive_next(self, feed_name):
59+
feed_name = quote(feed_name)
60+
path = "api/feeds/{}/streams/next".format(feed_name)
61+
return self._get(path)
62+
63+
def receive_previous(self, feed_name):
64+
feed_name = quote(feed_name)
65+
path = "api/feeds/{}/streams/last".format(feed_name)
66+
return self._get(path)
67+
68+
def streams(self, feed_id_or_key, stream_id=None):
69+
if stream_id is None:
70+
path = "api/feeds/{}/streams".format(feed_id_or_key)
71+
else:
72+
path = "api/feeds/{}/streams/{}".format(feed_id_or_key, stream_id)
73+
return self._get(path)
74+
75+
def create_stream(self, feed_id_or_key, data):
76+
path = "api/feeds/{}/streams".format(feed_id_or_key)
77+
return self._post(path, data)
78+

0 commit comments

Comments
 (0)