summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2022-07-30 15:50:05 -0400
committerBen Sima <ben@bsima.me>2022-07-30 15:50:05 -0400
commit723ad177189f8055e5ca01503f091dc920f8854b (patch)
tree50acd23d6e6adc455dd8e08f863f2057f7fe515e
parent1640d9272c1c03b5e253952f905fec96e087e2d0 (diff)
Add some functions for getting gemini status codesHEADmaster
-rw-r--r--gemini.cl26
1 files changed, 26 insertions, 0 deletions
diff --git a/gemini.cl b/gemini.cl
new file mode 100644
index 0000000..9460439
--- /dev/null
+++ b/gemini.cl
@@ -0,0 +1,26 @@
+(defun reverse-alist (alist)
+ (loop for (a . b) in alist collect `(,b . ,a)))
+
+(defvar +status-codes+
+ '((10 . :input)
+ (11 . :sensitive-input)
+ (20 . :success)
+ (30 . :redirect)
+ (40 . :temporary-failure)
+ (41 . :server-unavailable)
+ (42 . :gci-error)
+ (43 . :proxy-error)
+ (44 . :slow-down)
+ (50 . :permanent-failure)
+ (51 . :not-found)
+ (52 . :gone)
+ (59 . :bad-request)
+ (60 . :client-certificate-required)
+ (61 . :certificate-not-authorised)
+ (62 . :certificate-not-valid)))
+
+(defun number->status (num)
+ (cdr (assoc num +status-codes+)))
+
+(defun status->number (key)
+ (cdr (assoc key (reverse-alist +status-codes+))))