summaryrefslogtreecommitdiff
path: root/src/scm/webid-oidc/resource-server.scm
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2021-08-07 22:45:06 +0200
committerVivien Kraus <vivien@planete-kraus.eu>2021-08-13 01:06:38 +0200
commitdb55d55e5c36c940986f437d26da1ff3c601c3b4 (patch)
tree0ecec5b2bd0b0bc6a02981a7c3b9ccafbb891c3b /src/scm/webid-oidc/resource-server.scm
parent0b5d0622e11c1f919ce660893067d3121e2583a0 (diff)
Make a better client API
Diffstat (limited to 'src/scm/webid-oidc/resource-server.scm')
-rw-r--r--src/scm/webid-oidc/resource-server.scm16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/scm/webid-oidc/resource-server.scm b/src/scm/webid-oidc/resource-server.scm
index 14d8b81..5ee84db 100644
--- a/src/scm/webid-oidc/resource-server.scm
+++ b/src/scm/webid-oidc/resource-server.scm
@@ -1,4 +1,4 @@
-;; webid-oidc, implementation of the Solid specification
+;; disfluid, implementation of the Solid specification
;; Copyright (C) 2020, 2021 Vivien Kraus
;; This program is free software: you can redistribute it and/or modify
@@ -42,6 +42,7 @@
#:use-module (ice-9 getopt-long)
#:use-module (ice-9 suspendable-ports)
#:use-module (ice-9 control)
+ #:use-module (ice-9 match)
#:use-module (sxml simple)
#:use-module (srfi srfi-19))
@@ -87,7 +88,18 @@
(error->str error))
#f)
(lambda ()
- (let* ((lit-access-token (symbol->string (cadr authz)))
+ ;; Sometimes the access is the cadr as a symbol,
+ ;; sometimes it is the cdr as a string. It depends
+ ;; whether the response has been written and read,
+ ;; or preserved as a guile object.
+ (let* ((lit-access-token
+ (match authz
+ ;; That’s when the request is parsed:
+ (('dpop (? symbol? symbol-value))
+ (symbol->string symbol-value))
+ ;; That’s when it’s not:
+ (('dpop . (? string? string-value))
+ string-value)))
(access-token
(access-token-decode lit-access-token
#:http-get http-get))