1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| | ;;;; http.scm -- HTTP API
;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of Cuirass.
;;;
;;; Cuirass is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; Cuirass is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with Cuirass. If not, see <http://www.gnu.org/licenses/>.
(define-module (cuirass send-events)
#:use-module (cuirass config)
#:use-module (cuirass database)
#:use-module (cuirass utils)
#:use-module (cuirass logging)
#:use-module (web client)
#:use-module (json)
#:use-module (srfi srfi-1)
#:export (send-build-events))
(define* (send-build-events target-url
#:key (batch-limit 100))
(let ((events-to-send
(db-get-build-events-in-outbox batch-limit)))
(unless (null? events-to-send)
(http-post target-url
#:body (object->json-string
`((events . ,(list->vector events-to-send)))))
(db-delete-build-events-from-outbox-with-ids-<=-to
(peek (assq-ref (last events-to-send) #:id)))
(simple-format #t "Sent ~A events\n" (length events-to-send)))))
|