A http server with fluent interface decorators, and plain text configuration
Project description
HTTP Server
Server which runs Hyper Text Transport Protocol
Check it out at PYPI
Server parameters
config=ConfiguratorSpecify a configurator. UseFluentConfiguratorfor type hints orConfiguratorfor plain textloglevel=LogLevel.loggingChoose a logging or console form reportingrefresh_rate=0.1Socket connection refresh ratecache_max_size=4e9Max cache size
Download
pip install ihttpy
Fluent Example
import ...
config = FluentConfigurator()
@config.on(Method.GET).at('/')
def index(req: Request, srv: Server)
return Response(200, 'OK')
config._host = '0.0.0.0'
config._port = 8000
server = Server(config, loglevel=LogLevel.CONSOLE)
with server as s:
s.run()
Running the tests
python3 -m unittests discover tests/
Plaintext Config settings
-
rulesIs a map with regular language- use square braces for any match (same as .*? in re)
- type [
name] inside braces to set named group - use match names in found path
example:
query"/[day]-[n]/[month]/[year]" : "/pictures/[year]/[month]/[day]/[n].pnglocalhost:8000/27-me/09/2000will display a photo/pictures/2000/09/27/me.pngif exists
-
hostChose server host- use
localhostto run locally
- use
-
portSpecify port for server to listen- default is
8000
- default is
-
error-pagesused by Errors class
Dynamic handlers configuration
if you want more handling control:
- specify
pathfield for static file response - use
handlerobject description assourceto choose handler pathpostname of function to handle POST requestgetname of function to handle GET request
- specify
headersfor additional headers to be added
-
static file response
localhost:8000/my_guest_bookurl"/my_guest_book": "tmp/my_guest_book.html",router will match this url and send file
tmp/my_guest_book.html -
custom GET handler for
localhost:8000/postsurl"/posts": { "handler": { "source": "handlers/my_guest_book.py", "get": "get_posts" } }this will start loaded
sourcehandler search for url and callget_postsfunction -
custom POST handler for
localhost:8000/posturl"/post": { "handler": { "source": "handlers/my_guest_book.py", "post": "handle_post" } }it will call
handle_postfunction fromsourcefound handler and process request in that module
Dynamic handlers usage
Handlers should be added as modules with 1 or 2 functions (which are
configured if config.json as it was described in
here)
Its signature needs to be
def function(request: Request, server: Server) -> Response:
Here you can use Server and Request that is being processed
Request structure:
self.method- request method (GET/POST)self.target- urlself.version- HTTP versionself.headers- headers dictionaryself.body- request body
Use this properties as you need to process the request
Logging and debug
If you want std.out as primary output use -l console
If you want file as output use -l logging
There is a logger.py for server info logging and debug, configure
LOGGER_PATH and LOG_DEBUG_PATH in defenitions.py
Author
- Ruslan Sirazhetdinov - Project creator, UrFU Student
Supervisor
- Viktor Samun - UrFU Python headquaters
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ihttpy-2.1.0.tar.gz.
File metadata
- Download URL: ihttpy-2.1.0.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f391b7bd07c5d1ad61192f3ecccdff7538cfab7f9a5ee6609c5bb67d0278b93
|
|
| MD5 |
6c38288fee375226db46fe7bdfa1341e
|
|
| BLAKE2b-256 |
c03492be29400c2598038aac3ae64adaa64b8bdb4c32a334b416df77a59ff630
|
File details
Details for the file ihttpy-2.1.0-py3-none-any.whl.
File metadata
- Download URL: ihttpy-2.1.0-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b19827eed81dd0f857634dd4b9932903375d8ae120531d876d2b299548376c6
|
|
| MD5 |
a07177c5cd3754203c7a6d093ea7067f
|
|
| BLAKE2b-256 |
21877b0b65d463d58d48f056c17b5798329414f74b17b733b95b08accceec7cd
|