Skip to content

Instantly share code, notes, and snippets.

@jamilatta
Last active December 22, 2015 11:08
Show Gist options
  • Save jamilatta/6463527 to your computer and use it in GitHub Desktop.
Save jamilatta/6463527 to your computer and use it in GitHub Desktop.
Prova de conceito do Gateway HTTP - Pyramid.
from pyramid.response import Response
from pyramid.config import Configurator
from wsgiref.simple_server import make_server
from pyramid.httpexceptions import HTTPNotFound
from pyramid.view import notfound_view_config, view_config
from sqlalchemy.orm.exc import NoResultFound
import utils
import models
__version__ = "0.01"
config = utils.Configuration.from_env()
Session = models.Session
Session.configure(bind=models.create_engine_from_config(config))
@notfound_view_config(append_slash=True)
def notfound(request):
return HTTPNotFound('Not found')
@view_config(route_name='index')
def index(request):
return Response('Gateway version %s' % __version__)
@view_config(route_name='package', request_method='GET', renderer="json")
def package(request):
session = Session()
try:
article = session.query(models.ArticlePkg).filter_by(id=request.matchdict['id']).one()
except NoResultFound:
return HTTPNotFound()
return article.to_dict()
@view_config(route_name='list_package', request_method='GET', renderer="json")
def list_package(request):
session = Session()
limit = request.params.get('limit', 20)
offset = request.params.get('offset', 0)
articles = session.query(models.ArticlePkg).limit(limit).offset(offset)
return [article.to_dict() for article in articles]
if __name__ == '__main__':
config = Configurator()
config.add_route('index', '/')
config.add_route('list_package', '/packages/')
config.add_route('package', '/packages/{id}')
config.scan()
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment