"Fehlende Endzeit" mit Google Kalender und Google Racket Package

Ich benutze einGoogle API Bibliothek fürSchläge, um zu versuchen, einen Google Kalender zu aktualisieren. (Die API ist unvollständig, daher erweitere ich sie nach und nach.)

Ich habe anscheinend Probleme beim Hinzufügen von Ereignissen zu einem Kalender mithilfe des put-Aufrufs events.insert. Der Code, der den Put ausführt, sieht wie folgt aus:

(define (insert-events calendar-id
                       event
                       #:token [t #f]
                       #:max-attendees [max-attendees #f]
                       #:send-notifications [send-notifications #f]
                       #:supports-attachments [supports-attachments #f])
  (json-api-post (string->url
                  (format
                   "https://www.googleapis.com/calendar/v3/calendars/~a/events"
                   (form-urlencoded-encode calendar-id)))
                  event
                  #:token t))


(define (json-api-post u b
                       #:token [t #f]
                       #:headers [headers '()])
  (define b* (jsexpr->bytes b))
  (let retry ([t t]
              [retry-counter 0])
    (parse-json-response
     (POST-string u b* (if t (cons (token->authorization-header t) headers) headers))
     retry
     t
     retry-counter)))

(define (POST-string u b headers)
  (port->string (post-pure-port u b headers)))

Egal wie ich den Anruf benutze, ich erhalte immer eine Fehlermeldung 400 mit der Meldung: "Fehlende Endzeit". Ich habe @ ausgechecdiese Frag um sicherzustellen, dass ich meine Anfrage korrekt gesendet habe. Was ich zu sein scheine. Als Referenz ist das von mir gesendete JSON-Objekt:

{
 "end": {
  "dateTime": "2016-05-30T14:00:00-04:00"
 },
 "start": {
  "dateTime": "2016-05-30T13:00:00-04:00"
 }
}

Um sicherzustellen, dass ich ordnungsgemäß auf den richtigen Schlüssel und die richtige Kalender-ID zugegriffen habe, habe ich einen Echoserver für meinen lokalen Computer eingerichtet und die URL von @ geändergoogle.com zulocalhost, meine Antwort scheint normal zu sein:

POST /<Calendar-Id-Redacted> HTTP/1.1
Host: localhost
User-Agent: Racket/6.5.0.5 (net/http-client)
Content-Length: 116
Authorization: Bearer <Key-Redacted>

{
 "end": {
  "dateTime": "2016-05-30T14:00:00-04:00"
 },
 "start": {
  "dateTime": "2016-05-30T13:00:00-04:00"
 }
}

Ich scheine alles richtig zu machen. Und selbst wenn in meinem Racket-Code ein Fehler aufgetreten ist, scheint das Senden des gleichen JSON-Objekts über die Entwickler-Webkonsole von Google wie beabsichtigt zu funktionieren. Warum funktioniert das Senden dieses speziellen POST nicht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage