Я пытаюсь изменить событие в календаре, добавив в него участников. Событие было создано другим пользователем вручную, и я пытаюсь, чтобы мое приложение изменило его. Первоначально это было повторяющееся событие, и я попытался изменить его, чтобы оно было единичным. Возможно, я запускаю этот код 5 раз за 24 часа, но я все еще ограничен в скорости. Я не уверен, нужно ли мне ждать дольше, чтобы восстановить лимиты API, или мне что-то не хватает, если я случайно спамлю API Google, и это ограничивает меня.
// schedule contains data pertaining to a user and a time
type Schedule struct {
Date string `json:"date"`
User string `json:"user"`
Confirmed bool `json:"confirmed"`
DataType string `json:"datatype"`
Key string `json:"key"`
}
// use this to update the calendar with people designated time
func addUserToCalendar(c *gin.Context) {
calendarSVC := c.MustGet("calendar").(*calendar.Service)
b, err := c.GetRawData()
if err != nil {
log.Error().Msg("Error from getting request body")
log.Error().Err(err)
c.JSON(http.StatusInternalServerError, map[string]string{
"error": "internal server error",
})
return
}
scheduleData := &common.Schedule{}
err = json.Unmarshal(b, scheduleData)
if err != nil {
log.Error().Msg("Error extracting schedule into struct")
log.Error().Err(err)
c.JSON(http.StatusInternalServerError, map[string]string{
"error": "internal server error",
})
return
}
log.Info().Msg(scheduleData.Date)
t, err := time.Parse("2006-01-02", scheduleData.Date)
if err != nil {
c.JSON(http.StatusInternalServerError, map[string]string{
"error": err.Error(),
})
return
}
events, err := calendarSVC.Events.List(os.Getenv("CALENDAR_ID")).TimeMin(t.Format(time.RFC3339)).ShowDeleted(false).MaxResults(1).Do()
if err != nil {
c.JSON(http.StatusInternalServerError, map[string]string{
"error": err.Error(),
})
return
}
if len(events.Items) == 0 {
c.JSON(http.StatusNoContent, map[string]string{
"error": "no events found",
})
return
}
newAttendee := &calendar.EventAttendee{Email: scheduleData.User}
events.Items[0].Attendees = append(events.Items[0].Attendees, newAttendee)
for _, attendee := range events.Items[0].Attendees {
log.Info().Msg(attendee.Email)
}
_, err = calendarSVC.Events.Update(os.Getenv("CALENDAR_ID"), events.Items[0].Id, events.Items[0]).Do()
if err != nil {
c.JSON(http.StatusInternalServerError, map[string]string{
"error": err.Error(),
})
return
}
c.JSON(http.StatusOK, "done")
}