Pituophis API

class pituophis.Item(itype='i', text='', path='/', host='', port=0)

Bases: object

Server/Client. Represents an item in a Gopher menu.

host = None

The hostname of the target server.

path = None

Where the item links to on the target server.

port = None

The port of the target server; most commonly 70.

request()

Returns a Request to where the item leads.

source()

Returns the item as a line in a Gopher menu.

text = None

The name, or text that is displayed when the item is in a menu.

type = None

The type of item.

class pituophis.Request(host='127.0.0.1', port=70, advertised_port=None, path='/', query='', itype='9', client='', pub_dir='pub/', alt_handler=False)

Bases: object

Client/Server. Represents a request to be sent to a Gopher server, or received from a client.

advertised_port = None

Server. Used by the default handler. Set this if the server itself is being hosted on another port than the advertised port (like port 70), with a firewall or some other software rerouting that port to the server’s real port.

client = None

Server. The IP address of the connected client.

get()

Client. Sends the request and returns a Response object.

host = None

Client/Server. The hostname of the server.

path = None

Client/Server. The selector string to request, or being requested.

port = None

Client/Server. The port of the server. For regular Gopher servers, this is most commonly 70, and for S/Gopher servers it is typically 105.

pub_dir = None

Server. The default handler uses this as which directory to serve. Default is ‘pub/’.

query = None

Client/Server. Search query for the server to process. Omitted when blank.

stream()

Client. Lower-level fetching. Sends the request and returns a BufferedReader.

type = None

Client. Item type of the request. Purely for client-side usage, not used when sending or receiving requests.

url()

Returns a URL equivalent to the Request’s properties.

class pituophis.Response(stream)

Bases: object

Client. Returned by Request.get() and get(). Represents a received binary object from a Gopher server.

binary = None

The data received from the server as a Bytes binary object.

menu()

Decodes the binary as UTF-8 text and parses it as a Gopher menu. Returns a List of Gopher menu items parsed as the Item type.

text()

Returns the binary decoded as a UTF-8 String.

pituophis.get(host, port=70, path='/', query='')

Client. Quickly creates and sends a Request. Returns a Response object.

pituophis.handle(request)

Server. Default handler function for Gopher requests while hosting a server. Serves files and directories from the pub/ directory by default, but the path can be changed in serve’s pub_dir argument or changing the Request’s pub_dir directory.

pituophis.parse_gophermap(source, def_host='127.0.0.1', def_port='70', gophermap_dir='/', pub_dir='pub/')

Server. Converts a Bucktooth-style Gophermap (as a String or List) into a Gopher menu as a List of Items to send.

pituophis.parse_menu(source)

Client. Parses a String as a Gopher menu. Returns a List of Items.

pituophis.parse_url(url)

Client. Parses a Gopher URL and returns an equivalent Request.

pituophis.serve(host='127.0.0.1', port=70, advertised_port=None, handler=<function handle>, pub_dir='pub/', alt_handler=False, debug=True)

Server. Starts serving Gopher requests. Allows for using a custom handler that will return a Bytes, String, or List object (which can contain either Strings or Items) to send to the client, or the default handler which can serve a directory. Along with the default handler, you can set an alternate handler to use if a 404 error is generated for dynamic applications. send_period is good practice to the RFC and required for some clients to work.