示例#1
0
 def test_is_not_allowed(self):
     request = Request.blank("/",
                             method="DELETE")
     try:
         nanoweb.allowed(request, ["GET", "PUT"])
         self.assertTrue(False, "the allowed() function succeeded.")
     except exc.HTTPMethodNotAllowed, error:
         self.assertEqual(error.allow, ("GET", "PUT", ))
示例#2
0
def shows(request):
    nanoweb.allowed(request, ["GET"])
    content_type = nanoweb.agent_accepts(request, ["application/json"])

    with shows_db() as shows:
        response = Response(nanoweb.encode_body(content_type, shows),
                            content_type=content_type)
        return response
示例#3
0
def show(request):
    nanoweb.allowed(request, ["GET", "PUT", "DELETE"])
    content_type = nanoweb.agent_accepts(request, ["text/plain",
                                                   "application/json"])
    # Set up the encoders
    encoders = {"text/plain": lambda d: d['title']}
    encoders.update(nanoweb.encoders)

    # Set up the decoders
    decoders = {"text/plain": lambda s: {"title": s}}
    decoders.update(nanoweb.decoders)

    url = request.environ['routes.url']
    slug = request.urlvars['slug']

    if request.method == "PUT":
        data = nanoweb.decode_body(request, decoders=decoders)

        with shows_db() as shows:
            shows[slug] = data['title']

        body = nanoweb.encode_body(content_type, data,
                                   encoders=encoders)
        return Response(body, content_type=content_type)

    elif request.method == "DELETE":
        try:
            with shows_db() as shows:
                del shows[slug]
            return HTTPNoContent()
        except KeyError:
            return HTTPNotFound()

    elif request.method == "GET":
        try:
            with shows_db() as shows:
                name = shows[slug]
        except KeyError:
            return HTTPNotFound()

        data = {"title": name, "slug": slug}
        body = nanoweb.encode_body(content_type, data,
                                   encoders=encoders)
        return Response(name, content_type="text/plain")
示例#4
0
 def test_is_allowed(self):
     request = Request.blank("/",
                             method="PUT")
     nanoweb.allowed(request, ["GET", "PUT"])