README

gopher.cr

Gopher Protocol

The Gopher protocol consists of 2 phases: request & response.

Like its relative HTTP, clients makes a request for a URI to the server, and the server responds.
Unlike HTTP, however, there are no headers, caching, MIME response types, keepalives, etc.
This makes the protocol both simpler and less featureful.

Requests

A request to a gopher:// server consists of a single line, containing a URI (called a selector):

/1stuff/1and/1nonsense/0intro.txt\r\n

the server then resolves that request into a response, and renders it back to the client.

Responses

A Response can be one of 3 things:

a menu of further choices a user can make

a resource (a file, or a another server)

an error

A copy of the RFC that describes the protocol is [included in this repo][rfc]

Using this library

To use this library, you need to:

Create a Server object

Provide it with Resolver(s) that instruct it how to find content

Tell the server to listen for requests!

A good example for how this can be done exists in src/example.cr

If you're looking for a more turnkey solution, check out its sister project
Port70.

Development

About
Your go-to Crystal Toolbox.
Our goal is to help you find the software and libraries you need.
Made by developers for developers.
The collection of libraries and resources is based on the
Awesome Crystal List and direct contributions here.
To add a new shard, please, check the contribute section.