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.application 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.3.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

loose_server-0.3-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for loose-server-0.3.tar.gz
Algorithm Hash digest
SHA256 496893ea8d54e13153ec83168584e82252f4e06c5b747bb93a95852e1056364b
MD5 1bbc712f0f3eed90ff7f334c17da024d
BLAKE2b-256 3690190b7e7689aa57485f83471d0cd345f4d649263121a71013e7ad2d640777

See more details on using hashes here.

File details

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

File metadata

  • Download URL: loose_server-0.3-py3-none-any.whl
  • Upload date:
  • Size: 22.2 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/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2

File hashes

Hashes for loose_server-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8ff353fdac8c276cbdbef1fab19fbd4a1ae615d799df101f60ecdfc563f5a7a0
MD5 e419d703a36d0fbeb6e703648e30f7bd
BLAKE2b-256 d4bffc500794e553271a8254a1f3d5d89125ae0251d5cb9243c93d2d9527dd6d

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