Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions remind.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ def invoke_operation(args):
print('argument to list command must be positive')
return
reminders = client.list_reminders(num_reminders=num_reminders)
reminders = filter(None, reminders)
if reminders is not None:
for r in sorted(reminders):
print(r)
Expand Down
2 changes: 2 additions & 0 deletions reminder.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ class Reminder:
title: str
dt: datetime
creation_timestamp_msec: Optional[int] = None
done_timestamp_msec: Optional[int] = None
done: bool = False
all_day: bool = False

def __repr_title(self):
"""
Expand Down
22 changes: 20 additions & 2 deletions reminders_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
'create': 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/create',
'delete': 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/delete',
'get': 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/get',
'list': 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/list'
'list': 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/list',
'update': 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/update'
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please end line with ","

}

HEADERS = {
Expand Down Expand Up @@ -44,7 +45,24 @@ def create_reminder(self, reminder: Reminder) -> bool:
else:
self._report_error(response, content, 'create_reminder')
return False


def update_reminder(self, reminder: Reminder) -> bool:
"""
send a 'update reminder' request.
returns True upon a successful update of a reminder
"""
response, content = self.auth_http.request(
uri=URIs['update'],
method='POST',
body=client_utils.update_req_body(reminder),
headers=HEADERS,
)
if response.status == HTTP_OK:
return True
else:
self._report_error(response, content, 'update_reminder')
return False

def get_reminder(self, reminder_id: str) -> Optional[Reminder]:
"""
retrieve information about the reminder with the given id. None if an
Expand Down
74 changes: 66 additions & 8 deletions reminders_client_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,45 @@ def create_req_body(reminder: Reminder) -> str:
return json.dumps(body)


def update_req_body(reminder: Reminder) -> str:
"""
returns the body of a update-reminder request
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

of an update

"""
body = {
'2': {
'2': reminder.id
},
'4': {
'1': {
'2': reminder.id
},
'3': reminder.title,
'5': {
'1': reminder.dt.year,
'2': reminder.dt.month,
'3': reminder.dt.day,
'4': {
'1': reminder.dt.hour,
'2': reminder.dt.minute,
'3': reminder.dt.second,
},
'9': 1 if reminder.all_day else 0,
},
'8': 1 if reminder.done else 0,
'11': str(int(datetime.utcnow().timestamp() * 1000)),
'18': str(reminder.creation_timestamp_msec)
},
'7': {
'1': [
0,
1,
3,
10,
]},
}
return json.dumps(body)


def get_req_body(reminder_id: str) -> str:
"""
returns the body of a get-reminder request
Expand Down Expand Up @@ -119,23 +158,42 @@ def build_reminder(reminder_dict: dict) -> Optional[Reminder]:
try:
id = r['1']['2']
title = r['3']
year = r['5']['1']
month = r['5']['2']
day = r['5']['3']
hour = r['5']['4']['1']
minute = r['5']['4']['2']
second = r['5']['4']['3']
if '5' in r:
year = r['5']['1']
month = r['5']['2']
day = r['5']['3']
if '4' in r['5']:
hour = r['5']['4']['1']
minute = r['5']['4']['2']
second = r['5']['4']['3']
else:
hour = 0
minute = 0
second = 0
all_day = '9' in r['5'] and r['5']['9'] == 1
else:
now = datetime.now()
year = now.year
month = now.month
day = now.day
hour = 0
minute = 0
second = 0

creation_timestamp_msec = int(r['18'])
done_timestamp_msec = int(r['11']) if '11' in r else None
done = '8' in r and r['8'] == 1

return Reminder(
id=id,
title=title,
dt=datetime(year, month, day, hour, minute, second),
creation_timestamp_msec=creation_timestamp_msec,
done_timestamp_msec=done_timestamp_msec,
done=done,
all_day = all_day
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here too, end with ","

)

except KeyError:
print('build_reminder failed: unrecognized reminder dictionary format')
return None