RemiGemini
RemiGemini is an extremely small and lightweight library for interfacing with the Gemini Protocol using the Crystal programming language. It includes classes that aid in the implementation of clients and servers.
Example Usage
A simple client:
require "./src/remigemini" RemiGemini::Client.get(ARGV[0], noVerify: true) do |resp| puts "Response Status: #{resp.status}" puts "Response message: #{resp.meta}" puts resp.body end
A very simple server:
require "./src/remigemini" if ARGV.size != 2 abort("Usage: #{File.basename(PROGRAM_NAME)}") end server = RemiGemini::Server.new do |request| if request.uri.path == "" || request.uri.path == "/" resp = RemiGemini::Client::Response.new("Hello, world!") resp.to_io(request.sock) else resp = RemiGemini::Client::Response.new(RemiGemini::StatusCode::NotFound, "Nothing yet :(") resp.to_io(request.sock) end end address = server.bind("localhost", ARGV[0], ARGV[1], port: 8069) puts "Listening on gemini://#{address}" server.listen