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