~hedy/spartan-py

Python library for spartan
ecf6dd7f — Hedy Li 3 years ago
fix typo in readme
9da53541 — Hedy Li 3 years ago
modify __repr__ for Request and update readme
5fcce53a — Hedy Li 3 years ago
dont include port in the host section of the reuqest

clone

read-only
https://git.sr.ht/~hedy/spartan-py
read/write
git@git.sr.ht:~hedy/spartan-py

You can also use your local clone with git send-email.

#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