Skip to content
This repository was archived by the owner on Jun 28, 2024. It is now read-only.

Commit aa58b4a

Browse files
authored
Merge pull request #49 from seamapi/implement-events-get
2 parents 604a569 + 3b71ab4 commit aa58b4a

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

seamapi/events.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,55 @@ def list(
9595

9696
events = res.json()["events"]
9797
return events
98+
99+
def get(
100+
self,
101+
event_id: Optional[str] = None,
102+
event_type: Optional[str] = None,
103+
device_id: Optional[str] = None
104+
) -> Event:
105+
"""Get an Event.
106+
107+
Parameters
108+
----------
109+
event_id : Optional[str]
110+
Event ID to filter events by
111+
event_type : Optional[str]
112+
Event type to filter events by
113+
device_id : Optional[str]
114+
Device ID to filter events by
115+
116+
Raises
117+
------
118+
Exception
119+
If the API request wasn't successful.
120+
121+
Returns
122+
------
123+
An event or None.
124+
"""
125+
params = {}
126+
127+
arguments = {
128+
"event_id": event_id,
129+
"event_type": event_type,
130+
"device_id": device_id
131+
}
132+
133+
for name in arguments:
134+
if arguments[name]:
135+
params.update({ name: arguments[name] })
136+
137+
res = requests.get(
138+
f"{self.seam.api_url}/events/get",
139+
headers={"Authorization": f"Bearer {self.seam.api_key}"},
140+
params=params,
141+
)
142+
143+
if not res.ok:
144+
raise Exception(res.text)
145+
146+
if not res.json().get("event", None):
147+
return None
148+
149+
return res.json()["event"]

tests/events/test_events.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,22 @@
33

44
SINCE="2021-01-01T00:00:00.000Z"
55
EVENT_TYPE = "device.connected"
6+
FAKE_UUID = "00000000-0000-0000-0000-000000000000"
67

78
def test_events(seam: Seam):
89
run_august_factory(seam)
910

1011
events = seam.events.list(since=SINCE)
11-
assert events[0]['event_type'] == EVENT_TYPE
12+
assert events[0]['event_type'] == EVENT_TYPE
13+
14+
event_by_id = seam.events.get(event_id=events[0]['event_id'])
15+
assert event_by_id['event_id'] == events[0]['event_id']
16+
17+
event_by_type = seam.events.get(event_type=events[0]['event_type'])
18+
assert event_by_type['event_type'] == events[0]['event_type']
19+
20+
event_by_device_id = seam.events.get(device_id=events[0]['device_id'])
21+
assert event_by_device_id['device_id'] == events[0]['device_id']
22+
23+
none_event = seam.events.get(event_id=FAKE_UUID)
24+
assert none_event is None

0 commit comments

Comments
 (0)