1+ from typing import AsyncGenerator
12from datetime import datetime
23
3- from python_snoo .containers import Activity , BabyData , DiaperActivity , DiaperTypes , parse_activities_from_list
4+ from python_snoo .containers import Activity , BabyData , BreastfeedingActivity , DiaperActivity , DiaperTypes
45from python_snoo .exceptions import SnooBabyError
56from python_snoo .snoo import Snoo
67
@@ -51,10 +52,22 @@ async def get_activity_data(self, from_date: datetime, to_date: datetime) -> lis
5152 if r .status < 200 or r .status >= 300 :
5253 raise SnooBabyError (f"Failed to get activity data: { r .status } : { resp } . Payload: { params } " )
5354
55+ activities : list [Activity ] = []
5456 if isinstance (resp , list ):
55- return parse_activities_from_list (resp )
57+ for activity in resp :
58+ activity_type = activity .get ("type" , "" ).lower ()
59+
60+ if activity_type == "diaper" :
61+ activities .append (DiaperActivity .from_dict (activity ))
62+ elif activity_type == "breastfeeding" :
63+ activities .append (BreastfeedingActivity .from_dict (activity ))
64+ else :
65+ # Other activity types exist but aren't supported yet
66+ raise SnooBabyError (f"Unknown activity type: { activity_type } " )
5667 else :
5768 raise SnooBabyError (f"Unexpected response format: { type (resp )} " )
69+
70+ return activities
5871
5972 except Exception as ex :
6073 raise SnooBabyError from ex
@@ -81,16 +94,14 @@ async def log_diaper_change(
8194 if start_time .tzinfo is None :
8295 start_time = start_time .astimezone ()
8396
84- start_time = start_time .isoformat (timespec = "milliseconds" )
85-
8697 hdrs = self .snoo .generate_snoo_auth_headers (self .snoo .tokens .aws_id )
8798 url = f"{ self .activity_base_url } /journals"
8899
89100 payload = {
90101 "babyId" : self .baby_id ,
91102 "data" : {"types" : [dt .value for dt in diaper_types ]},
92103 "type" : "diaper" ,
93- "startTime" : start_time ,
104+ "startTime" : start_time . isoformat ( timespec = "milliseconds" ) ,
94105 }
95106
96107 if note :
0 commit comments