Exemple #1
0
    def test_accepted(self):
        request = Request.blank("/",
                                accept=["text/html"])

        result = nanoweb.agent_accepts(request, ["text/html"])

        self.assertEqual(result, "text/html")
Exemple #2
0
    def test_format_accepted(self):
        request = Request.blank("/", urlvars={"format": "html"},
                                accept=["application/json"])

        result = nanoweb.agent_accepts(request, ["text/html"])

        self.assertEqual(result, "text/html")
Exemple #3
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
Exemple #4
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")