Added Google Calendar plugin
This commit is contained in:
parent
2f8c74c8e3
commit
f6306c6015
3 changed files with 48 additions and 4 deletions
|
@ -47,3 +47,7 @@
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.no-track-info {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
40
platypush/plugins/google/calendar.py
Normal file
40
platypush/plugins/google/calendar.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
import base64
|
||||||
|
import datetime
|
||||||
|
import httplib2
|
||||||
|
import os
|
||||||
|
|
||||||
|
from apiclient import discovery
|
||||||
|
|
||||||
|
from platypush.message.response import Response
|
||||||
|
from platypush.plugins.google import GooglePlugin
|
||||||
|
|
||||||
|
|
||||||
|
class GoogleCalendarPlugin(GooglePlugin):
|
||||||
|
scopes = ['https://www.googleapis.com/auth/calendar.readonly']
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(scopes=self.scopes, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def get_upcoming_events(self, max_results=10):
|
||||||
|
now = datetime.datetime.utcnow().isoformat() + 'Z'
|
||||||
|
service = self._get_service()
|
||||||
|
result = service.events().list(calendarId='primary', timeMin=now,
|
||||||
|
maxResults=10, singleEvents=True,
|
||||||
|
orderBy='startTime').execute()
|
||||||
|
|
||||||
|
events = result.get('items', [])
|
||||||
|
return Response(output=events)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_service(self, scope=None):
|
||||||
|
if scope is None:
|
||||||
|
scope = self.scopes[0]
|
||||||
|
|
||||||
|
credentials = self.credentials[scope]
|
||||||
|
http = credentials.authorize(httplib2.Http())
|
||||||
|
return discovery.build('calendar', 'v3', http=http, cache_discovery=False)
|
||||||
|
|
||||||
|
|
||||||
|
# vim:sw=4:ts=4:et:
|
||||||
|
|
|
@ -24,14 +24,14 @@ def get_credentials_filename(scope):
|
||||||
def get_credentials(scope):
|
def get_credentials(scope):
|
||||||
credentials_file = get_credentials_filename(scope)
|
credentials_file = get_credentials_filename(scope)
|
||||||
if not os.path.exists(credentials_file):
|
if not os.path.exists(credentials_file):
|
||||||
raise RuntimeError('Credentials file {} not found. Generate it through:\n' +
|
raise RuntimeError(('Credentials file {} not found. Generate it through:\n' +
|
||||||
'\tpython -m platypush.google.credentials "{}"' +
|
'\tpython -m platypush.plugins.google.credentials "{}" ' +
|
||||||
'<path to client_secret.json>\n' +
|
'<path to client_secret.json>\n' +
|
||||||
'\t\t[--auth_host_name AUTH_HOST_NAME]\n' +
|
'\t\t[--auth_host_name AUTH_HOST_NAME]\n' +
|
||||||
'\t\t[--noauth_local_webserver]\n' +
|
'\t\t[--noauth_local_webserver]\n' +
|
||||||
'\t\t[--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]\n' +
|
'\t\t[--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]\n' +
|
||||||
'\t\t[--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]\n'.
|
'\t\t[--logging_level [DEBUG,INFO,WARNING,ERROR,CRITICAL]]\n').
|
||||||
format(credentials_file, scope_name))
|
format(credentials_file, scope))
|
||||||
|
|
||||||
store = Storage(credentials_file)
|
store = Storage(credentials_file)
|
||||||
credentials = store.get()
|
credentials = store.get()
|
||||||
|
|
Loading…
Reference in a new issue