diff options
author | Vivien Kraus <vivien@planete-kraus.eu> | 2021-08-07 22:45:06 +0200 |
---|---|---|
committer | Vivien Kraus <vivien@planete-kraus.eu> | 2021-08-13 01:06:38 +0200 |
commit | db55d55e5c36c940986f437d26da1ff3c601c3b4 (patch) | |
tree | 0ecec5b2bd0b0bc6a02981a7c3b9ccafbb891c3b /src/scm/webid-oidc/resource-server.scm | |
parent | 0b5d0622e11c1f919ce660893067d3121e2583a0 (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.scm | 16 |
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)) |