|
|
import os
from googleapiclient.errors import HttpError
import gapifrom gapi.apis.base_api import API
APPLICATION_NAME = "Google Calendar API Python"
class calendar_api(API): def __init__( self, app_name, client_secret_file=os.path.join(gapi.state_dir, "client_secret.json"), credentials_dir=gapi.state_dir, scopes="https://www.googleapis.com/auth/calendar", version="v3", ): super().__init__( "calendar", scopes, app_name, client_secret_file, credentials_dir, version )
self.calendars = self.get_calendars() self.ids = dict( (calendar["summary"].lower(), calendar["id"]) for calendar in self.calendars )
def create_event(self, calendar_id, body):
try: calendar_id = self.ids[calendar_id] except KeyError: pass service = self.service event_service = service.events() event = event_service.insert(calendarId=calendar_id, body=body).execute() return event["id"]
def update_event(self, calendar_id, event_id, body): try: calendar_id = self.ids[calendar_id] except KeyError: pass
service = self.service event_service = service.events() try: event = event_service.get( calendarId=calendar_id, eventId=event_id ).execute() except HttpError as e: if e.resp.status == 404: return self.create_event(calendar_id, body)
updated_event = ( service.events() .update(calendarId=calendar_id, eventId=event["id"], body=body) .execute() ) return updated_event["id"]
def get_calendars(self): page_token = None cl = [] first = True while page_token or first: first = False calendar_list_service = self.service.calendarList() calendar_list = calendar_list_service.list(pageToken=page_token).execute() cl += list(calendar_entry for calendar_entry in calendar_list["items"]) page_token = calendar_list.get("nextPageToken") return cl
def get_events(self, cal_id): service = self.service try: cal_id = self.ids[cal_id] except KeyError: pass page_token = None ret = [] while True: event_service = service.events() events = event_service.list( calendarId=cal_id, pageToken=page_token ).execute() ret += events["items"] page_token = events.get("nextPageToken") if not page_token: break return ret
def get_event_by_id(self, cal_id, event_id): """Retrieves event from cal_id and event_id""" service = self.service event_service = service.events() return event_service.get(calendarId=cal_id, eventId=event_id).execute()
|