summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2020-01-01 00:00:00 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2021-06-19 15:44:24 +0200
commitaf49e0e41d8283439ff741d6ed832fd84a50be0a (patch)
treeadb600c4a654b2d53d3816ca89cb151772075253 /src/scm/webid-oidc
parentc5c5770f44963cc7d677f13cb69f0babbd202b40 (diff)
Set up the guile project
Diffstat (limited to 'src/scm/webid-oidc')
-rw-r--r--src/scm/webid-oidc/Makefile.am7
-rw-r--r--src/scm/webid-oidc/errors.scm30
2 files changed, 37 insertions, 0 deletions
diff --git a/src/scm/webid-oidc/Makefile.am b/src/scm/webid-oidc/Makefile.am
new file mode 100644
index 0000000..48a41f7
--- /dev/null
+++ b/src/scm/webid-oidc/Makefile.am
@@ -0,0 +1,7 @@
+dist_webidoidcmod_DATA += \
+ %reldir%/errors.scm
+
+webidoidcgo_DATA += \
+ %reldir%/errors.go
+
+EXTRA_DIST += %reldir%/ChangeLog
diff --git a/src/scm/webid-oidc/errors.scm b/src/scm/webid-oidc/errors.scm
new file mode 100644
index 0000000..b8d7382
--- /dev/null
+++ b/src/scm/webid-oidc/errors.scm
@@ -0,0 +1,30 @@
+(define-module (webid-oidc errors)
+ #:use-module (ice-9 exceptions)
+ #:use-module (ice-9 optargs)
+ #:use-module (ice-9 i18n))
+
+(define (G_ text)
+ (let ((out (gettext text)))
+ (if (string=? out text)
+ ;; No translation, disambiguate
+ (car (reverse (string-split text #\|)))
+ out)))
+
+;; This is a collection of all errors that can happen, and a function
+;; to log them.
+
+(define*-public (error->str error #:key (max-depth #f))
+ (if (record? error)
+ (let* ((type (record-type-descriptor error))
+ (get
+ (lambda (slot)
+ ((record-accessor type slot) error)))
+ (recurse
+ (if (eqv? max-depth 0)
+ (lambda (err) (G_ "that’s how it is"))
+ (lambda (err)
+ (error->str err #:max-depth (and max-depth (- max-depth 1)))))))
+ (case (record-type-name type)
+ (else
+ (error (format #f "Unhandled exception type ~a." (record-type-name type))))))
+ (format #f "~a" error)))