1
0
Fork 0
A CLI program which grabs data from the Return to Ritherdon project's REST API server.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 

37 lines
1.6 KiB

;;;; ritherdon-rest.lisp
;;; A collection of functions to aid in the make
;;; http-requests to the Ritherdon REST API. This project is help me
;;; learn Common Lisp. So, there is not much emphasis on being too
;;; strict on best practices and defensive coding.
;;; NOTE: The Ritherdon REST API is part of an art exhibition at time
;;; of writing (29/06/2021). You will need to check if the server is
;;; still running if you want to run this code.
(in-package #:ritherdon-rest)
;; All the data provided by the Ritherdon REST API is in JSON. Becuase
;; of this I can set the `TEXT-CONTENT-TYPE' to JSON and keep it like
;; that until further notice.
(setq drakma:*text-content-types* (cons '("application" . "json")
drakma:*text-content-types*))
;; The Base URL which you build all your HTTP Requests on. You will
;; need to refer back to http://ritherdon.abbether.net/api/ui/ for the
;; full set of URL's.
(defvar *base-url* "http://ritherdon.abbether.net/api")
;; The http-request is actually 'drakma:http-request'. I've done it
;; this way to highlight the feature. It is the same as what you've
;; used in the past with C# and 'using static' statements. So, not
;; much to go into here apart from highlighting it's a thing in Common
;; Lisp, too.
(defun make-request (query)
(http-request (concatenate 'string *base-url* query)))
;; Same as the drakma example above. It can read as
;; 'cl-json:decode-json-from-string' but omitted the 'cl-json'
;; bit. You will find all package declarations in /src/package.lisp'.
(defun parse-request (query)
(decode-json-from-string(make-request query)))