view calsync/convert/convert.go @ 49:2991c1166852

start calsync in go. Calendar list seems to sync
author drewp@bigasterisk.com
date Mon, 19 Aug 2024 13:25:03 -0700
parents
children a9b720445bcf
line wrap: on
line source

package convert

import (
	"net/url"
	"time"

	"bigasterisk.com/go/gcalendarwatch/gcalclient"
	"bigasterisk.com/go/gcalendarwatch/mongoclient"
	"google.golang.org/api/calendar/v3"
)

func MongoCalFromGoogleCal(cal *calendar.CalendarListEntry) mongoclient.MongoCal {
	return mongoclient.MongoCal{
		Url:         gcalclient.MakeCalUrl(cal.Id),
		GoogleId:    cal.Id,
		Summary:     cal.Summary,
		Description: cal.Description,
	}
}

func MakeEventUrl(calUrl string, evId string) string {
	return calUrl + "/" + url.QueryEscape(evId)
}

func MakeEventUrl2(cal mongoclient.MongoCal, evId string) string {
	return MakeEventUrl3(cal.GoogleId, evId)
}

func MakeEventUrl3(googleCalId string, evId string) string {
	return MakeEventUrl("http://bigasterisk.com/calendar/"+
		url.QueryEscape(googleCalId), evId)
}

func MongoEventFromGoogleEvent2(
	calUrl string,
	ev *gcalclient.CalendarEvent,
	now time.Time,
) mongoclient.MongoEvent {
	return mongoEventFromGoogleEvent(calUrl, ev, now)

}
func MongoEventFromGoogleEvent(
	cal *calendar.CalendarListEntry,
	ev *gcalclient.CalendarEvent,
	now time.Time,
) mongoclient.MongoEvent {
	return mongoEventFromGoogleEvent(MakeEventUrl3(cal.Id, ev.Id), ev, now)
}

func mongoEventFromGoogleEvent(calUrl string, ev *gcalclient.CalendarEvent, now time.Time) mongoclient.MongoEvent {
	return mongoclient.MongoEvent{
		Url:      calUrl,
		GoogleId: ev.Event.Id,
		HtmlLink: ev.HtmlLink,
		Title:    ev.Summary, //?
		// FeedId             : ev.Event.FeedId, // or calid?
		// FeedTitle          : ev.Event.FeedTitle, // /or what
		EndTimeUnspecified: ev.Event.EndTimeUnspecified,
		// Start              : ev.Start.DateTime,
		// StartDate          : ev.Event.StartDate,
		// StartTime          : ev.Event.StartTime,
		// End                : ev.Event.End,
		// EndDate            : ev.Event.EndDate,
		// EndTime            : ev.Event.EndTime,
		LastUpdated: now,
	}

}