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", ))
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
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")
def test_is_allowed(self): request = Request.blank("/", method="PUT") nanoweb.allowed(request, ["GET", "PUT"])