Skip to main content

Dynamically configurable server

Project description

loose-server

https://travis-ci.com/KillAChicken/loose-server.svg?branch=master

Loose server is a simple configurable server. It can be used to create temporary servers, dynamically add or remove endpoints and set responses for them from an application.

Installation

Flask and flask-restful are required for the server.

$ python -m pip install Flask flask-restful loose-server

requests are required for the http client.

$ python -m pip install requests loose-server

Usage

Loose server has 2 variations:

  • Standalone server with API to manage rules via HTTP.

  • Flask application that can be used as a configurable mock in unit-tests.

Standalone server

A server can be started by the command

$ python -m looseserver.server.run
 * Serving Flask app "run" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:50000/ (Press CTRL+C to quit)

API endpoints are nested to the base configuration url. By default it is /_configuration/.

from looseserver.client.http import HTTPClient
from looseserver.default.client.rule import PathRule
from looseserver.default.client.response import FixedResponse

client = HTTPClient(base_url="http://127.0.0.1:50000/_configuration/")

path_rule_spec = PathRule(path="example")
path_rule = client.create_rule(rule=path_rule_spec)

json_response = FixedResponse(
    status=200,
    headers={"Content-Type": "application/json"},
    body='{"key": "value"}',
    )
client.set_response(rule_id=path_rule.rule_id, response=json_response)

All configured endpoints have a common prefix. By default it is /routes/. The response can be obtained by the following request

$ curl http://127.0.0.1:50000/routes/example -i
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 16
Server: Werkzeug/0.15.2 Python/3.5.2
Date: Fri, 05 Apr 2019 14:08:50 GMT

{"key": "value"}

Configurable mock

Loose server can be used as a mock server in the following way

from looseserver.server.run import configure_application
from looseserver.client.flask import FlaskClient
from looseserver.default.client.rule import PathRule
from looseserver.default.client.response import FixedResponse

application = configure_application(
    base_endpoint="/routes/",
    configuration_endpoint="/_configuration/",
    )

app_client=application.test_client()

client = FlaskClient(base_url="/_configuration/", application_client=app_client)

path_rule_spec = PathRule(path="example")
path_rule = client.create_rule(rule=path_rule_spec)

json_response = FixedResponse(
    status=200,
    headers={"Content-Type": "application/json"},
    body='{"key": "value"}',
    )
client.set_response(rule_id=path_rule.rule_id, response=json_response)

response = app_client.get("/routes/example")
assert response.headers["Content-Type"] == "application/json"
assert response.json == {'key': 'value'}

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

loose-server-0.2.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

loose_server-0.2-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file loose-server-0.2.tar.gz.

File metadata

  • Download URL: loose-server-0.2.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/20.7.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2

File hashes

Hashes for loose-server-0.2.tar.gz
Algorithm Hash digest
SHA256 aead68a886a0a49efc37c548442d76ca03c665481740de2e3003a81a48897373
MD5 e7f340db609aaae687d3edf9f41f8268
BLAKE2b-256 3e1f28e3d2b77bb127aaccca5bebf982b461f11e48617b68dae9d26ad05faf36

See more details on using hashes here.

File details

Details for the file loose_server-0.2-py3-none-any.whl.

File metadata

  • Download URL: loose_server-0.2-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/20.7.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2

File hashes

Hashes for loose_server-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c3c0f4833ecc0150252b5f7e45fd0dd6770a4f317c37d2ca848987a7aa0c9070
MD5 05fb30c4b31d03c296f815c1edb9b90f
BLAKE2b-256 e9ec7fb904bebe99a72e92734aef0d77962fc9f01c62345a9c908f1c684f617c

See more details on using hashes here.

Supported by

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