Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kulak/gemini
gemini protocol implementation using http style handling
https://github.com/kulak/gemini
Last synced: 2 months ago
JSON representation
gemini protocol implementation using http style handling
- Host: GitHub
- URL: https://github.com/kulak/gemini
- Owner: kulak
- License: mit
- Created: 2021-08-30T02:39:55.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-17T01:30:39.000Z (3 months ago)
- Last Synced: 2024-10-19T02:25:04.629Z (3 months ago)
- Language: Go
- Size: 24.4 KB
- Stars: 6
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-gemini - gemini - Server side Gemini protocol + Titan protocol implementation that matches standard GO http API. (Programming / Graphical)
README
# Gemini
[Gemini protocol](https://gitlab.com/gemini-specification/protocol/-/blob/master/specification.gmi) and [Titan protocol](https://communitywiki.org/wiki/Titan) GO package for the server using [net/http](https://pkg.go.dev/net/http) style API.
The package was created after attempt to use a couple of existing libraries for the server side and not finding those satisfactory in terms of exposed API.
The package follows core design pattern used in standard [net/http](https://pkg.go.dev/net/http) package. API correlation made it possible to adapt [julienschmidt/httprouter](https://github.com/julienschmidt/httprouter) package to GEMINI protocol in [geminirouter](https://github.com/kulak/geminirouter) package.
Titan protocol tested with [Lagrange](https://git.skyjake.fi/gemini/lagrange) browser.
Current implementation is server focused and does not provide API to send requests to GEMINI server.
At the server level library implements GEMINI and TITAN protocols including support for Client certificates.
## Example Server
To run server one needs to generate appropriate server certificate.
Run example server:
make run
## Known Issues
`getRequest` function reading request bytes is functional, but seems to be ineficient.