From 8be147a3f9ec30cfb2b042682a39a0b9bb576a1b Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Sun, 6 Jan 2019 18:35:12 -0600 Subject: [PATCH] updating api wrapper --- .gitmodules | 3 + gcalendar.py | 137 --------------------------------------------- google_api_wrapper | 1 + 3 files changed, 4 insertions(+), 137 deletions(-) create mode 100644 .gitmodules delete mode 100644 gcalendar.py create mode 160000 google_api_wrapper diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ec58da4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "google_api_wrapper"] + path = google_api_wrapper + url = https://rlbrhost.ddns.net/git/rlbr/google_api_wrapper.git diff --git a/gcalendar.py b/gcalendar.py deleted file mode 100644 index 936cfd6..0000000 --- a/gcalendar.py +++ /dev/null @@ -1,137 +0,0 @@ -# from __future__ import print_function -from apiclient import discovery -import datetime -from googleapiclient.discovery import build -from googleapiclient.errors import HttpError - -from oauth2client import client -from oauth2client import tools -from oauth2client.file import Storage -from oauth2client.service_account import ServiceAccountCredentials - -import httplib2 -import os -import pytz -import sys -import argparse -import tzlocal -flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() -dt_fmt = '%Y-%m-%dT%H:%M:%S' -APPLICATION_NAME = 'Google Calendar API Python' -def dateTime(datetime): - if not datetime.tzinfo: - datetime = datetime.astimezone() - zone = tzlocal.get_localzone().zone - datetime = datetime.isoformat(timespec='seconds') - return { - "timeZone":zone, - "dateTime":datetime, - } - -class api: - def __init__(self,client_secret_file,credentials_dir,scopes = 'https://www.googleapis.com/auth/calendar'): - self.client_secret_file = client_secret_file - self.credentials_dir = credentials_dir - self.scopes = scopes - self._service = None - self._service_settime = None - self.calendars=self.get_calendars() - self.ids = dict((calendar['summary'].lower(),calendar['id']) for calendar in self.calendars) - - def get_credentials(self): - - credential_path = os.path.join(self.credentials_dir, - 'token.json') - - store = Storage(credential_path) - credentials = store.get() - if not credentials or credentials.invalid: - flow = client.flow_from_clientsecrets(self.client_secret_file, self.scopes) - flow.user_agent = APPLICATION_NAME - if flags: - credentials = tools.run_flow(flow, store, flags) - else: # Needed only for compatibility with Python 2.6 - credentials = tools.run(flow, store) - print('Storing credentials to ' + credential_path) - return credentials - - def build_service(self): - credentials = self.get_credentials() - - http = credentials.authorize(httplib2.Http()) - - service = build('calendar', 'v3', http=http, cache_discovery=False) - return service - - def _needs_renewal(self): - now = datetime.datetime.today() - if self._service_settime: - return (now - self._service_settime) > datetime.timedelta(seconds = 60**2) - else: - return True - # elif - @property - def service(self): - if self._needs_renewal(): - service = self.build_service() - self._service = service - self._service_settime = datetime.datetime.today() - return service - else: - return self._service - - - def create_event(self, calendar_id, body): - - try: - calendar_id = self.ids[calendar_id] - except KeyError: - pass - service = self.service - event = service.events().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 - try: - event = service.events().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 = [] - while True: - calendar_list = self.service.calendarList().list(pageToken=page_token).execute() - cl += list(calendar_list_entry for calendar_list_entry in calendar_list['items']) - page_token = calendar_list.get('nextPageToken') - if not page_token: - break - return cl - - def get_events(self,id): - service = self.service - try: - id = self.ids[id] - except KeyError: - pass - page_token = None - ret = [] - while True: - events = service.events().list(calendarId=id, pageToken=page_token).execute() - ret += events['items'] - page_token = events.get('nextPageToken') - if not page_token: - break - return ret -# if __name__ == "__main__": - # test = api(r"X:\Users\Ralphie\Downloads\client_secret.json",r"X:\Users\Ralphie\Downloads") diff --git a/google_api_wrapper b/google_api_wrapper new file mode 160000 index 0000000..78ee774 --- /dev/null +++ b/google_api_wrapper @@ -0,0 +1 @@ +Subproject commit 78ee774585aa6c8993d24a9fdcc4604dc5522da9