This repository was archived by the owner on Jun 28, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +66
-1
lines changed
Expand file tree Collapse file tree 2 files changed +66
-1
lines changed Original file line number Diff line number Diff 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" ]
Original file line number Diff line number Diff line change 33
44SINCE = "2021-01-01T00:00:00.000Z"
55EVENT_TYPE = "device.connected"
6+ FAKE_UUID = "00000000-0000-0000-0000-000000000000"
67
78def 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
You can’t perform that action at this time.
0 commit comments