def test_encode_body_encoders(self): data = {"foo": "bar"} expected = unicode(data) result = nanoweb.encode_body("text/plain", data, encoders={ "text/plain": unicode }) self.assertEqual(result, expected)
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_encode_body(self): expected = {"foo": "bar"} json_result = nanoweb.encode_body("application/json", expected) result = json.loads(json_result) self.assertEqual(result, expected)