mirror of
https://github.com/b4tman/sync_ics2gcal
synced 2025-01-21 23:38:58 +00:00
+ default credentials support
https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.default https://developers.google.com/identity/protocols/application-default-credentials
This commit is contained in:
parent
3ecd6695cf
commit
d146eec7ae
@ -50,7 +50,8 @@ wget https://raw.githubusercontent.com/b4tman/sync_ics2gcal/develop/sample-confi
|
|||||||
* `start_from` - start date:
|
* `start_from` - start date:
|
||||||
* full format datetime, `2018-04-03T13:23:25.000001Z` for example
|
* full format datetime, `2018-04-03T13:23:25.000001Z` for example
|
||||||
* or just `now`
|
* or just `now`
|
||||||
* `service_account` - service account filename
|
* *(Optional)* `service_account` - service account filename, remove it from config to use [default credentials](https://developers.google.com/identity/protocols/application-default-credentials)
|
||||||
|
* *(Optional)* `logging` - [config](https://docs.python.org/3.8/library/logging.config.html#dictionary-schema-details) to setup logging
|
||||||
* `google_id` - target google calendar id, `my-calendar@group.calendar.google.com` for example
|
* `google_id` - target google calendar id, `my-calendar@group.calendar.google.com` for example
|
||||||
* `source` - source `.ics` filename, `my-calendar.ics` for example
|
* `source` - source `.ics` filename, `my-calendar.ics` for example
|
||||||
|
|
||||||
|
@ -14,6 +14,21 @@ class GoogleCalendarService():
|
|||||||
service Resource
|
service Resource
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def default():
|
||||||
|
"""make service Resource from default credentials (authorize)
|
||||||
|
( https://developers.google.com/identity/protocols/application-default-credentials )
|
||||||
|
( https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.default )
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
service Resource
|
||||||
|
"""
|
||||||
|
|
||||||
|
scopes = ['https://www.googleapis.com/auth/calendar']
|
||||||
|
credentials, _ = google.auth.default(scopes=scopes)
|
||||||
|
service = discovery.build('calendar', 'v3', credentials=credentials)
|
||||||
|
return service
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_srv_acc_file(service_account_file):
|
def from_srv_acc_file(service_account_file):
|
||||||
"""make service Resource from service account filename (authorize)
|
"""make service Resource from service account filename (authorize)
|
||||||
@ -28,6 +43,26 @@ class GoogleCalendarService():
|
|||||||
service = discovery.build('calendar', 'v3', credentials=scoped_credentials)
|
service = discovery.build('calendar', 'v3', credentials=scoped_credentials)
|
||||||
return service
|
return service
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def from_config(config):
|
||||||
|
"""make service Resource from config dict
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
config -- dict() config with keys:
|
||||||
|
(optional) service_account: - service account filename
|
||||||
|
if key not in dict then default credentials will be used
|
||||||
|
( https://developers.google.com/identity/protocols/application-default-credentials )
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
service Resource
|
||||||
|
"""
|
||||||
|
|
||||||
|
if 'service_account' in config:
|
||||||
|
service = GoogleCalendarService.from_srv_acc_file(config['service_account'])
|
||||||
|
else:
|
||||||
|
service = GoogleCalendarService.default()
|
||||||
|
return service
|
||||||
|
|
||||||
def select_event_key(event):
|
def select_event_key(event):
|
||||||
"""select event key for logging
|
"""select event key for logging
|
||||||
|
|
||||||
|
@ -86,8 +86,7 @@ def main():
|
|||||||
if 'logging' in config:
|
if 'logging' in config:
|
||||||
logging.config.dictConfig(config['logging'])
|
logging.config.dictConfig(config['logging'])
|
||||||
|
|
||||||
srv_acc_file = config['service_account']
|
service = GoogleCalendarService.from_config(config)
|
||||||
service = GoogleCalendarService.from_srv_acc_file(srv_acc_file)
|
|
||||||
|
|
||||||
if 'list' == args.command:
|
if 'list' == args.command:
|
||||||
list_calendars(service)
|
list_calendars(service)
|
||||||
|
@ -34,14 +34,13 @@ def main():
|
|||||||
|
|
||||||
calendarId = config['calendar']['google_id']
|
calendarId = config['calendar']['google_id']
|
||||||
ics_filepath = config['calendar']['source']
|
ics_filepath = config['calendar']['source']
|
||||||
srv_acc_file = config['service_account']
|
|
||||||
|
|
||||||
start = get_start_date(config['start_from'])
|
start = get_start_date(config['start_from'])
|
||||||
|
|
||||||
converter = CalendarConverter()
|
converter = CalendarConverter()
|
||||||
converter.load(ics_filepath)
|
converter.load(ics_filepath)
|
||||||
|
|
||||||
service = GoogleCalendarService.from_srv_acc_file(srv_acc_file)
|
service = GoogleCalendarService.from_config(config)
|
||||||
gcalendar = GoogleCalendar(service, calendarId)
|
gcalendar = GoogleCalendar(service, calendarId)
|
||||||
|
|
||||||
sync = CalendarSync(gcalendar, converter)
|
sync = CalendarSync(gcalendar, converter)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user