A Gemini protocol client library for Common Lisp. This does not implement a full client, just the core URL retrieval method. It is intended to be used in full clients, or scripts that need to retrieve data via Gemini, such as feed aggregators. https://jfm.carcosa.net
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.
Jason McBrayer a956be33ce Normalize IRIs before doing anything else with them 2 weeks ago
LICENSE.md Forgot to add license 1 month ago
README.md Add README 2 months ago
client.lisp Normalize IRIs before doing anything else with them 2 weeks ago
gemini-client.asd Normalize IRIs before doing anything else with them 2 weeks ago
package.lisp Normalize IRIs before doing anything else with them 2 weeks ago

README.md

CL-GEMINI-CLIENT

This is a very basic Gemini client library for Common Lisp. The interface is basically similar to that of the Drakma HTTP library. This isn’t a complete client; it includes basically only the networking routines you would build an actual client around, and is intended for use in actual clients and scripts such as feed aggregators.

Usage

CL-USER> (defparameter *my-response* (gemini-client:gemini-request
"gemini://medusae.space"))
*MY-RESPONSE*
CL-USER> (gemini-client:response-status *my-response*)
"20"
CL-USER> (gemini-client:response-meta *my-response*)
"text/gemini"

By default, gemini-request reads the whole response into either a string or a vector of bytes, depending on whether the content-type is text or not. You can pass the keyword argument :want-stream to get a binary stream, instead. Redirects will be automatically followed, with a default limit of 5 redirects. You can pass a client certificate in the :client-certificate keyword argument.