Python library for spartan
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hedy Li ecf6dd7f11
fix typo in readme
2 months ago
spartan modify __repr__ for Request and update readme 2 months ago
tests initial 2 months ago
.gitignore ignore 2 months ago
LICENSE did I seriously forgot to add license lol 2 months ago
README.md fix typo in readme 2 months ago
pyproject.toml fix typo in readme 2 months ago

README.md

spartan-py

Basic spartan protocol implementation as a python library.

import spartan

res = spartan.get("spartan://mozz.us/echo", "hi")
while True:
    buf = res.read()
    if not buf:
        break
    sys.stdout.buffer.write(buf)
res.close()

Try it in the REPL:

>>> import spartan
>>> req = spartan.Request("spartan.mozz.us")
>>> req
Request(host='spartan.mozz.us', port=300, path='/') data-length=0
>>> print(req)
'spartan.mozz.us / 0'
>>> res = req.send()
>>> res
2 text/gemini
>>> res.read()
[...]
>>> res.close()

install

pip3 install spartan-py

API

  • Request(host: str, port: int = 300, path: str = "/", data: str = "")
    • send() -> Response - send the request
    • __repr__()
    • __str__()
  • Response(socket)
    • read()
    • close() - close the socket
    • .status - status code
    • .meta - meta string for the status
    • .file - socket file
    • .request - the Request object for this response
    • __repr__()
    • __str__()
  • Status - statuses
    • success = 2
    • redirect = 3
    • client_error = 4
    • server_error = 5
  • get(url: str, data: str = "") -> Response - if the query string part in the URL exists, data will be ignored.

TODO

  • invalid url handling
  • util functions like parsing meta and getting status type
  • basic CLI usage
  • async methods