Skip to content

Commit 2981528

Browse files
committed
Added receive_n_data function
Allows for an in-between step between receive_data (most recent value only) and receive_all_data (all data values)
1 parent b84e97b commit 2981528

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

adafruit_io/adafruit_io.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ def validate_feed_key(feed_key: str):
5353
"Feed key must contain English letters, numbers, dash, and a period or a forward slash."
5454
)
5555

56+
def validate_n_values(n_values: int):
57+
"""Validates a provided number of values to retrieve data from Adafruit IO.
58+
59+
Although Adafruit IO will accept values < 1 and > 1000, this avoids two types of issues:
60+
<1 - Coding errors
61+
>1000 - Pagination-related expectation management
62+
63+
"""
64+
if n_values < 1 or n_values > 1000: # validate 0 < n_values <= 1000
65+
raise ValueError("Number of values must be greater than zero and less than or equal to 1000")
5666

5767
class IO_MQTT:
5868
"""
@@ -632,6 +642,18 @@ def receive_all_data(self, feed_key: str):
632642
validate_feed_key(feed_key)
633643
path = self._compose_path("feeds/{0}/data".format(feed_key))
634644
return self._get(path)
645+
646+
def receive_n_data(self, feed_key: str, n_values: int):
647+
"""
648+
Get n data values from a specified Adafruit IO feed. Data is
649+
returned in reverse order.
650+
651+
:param str feed_key: Adafruit IO feed key
652+
"""
653+
validate_n_values(n_values)
654+
validate_feed_key(feed_key)
655+
path = self._compose_path("feeds/{0}/data?limit={1}".format(feed_key,n_values))
656+
return self._get(path)
635657

636658
def receive_data(self, feed_key: str):
637659
"""

0 commit comments

Comments
 (0)