The Piper networking protocol in Python.
Project description
Pyper
The Piper networking protocol in Python.
How to install?
The version on pypi is the stable version, and the version on github is the development version.
To get it from pypi use:
pip3 install pyper-piper
To install from github use:
pip3 install git+https://github.com/Bigjango13/Pyper
If you are making you're own changes to pyper it can be installed with
pip3 install path/to/pyper
How to use?
An example server and an example client can be found under the examples directory.
Common
Piper specification version
The piper specification version that pyper is currently based on can be accesesed throught the piperSpecVersion
variables.
Content types
These content types can be used instead of the ids for content types, here they are:
utf8
(00)
gemtext
(01)
ascii
(02)
file
(10)
redirect
(20)
notFound
(22)
internalError
(23)
specVersion
(24)
There are also some content types from libpiper for compatibility.
clientOutOfMemory
(F0)
clientConnectionError
(F1)
clientInternalError
(F2)
There is also one I added to handle invaid data sent from the server.
clientInvalidData
(F3)
There is also a dictonary that can be used to translate the content types into more human friendly variants, it is called contentType
.
Debugging
The pyperDebug
variable will toggle printing the packets, it defaults to whatever PYPER_DEBUG
is set to (None in most cases) but can be changed in python.
Client
getUrlRedirect(originalUrl, originalUrlPort, url)
Takes the current url, the current port, and the url that the current url is telling you to redirect to.
Gets the url to redirect to and returns the arguments for pyper.client.connect
.
getHostname(ip, port, path, args)
Return the formated url.
connectFromUrl(url)
Returns the arguments for pyper.client.connect
(excluding redirectsAllowed
) from a piper url.
connect(ip, port, path, options, redirectsAllowed)
Connects to a piper server based on the ip, port, path, and options.
If redirectsAllowed
is not equal to zero it will also automatically follow redirects and remove one from redirectsAllowed
, if it is set below zero it will always redirect.
Server
PyperServer
__init__(port)
Creates a pyper server and binds it to the ip and port.
start()
Starts the server.
parseRequest(path)
Meant to be used as a decorator, it maps a function to a path.
For example:
import pyper
pyperServer = pyper.server.PyperServer()
@pyperServer.parseRequest("/")
def index(request):
return pyper.common.ascii, "This is the index"
pyperServer.start()
if the option is "*" pyper will use it as a fallback for when a page isn't found (good for making a custom 0x22 page).
request
is dictionary that includes client_addr
(the address of the client), options
(a dictionary of the url options), and path
(the url path).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pyper-piper-0.1.6.tar.gz
.
File metadata
- Download URL: pyper-piper-0.1.6.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8454dfc9b8a7fa8c793082f24e303b1da04907b2b8798f9c2f164aa456e13237 |
|
MD5 | fa638e748255e835120ca596ec101dea |
|
BLAKE2b-256 | 90a6368bb5fb1f97cd959e01509343b9ece7be744c82e7f1b9226064f8cb0eaa |