Skip to content

Commit

Permalink
Merge pull request #61 from sourcelair/fix-target
Browse files Browse the repository at this point in the history
Accept paths in route target and ditch BATS in favor of pytest
  • Loading branch information
parisk committed Feb 28, 2019
2 parents a10b135 + b81454e commit 5a59a30
Show file tree
Hide file tree
Showing 23 changed files with 828 additions and 433 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -10,7 +10,7 @@ install:
- pip install --upgrade --ignore-installed docker-compose==${DOCKER_COMPOSE_VERSION}
- docker-compose build

- pip install pipenv==11.9
- pip install pipenv==2018.11.26
- bash -c "cd api && pipenv install --dev --deploy --system"

services:
Expand Down
18 changes: 0 additions & 18 deletions Dockerfile.test

This file was deleted.

1 change: 1 addition & 0 deletions api/Pipfile
Expand Up @@ -10,6 +10,7 @@ requests = ">=2.21.0"

[dev-packages]
nose = "*"
black = "==18.9b0"

[requires]
python_version = "3.6"
105 changes: 71 additions & 34 deletions api/Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

80 changes: 49 additions & 31 deletions api/app.py
Expand Up @@ -15,73 +15,91 @@ def list_routes() -> typing.List[types.Route]:


def create_route(route: types.Route) -> types.Route:
ROUTER.insert(**route)
return http.JSONResponse(route, status_code=201)
created_route = ROUTER.insert(**route)
return http.JSONResponse(created_route, status_code=201)


def update_route(source: str, route: types.RouteWithoutSource) -> types.Route:
ROUTER.insert(source, **route)
updated_route = dict(source=source, **route)
updated_route = ROUTER.insert(source, **route)
return types.Route(updated_route)


def get_route(source: str) -> types.Route:
try:
resource = {
'source': source,
'target': ROUTER.lookup(source),
'settings': ROUTER.lookup_settings(source),
"source": source,
"target": ROUTER.lookup(source),
"settings": ROUTER.lookup_settings(source),
}
return resource
except RedisRouter.LookupNotFound:
return http.JSONResponse(
{'message': f'Route with source {source} doesn\'t exist'},
status_code=404,
{"message": f"Route with source {source} doesn't exist"}, status_code=404
)


def delete_route(source: str) -> types.Route:
try:
route = {
'source': source,
'target': ROUTER.lookup(source),
'settings': ROUTER.lookup_settings(source),
"source": source,
"target": ROUTER.lookup(source),
"settings": ROUTER.lookup_settings(source),
}
ROUTER.delete(source)
return http.JSONResponse(
types.Route(route),
status_code=204,
)
return http.JSONResponse(types.Route(route), status_code=204)
except RedisRouter.LookupNotFound:
return http.JSONResponse(
{'message': f'Route with source {source} doesn\'t exist'},
status_code=404,
{"message": f"Route with source {source} doesn't exist"}, status_code=404
)


routes = [
Route('/api/routes', method='GET', handler=list_routes),
Route('/api/routes', method='POST', handler=create_route),
Route('/api/routes/{source}', method='GET', handler=get_route),
Route('/api/routes/{source}', method='PUT', handler=update_route),
Route('/api/routes/{source}', method='DELETE', handler=delete_route),

Route("/api/routes", method="GET", handler=list_routes),
Route("/api/routes", method="POST", handler=create_route),
Route("/api/routes/{source}", method="GET", handler=get_route),
Route("/api/routes/{source}", method="PUT", handler=update_route),
Route("/api/routes/{source}", method="DELETE", handler=delete_route),
# Allow trailing slashes as well (GitHub style)
Route('/api/routes/', method='GET', handler=list_routes, name='list_routes_trailing_slash'),
Route('/api/routes/', method='POST', handler=create_route, name='create_route_trailing_slash'),
Route('/api/routes/{source}/', method='GET', handler=get_route, name='get_route_trailing_slash'),
Route('/api/routes/{source}/', method='PUT', handler=update_route, name='update_route_trailing_slash'),
Route('/api/routes/{source}/', method='DELETE', handler=delete_route, name='delete_route_trailing_slash'),
Route(
"/api/routes/",
method="GET",
handler=list_routes,
name="list_routes_trailing_slash",
),
Route(
"/api/routes/",
method="POST",
handler=create_route,
name="create_route_trailing_slash",
),
Route(
"/api/routes/{source}/",
method="GET",
handler=get_route,
name="get_route_trailing_slash",
),
Route(
"/api/routes/{source}/",
method="PUT",
handler=update_route,
name="update_route_trailing_slash",
),
Route(
"/api/routes/{source}/",
method="DELETE",
handler=delete_route,
name="delete_route_trailing_slash",
),
]

app = App(routes=routes)

if __name__ == '__main__':
if __name__ == "__main__":
from ceryx import settings

app.serve(
settings.API_BIND_HOST,
settings.API_BIND_PORT,
use_debugger=settings.DEBUG,
use_reloader=settings.DEBUG,
)
)

0 comments on commit 5a59a30

Please sign in to comment.