mirror of
https://github.com/b4tman/sync_ics2gcal
synced 2025-02-01 12:28:29 +00:00
rewrite callback for batch requests
This commit is contained in:
parent
c34b4cdb21
commit
87a8deafed
@ -29,6 +29,24 @@ class GoogleCalendarService():
|
|||||||
return service
|
return service
|
||||||
|
|
||||||
|
|
||||||
|
def select_event_key(event):
|
||||||
|
"""select event key for logging
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
event -- event resource
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
key name or None if no key found
|
||||||
|
"""
|
||||||
|
|
||||||
|
key = None
|
||||||
|
if 'iCalUID' in event:
|
||||||
|
key = 'iCalUID'
|
||||||
|
elif 'id' in event:
|
||||||
|
key = 'id'
|
||||||
|
return key
|
||||||
|
|
||||||
|
|
||||||
class GoogleCalendar():
|
class GoogleCalendar():
|
||||||
"""class to interact with calendar on google
|
"""class to interact with calendar on google
|
||||||
"""
|
"""
|
||||||
@ -39,6 +57,33 @@ class GoogleCalendar():
|
|||||||
self.service = service
|
self.service = service
|
||||||
self.calendarId = calendarId
|
self.calendarId = calendarId
|
||||||
|
|
||||||
|
def _make_request_callback(self, action, events_by_req):
|
||||||
|
"""make callback for log result of batch request
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
action -- action name
|
||||||
|
events_by_req -- list of events ordered by request id
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
callback function
|
||||||
|
"""
|
||||||
|
|
||||||
|
def callback(request_id, response, exception):
|
||||||
|
event = events_by_req[int(request_id)]
|
||||||
|
key = select_event_key(event)
|
||||||
|
|
||||||
|
if exception is not None:
|
||||||
|
self.logger.error('failed to %s event with %s: %s, exception: %s',
|
||||||
|
action, key, event.get(key), str(exception))
|
||||||
|
else:
|
||||||
|
resp_key = select_event_key(response)
|
||||||
|
if resp_key is not None:
|
||||||
|
event = response
|
||||||
|
key = resp_key
|
||||||
|
self.logger.info('event %s ok, %s: %s',
|
||||||
|
action, key, event.get(key))
|
||||||
|
return callback
|
||||||
|
|
||||||
def list_events_from(self, start):
|
def list_events_from(self, start):
|
||||||
""" list events from calendar, where start date >= start
|
""" list events from calendar, where start date >= start
|
||||||
"""
|
"""
|
||||||
@ -110,15 +155,7 @@ class GoogleCalendar():
|
|||||||
fields = 'id'
|
fields = 'id'
|
||||||
events_by_req = []
|
events_by_req = []
|
||||||
|
|
||||||
def insert_callback(request_id, response, exception):
|
insert_callback = self._make_request_callback('insert', events_by_req)
|
||||||
if exception is not None:
|
|
||||||
event = events_by_req[int(request_id)]
|
|
||||||
self.logger.error('failed to insert event with UID: %s, exception: %s', event.get(
|
|
||||||
'UID'), str(exception))
|
|
||||||
else:
|
|
||||||
event = response
|
|
||||||
self.logger.info('event created, id: %s', event.get('id'))
|
|
||||||
|
|
||||||
batch = self.service.new_batch_http_request(callback=insert_callback)
|
batch = self.service.new_batch_http_request(callback=insert_callback)
|
||||||
i = 0
|
i = 0
|
||||||
for event in events:
|
for event in events:
|
||||||
@ -138,15 +175,7 @@ class GoogleCalendar():
|
|||||||
fields = 'id'
|
fields = 'id'
|
||||||
events_by_req = []
|
events_by_req = []
|
||||||
|
|
||||||
def patch_callback(request_id, response, exception):
|
patch_callback = self._make_request_callback('patch', events_by_req)
|
||||||
if exception is not None:
|
|
||||||
event = events_by_req[int(request_id)]
|
|
||||||
self.logger.error('failed to patch event with UID: %s, exception: %s', event.get(
|
|
||||||
'UID'), str(exception))
|
|
||||||
else:
|
|
||||||
event = response
|
|
||||||
self.logger.info('event patched, id: %s', event.get('id'))
|
|
||||||
|
|
||||||
batch = self.service.new_batch_http_request(callback=patch_callback)
|
batch = self.service.new_batch_http_request(callback=patch_callback)
|
||||||
i = 0
|
i = 0
|
||||||
for event_new, event_old in event_tuples:
|
for event_new, event_old in event_tuples:
|
||||||
@ -168,15 +197,7 @@ class GoogleCalendar():
|
|||||||
fields = 'id'
|
fields = 'id'
|
||||||
events_by_req = []
|
events_by_req = []
|
||||||
|
|
||||||
def update_callback(request_id, response, exception):
|
update_callback = self._make_request_callback('update', events_by_req)
|
||||||
if exception is not None:
|
|
||||||
event = events_by_req[int(request_id)]
|
|
||||||
self.logger.error('failed to update event with UID: %s, exception: %s', event.get(
|
|
||||||
'UID'), str(exception))
|
|
||||||
else:
|
|
||||||
event = response
|
|
||||||
self.logger.info('event updated, id: %s', event.get('id'))
|
|
||||||
|
|
||||||
batch = self.service.new_batch_http_request(callback=update_callback)
|
batch = self.service.new_batch_http_request(callback=update_callback)
|
||||||
i = 0
|
i = 0
|
||||||
for event_new, event_old in event_tuples:
|
for event_new, event_old in event_tuples:
|
||||||
@ -197,14 +218,7 @@ class GoogleCalendar():
|
|||||||
|
|
||||||
events_by_req = []
|
events_by_req = []
|
||||||
|
|
||||||
def delete_callback(request_id, _, exception):
|
delete_callback = self._make_request_callback('delete', events_by_req)
|
||||||
event = events_by_req[int(request_id)]
|
|
||||||
if exception is not None:
|
|
||||||
self.logger.error('failed to delete event with UID: %s, exception: %s', event.get(
|
|
||||||
'UID'), str(exception))
|
|
||||||
else:
|
|
||||||
self.logger.info('event deleted, id: %s', event.get('id'))
|
|
||||||
|
|
||||||
batch = self.service.new_batch_http_request(callback=delete_callback)
|
batch = self.service.new_batch_http_request(callback=delete_callback)
|
||||||
i = 0
|
i = 0
|
||||||
for event in events:
|
for event in events:
|
||||||
@ -216,10 +230,10 @@ class GoogleCalendar():
|
|||||||
|
|
||||||
def create(self, summary, timeZone=None):
|
def create(self, summary, timeZone=None):
|
||||||
"""create calendar
|
"""create calendar
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
summary -- new calendar summary
|
summary -- new calendar summary
|
||||||
|
|
||||||
Keyword Arguments:
|
Keyword Arguments:
|
||||||
timeZone -- new calendar timezone as string (optional)
|
timeZone -- new calendar timezone as string (optional)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user