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
