API Documentation will go here¶
mambaex http server library¶
Mambaex is an HTTP server library, written in Python, for creating a simplified webservice in ease manner.
Basic GET usage:
>>> from mambaex import MambaexApps
>>> r = MambaexApps.getOrCreateApp('<nameOfServer>')
The other methods are supported - see mambaex.api. Full documentation is at <https://mambaex.readthedocs.io>.
copyright: |
|
---|---|
license: | MIT License, see LICENSE for more details. |
-
class
mambaex.
MambaexApps
[source]¶ Bases:
object
A class to maintain the multiple port listner servers
-
class
mambaex.mambaexApp.
MambaexApp
(name)[source]¶ Bases:
http.server.BaseHTTPRequestHandler
A class for handling server instance
-
MessageClass
¶ alias of
http.client.HTTPMessage
-
address_string
()¶ Return the client address.
-
date_time_string
(timestamp=None)¶ Return the current date and time formatted for a message header.
-
default_request_version
= 'HTTP/0.9'¶
-
delete
(path, callback)[source]¶ Add the callback function defination to the stack of the DELETE method of given path
Parameters: - path (string) – A path string/regex string to match
- callback (function) – A function to callback
Returns: app itself for chaining avability
Return type:
-
disable_nagle_algorithm
= False¶
-
end_headers
()¶ Send the blank line ending the MIME headers.
-
error_content_type
= 'text/html;charset=utf-8'¶
-
error_message_format
= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n "http://www.w3.org/TR/html4/strict.dtd">\n<html>\n <head>\n <meta http-equiv="Content-Type" content="text/html;charset=utf-8">\n <title>Error response</title>\n </head>\n <body>\n <h1>Error response</h1>\n <p>Error code: %(code)d</p>\n <p>Message: %(message)s.</p>\n <p>Error code explanation: %(code)s - %(explain)s.</p>\n </body>\n</html>\n'¶
-
finish
()¶
-
flush_headers
()¶
-
get
(path, callback)[source]¶ Add the callback function defination to the stack of the GET method of given path
Parameters: - path (string) – A path string/regex string to match
- callback (function) – A function to callback
Returns: app itself for chaining avability
Return type:
-
handle
()¶ Handle multiple requests if necessary.
-
handle_expect_100
()¶ Decide what to do with an “Expect: 100-continue” header.
If the client is expecting a 100 Continue response, we must respond with either a 100 Continue or a final response before waiting for the request body. The default is to always respond with a 100 Continue. You can behave differently (for example, reject unauthorized requests) by overriding this method.
This method should either return True (possibly after sending a 100 Continue response) or send an error response and return False.
-
handle_one_request
()¶ Handle a single HTTP request.
You normally don’t need to override this method; see the class __doc__ string for information on how to handle specific HTTP commands such as GET and POST.
-
listen
(port)[source]¶ Start listening to port
Parameters: port (int) – A port at which it starts listening Returns: app itself for chaining avability Return type: MambaexApp
-
log_date_time_string
()¶ Return the current time formatted for logging.
-
log_error
(format, *args)¶ Log an error.
This is called when a request cannot be fulfilled. By default it passes the message on to log_message().
Arguments are the same as for log_message().
XXX This should go to the separate error log.
-
log_message
(format, *args)¶ Log an arbitrary message.
This is used by all other logging functions. Override it if you have specific logging wishes.
The first argument, FORMAT, is a format string for the message to be logged. If the format string contains any % escapes requiring parameters, they should be specified as subsequent arguments (it’s just like printf!).
The client ip and current date/time are prefixed to every message.
-
log_request
(code='-', size='-')¶ Log an accepted request.
This is called by send_response().
-
monthname
= [None, 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']¶
-
parse_request
()¶ Parse a request (internal).
The request should be stored in self.raw_requestline; the results are in self.command, self.path, self.request_version and self.headers.
Return True for success, False for failure; on failure, any relevant error response has already been sent back.
-
patch
(path, callback)[source]¶ Add the callback function defination to the stack of the PATCH method of given path
Parameters: - path (string) – A path string/regex string to match
- callback (function) – A function to callback
Returns: app itself for chaining avability
Return type:
-
post
(path, callback)[source]¶ Add the callback function defination to the stack of the POST method of given path
Parameters: - path (string) – A path string/regex string to match
- callback (function) – A function to callback
Returns: app itself for chaining avability
Return type:
-
protocol_version
= 'HTTP/1.0'¶
-
put
(path, callback)[source]¶ Add the callback function defination to the stack of the PUT method of given path :param string path: A path string/regex string to match :param function callback: A function to callback :return: app itself for chaining avability :rtype: MambaexApp
-
rbufsize
= -1¶
-
responses
= {<HTTPStatus.CONTINUE: 100>: ('Continue', 'Request received, please continue'), <HTTPStatus.SWITCHING_PROTOCOLS: 101>: ('Switching Protocols', 'Switching to new protocol; obey Upgrade header'), <HTTPStatus.PROCESSING: 102>: ('Processing', ''), <HTTPStatus.OK: 200>: ('OK', 'Request fulfilled, document follows'), <HTTPStatus.CREATED: 201>: ('Created', 'Document created, URL follows'), <HTTPStatus.ACCEPTED: 202>: ('Accepted', 'Request accepted, processing continues off-line'), <HTTPStatus.NON_AUTHORITATIVE_INFORMATION: 203>: ('Non-Authoritative Information', 'Request fulfilled from cache'), <HTTPStatus.NO_CONTENT: 204>: ('No Content', 'Request fulfilled, nothing follows'), <HTTPStatus.RESET_CONTENT: 205>: ('Reset Content', 'Clear input form for further input'), <HTTPStatus.PARTIAL_CONTENT: 206>: ('Partial Content', 'Partial content follows'), <HTTPStatus.MULTI_STATUS: 207>: ('Multi-Status', ''), <HTTPStatus.ALREADY_REPORTED: 208>: ('Already Reported', ''), <HTTPStatus.IM_USED: 226>: ('IM Used', ''), <HTTPStatus.MULTIPLE_CHOICES: 300>: ('Multiple Choices', 'Object has several resources -- see URI list'), <HTTPStatus.MOVED_PERMANENTLY: 301>: ('Moved Permanently', 'Object moved permanently -- see URI list'), <HTTPStatus.FOUND: 302>: ('Found', 'Object moved temporarily -- see URI list'), <HTTPStatus.SEE_OTHER: 303>: ('See Other', 'Object moved -- see Method and URL list'), <HTTPStatus.NOT_MODIFIED: 304>: ('Not Modified', 'Document has not changed since given time'), <HTTPStatus.USE_PROXY: 305>: ('Use Proxy', 'You must use proxy specified in Location to access this resource'), <HTTPStatus.TEMPORARY_REDIRECT: 307>: ('Temporary Redirect', 'Object moved temporarily -- see URI list'), <HTTPStatus.PERMANENT_REDIRECT: 308>: ('Permanent Redirect', 'Object moved permanently -- see URI list'), <HTTPStatus.BAD_REQUEST: 400>: ('Bad Request', 'Bad request syntax or unsupported method'), <HTTPStatus.UNAUTHORIZED: 401>: ('Unauthorized', 'No permission -- see authorization schemes'), <HTTPStatus.PAYMENT_REQUIRED: 402>: ('Payment Required', 'No payment -- see charging schemes'), <HTTPStatus.FORBIDDEN: 403>: ('Forbidden', 'Request forbidden -- authorization will not help'), <HTTPStatus.NOT_FOUND: 404>: ('Not Found', 'Nothing matches the given URI'), <HTTPStatus.METHOD_NOT_ALLOWED: 405>: ('Method Not Allowed', 'Specified method is invalid for this resource'), <HTTPStatus.NOT_ACCEPTABLE: 406>: ('Not Acceptable', 'URI not available in preferred format'), <HTTPStatus.PROXY_AUTHENTICATION_REQUIRED: 407>: ('Proxy Authentication Required', 'You must authenticate with this proxy before proceeding'), <HTTPStatus.REQUEST_TIMEOUT: 408>: ('Request Timeout', 'Request timed out; try again later'), <HTTPStatus.CONFLICT: 409>: ('Conflict', 'Request conflict'), <HTTPStatus.GONE: 410>: ('Gone', 'URI no longer exists and has been permanently removed'), <HTTPStatus.LENGTH_REQUIRED: 411>: ('Length Required', 'Client must specify Content-Length'), <HTTPStatus.PRECONDITION_FAILED: 412>: ('Precondition Failed', 'Precondition in headers is false'), <HTTPStatus.REQUEST_ENTITY_TOO_LARGE: 413>: ('Request Entity Too Large', 'Entity is too large'), <HTTPStatus.REQUEST_URI_TOO_LONG: 414>: ('Request-URI Too Long', 'URI is too long'), <HTTPStatus.UNSUPPORTED_MEDIA_TYPE: 415>: ('Unsupported Media Type', 'Entity body in unsupported format'), <HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE: 416>: ('Requested Range Not Satisfiable', 'Cannot satisfy request range'), <HTTPStatus.EXPECTATION_FAILED: 417>: ('Expectation Failed', 'Expect condition could not be satisfied'), <HTTPStatus.MISDIRECTED_REQUEST: 421>: ('Misdirected Request', 'Server is not able to produce a response'), <HTTPStatus.UNPROCESSABLE_ENTITY: 422>: ('Unprocessable Entity', ''), <HTTPStatus.LOCKED: 423>: ('Locked', ''), <HTTPStatus.FAILED_DEPENDENCY: 424>: ('Failed Dependency', ''), <HTTPStatus.UPGRADE_REQUIRED: 426>: ('Upgrade Required', ''), <HTTPStatus.PRECONDITION_REQUIRED: 428>: ('Precondition Required', 'The origin server requires the request to be conditional'), <HTTPStatus.TOO_MANY_REQUESTS: 429>: ('Too Many Requests', 'The user has sent too many requests in a given amount of time ("rate limiting")'), <HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE: 431>: ('Request Header Fields Too Large', 'The server is unwilling to process the request because its header fields are too large'), <HTTPStatus.INTERNAL_SERVER_ERROR: 500>: ('Internal Server Error', 'Server got itself in trouble'), <HTTPStatus.NOT_IMPLEMENTED: 501>: ('Not Implemented', 'Server does not support this operation'), <HTTPStatus.BAD_GATEWAY: 502>: ('Bad Gateway', 'Invalid responses from another server/proxy'), <HTTPStatus.SERVICE_UNAVAILABLE: 503>: ('Service Unavailable', 'The server cannot process the request due to a high load'), <HTTPStatus.GATEWAY_TIMEOUT: 504>: ('Gateway Timeout', 'The gateway server did not receive a timely response'), <HTTPStatus.HTTP_VERSION_NOT_SUPPORTED: 505>: ('HTTP Version Not Supported', 'Cannot fulfill request'), <HTTPStatus.VARIANT_ALSO_NEGOTIATES: 506>: ('Variant Also Negotiates', ''), <HTTPStatus.INSUFFICIENT_STORAGE: 507>: ('Insufficient Storage', ''), <HTTPStatus.LOOP_DETECTED: 508>: ('Loop Detected', ''), <HTTPStatus.NOT_EXTENDED: 510>: ('Not Extended', ''), <HTTPStatus.NETWORK_AUTHENTICATION_REQUIRED: 511>: ('Network Authentication Required', 'The client needs to authenticate to gain network access')}¶
-
send_error
(code, message=None, explain=None)¶ Send and log an error reply.
Arguments are * code: an HTTP error code
3 digits- message: a simple optional 1 line reason phrase.
- *( HTAB / SP / VCHAR / %x80-FF ) defaults to short entry matching the response code
- explain: a detailed message defaults to the long entry
- matching the response code.
This sends an error response (so it must be called before any output has been generated), logs the error, and finally sends a piece of HTML explaining the error to the user.
-
send_header
(keyword, value)¶ Send a MIME header to the headers buffer.
-
send_response
(code, message=None)¶ Add the response header to the headers buffer and log the response code.
Also send two standard headers with the server software version and the current date.
-
send_response_only
(code, message=None)¶ Send the response header only.
-
server_version
= 'BaseHTTP/0.6'¶
-
setup
()¶
-
stop
()[source]¶ Use to stop listening
Returns: app itself for chaining avability Return type: MambaexApp
-
sys_version
= 'Python/3.7.9'¶
-
timeout
= None¶
-
use
(path, callback)[source]¶ Add the callback function defination to the stack of the ALL method of given path
Parameters: - path (string) – A path string/regex string to match
- callback (function) – A function to callback
Returns: app itself for chaining avability
Return type:
-
version_string
()¶ Return the server software version string.
-
wbufsize
= 0¶
-
weekdayname
= ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']¶
-