Refactored resources out to own submodule
parent
bd818f1cf2
commit
b048fe1254
@ -0,0 +1 @@
|
||||
from .cookies import cookie_routes
|
@ -0,0 +1,57 @@
|
||||
import typing
|
||||
|
||||
import logbook
|
||||
from apistar import http, Route, App
|
||||
from apistar_jwt import authentication_required, JWTUser
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from cookie_api.models import Cookie
|
||||
from cookie_api.schema import CookieSchema
|
||||
from cookie_api.util import MetaJSONResponse
|
||||
|
||||
logger = logbook.Logger(__name__)
|
||||
|
||||
|
||||
def get_cookies(session: Session) -> typing.List[CookieSchema]:
|
||||
cookies = session.query(Cookie).all()
|
||||
logger.debug('Cookies collection hit')
|
||||
return [CookieSchema(cookie) for cookie in cookies]
|
||||
|
||||
|
||||
def get_cookie(session: Session, id) -> CookieSchema:
|
||||
cookie = session.query(Cookie).filter_by(id=id).one_or_none()
|
||||
if cookie is None:
|
||||
msg = {"error": "404 Not Found"}
|
||||
return MetaJSONResponse(msg, 404)
|
||||
return MetaJSONResponse(CookieSchema(cookie))
|
||||
|
||||
|
||||
@authentication_required
|
||||
def create_cookie(session: Session, cookie_data: CookieSchema, app: App, user: JWTUser):
|
||||
cookie = Cookie(**cookie_data)
|
||||
session.add(cookie)
|
||||
session.commit()
|
||||
headers = {'Location': app.reverse_url('get_cookie', id=cookie.id)}
|
||||
return MetaJSONResponse(CookieSchema(cookie), 201, headers)
|
||||
|
||||
|
||||
@authentication_required
|
||||
def delete_cookie(session: Session, id: int, user: JWTUser):
|
||||
cookie = session.query(Cookie).filter_by(id=id).one_or_none()
|
||||
if cookie is None:
|
||||
msg = {"error": "404 Not Found"}
|
||||
return MetaJSONResponse(msg, 204)
|
||||
|
||||
logger.debug("Deleting cookie {} {}".format(cookie.id, cookie.name))
|
||||
session.delete(cookie)
|
||||
session.commit()
|
||||
|
||||
return MetaJSONResponse({}, 204)
|
||||
|
||||
|
||||
cookie_routes = [
|
||||
Route('/cookies', 'GET', get_cookies),
|
||||
Route('/cookies', 'POST', create_cookie),
|
||||
Route('/cookies/{id}', 'GET', get_cookie),
|
||||
Route('/cookies/{id}', 'DELETE', delete_cookie)
|
||||
]
|
Loading…
Reference in New Issue