💾 Archived View for rawtext.club › ~sloum › geminilist › 005851.gmi captured on 2024-03-21 at 16:36:57. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

<-- back to the mailing list

[spec] ☿️ gemini — a minimalist gemini protocol

Petite Abeille petite.abeille at gmail.com

Tue Mar 2 11:58:08 GMT 2021

- - - - - - - - - - - - - - - - - - - 

All details are similar to gemini itself, ± some minor adjustments.

✂︎・・・・・・・・・・

☿️://☿️

By default, a ☿️ gemini service runs over plain TCP, at port 1961.

A ☿️ gemini:// request is one-line —4,096 bytes long at most, UTF-8 encoded— containing a fully qualified, normalized Internationalized Resource Identifier (IRI):

gemini://host.xyz:1961/

An IRI is an UTF-8 version of an Uniform Resource Identifier (URI). An URI can be either an Uniform Resource Locator (URL), or Uniform Resource Name (URN).

✂︎・・・・・・・・・・

An example of a ☿️ gemini request, followed by a ☿️ text/gemini response:

echo -e 'gemini://gemini.xyz:1961/\r\n' | nc 127.0.0.1 196120 text/gemini;charset=utf-8;Hello ☿️ Gemini!

=

gemini://host.xyz:1961/license CC0-1.0 <end of connection>

A successful ☿️ gemini response is a one-line with status 20—optionally followed by a content type, plus associated attributes, such as encoding:

20 text/gemini;charset=utf-8;

The content type is optional — defaulting to ☿️ text/gemini, UTF-8 encoded.

The content itself follow the 20 status line — terminated by the service dropping the network connection.

✂︎・・・・・・・・・・

There are 3 status codes:

20 SUCCESS — one-line, with optional content type, plus attributes, 4,096 bytes long at most, UTF-8 encoded20 text/gemini;charset=utf-8;

30 REDIRECT — one-line IRI, fully qualified, and normalized, 4,096 bytes long at most, UTF-8 encoded30 gemini://host.xyz:1961/

40 ERROR — one-line, 4,096 bytes long at most, UTF-8 encoded, with optional description 40 ⚠︎☿️⚠︎

✂︎・・・・・・・・・・

A ☿️ text/gemini consists of two line types: text, and link.

A link is denoted as one-line, starting with the arrow symbol (=

), followed by a space, followed by a fully qualified, and normalized IRI — optionally followed by a space separated description:

=

gemini://host.xyz/license CC0-1.0

All other lines are regular text lines.

✂︎・・・・・・・・・・

That's all folks.

±0¢