Превышено ограничение использования API календаря при изменении события - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь изменить событие в календаре, добавив в него участников. Событие было создано другим пользователем вручную, и я пытаюсь, чтобы мое приложение изменило его. Первоначально это было повторяющееся событие, и я попытался изменить его, чтобы оно было единичным. Возможно, я запускаю этот код 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")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...