Skip to main content

Python 3 library for building Gopher clients and servers

Project description

Pituophis

Documentation Status PyPI version PyPI license

Python 3 library for building Gopher clients and servers

Pituophis, at the moment, requires eight modules: os, re, sockets, asyncio, ssl, mimetypes, glob, and urllib; all of which are standard in most Python 3.7 installations. Pituophis can simply be loaded as a module like this:

import pituophis

Client

Pituophis can grab files and text from Gopher servers (both S/Gopher TLS and regular Gopher) through the Request.get() and get() functions.

Examples

Getting menus and files as plain text:

pituophis.get('gopher.floodgap.com').text()
pituophis.get('gopher://gopher.floodgap.com/1/').text()
pituophis.get('gopher://gopher.floodgap.com:70/0/gopher/proxy').text()
pituophis.get(host='gopher.floodgap.com', port=70, path='/').text()
pituophis.get(host='gopher.floodgap.com', port=70, path='/gopher/proxy').text()
pituophis.get(host='khzae.net', port=105, path='/', tls=True).text() # TLS!
pituophis.get('gophers://khzae.net:105/1/').text() # gophers:// URLs!

Getting a menu, parsed:

menu = pituophis.get('gopher.floodgap.com').menu()
for selector in menu:
    print(selector.type)
    print(selector.text)
    print(selector.path)
    print(selector.host)
    print(selector.port)

Using search services:

pituophis.get('gopher://gopher.floodgap.com:70/7/v2/vs?toast').text()
pituophis.get(host='gopher.floodgap.com', port=70, path='/v2/vs', query='toast').text()

Downloading a binary:

pituophis.get('gopher://gopher.floodgap.com:70/9/gopher/clients/win/hgopher2_3.zip').binary
pituophis.get(host='gopher.floodgap.com', port=70, path='/gopher/clients/win/hgopher2_3.zip').binary

Requests can also be created and worked with directly:

import pituophis
req = pituophis.Request()
req.host = 'gopher.floodgap.com'  # set to 127.0.0.1 by default
req.port = 70  # set to 70 as default, as per tradition
req.type = '7'  # set to 9 by default, purely for client usage
req.path = '/v2/vs'  # set to '/' by default
req.query = 'food'  # set to '' (nothing) by default
req.tls = False  # set to False by default
print('Getting', req.url())
rsp = req.get()
print(rsp.text())

They can also be created from a URL:

import pituophis
req = pituophis.parse_url('gopher://gopher.floodgap.com/7/v2/vs?food')
print('Getting', req.url())
rsp = req.get()
print(rsp.text())

Server

Default Handler

Pituophis now lets you serve a directory. Serving gophermaps, directories, and files is supported out of the box.

server_def

Custom Handler

Pituophis also lets you write a custom handler for Gopher requests.

server

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

Pituophis-0.96.tar.gz (8.8 kB view details)

Uploaded Source

File details

Details for the file Pituophis-0.96.tar.gz.

File metadata

  • Download URL: Pituophis-0.96.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0

File hashes

Hashes for Pituophis-0.96.tar.gz
Algorithm Hash digest
SHA256 137863f44fd1ce76c39b961c3ab91b50a1c79b951e5687b117c467b1815ccdbc
MD5 55c6b54213b2c461829c4d2874cf9b18
BLAKE2b-256 264c49a01b69bdbad248fd7c05f7aea80613848057b58888baf557939de085bd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page