home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 1563498048

This data as json

html_url issue_url id node_id user created_at updated_at author_association body reactions issue performed_via_github_app
https://github.com/simonw/datasette/issues/2078#issuecomment-1563498048 https://api.github.com/repos/simonw/datasette/issues/2078 1563498048 IC_kwDOBm6k_c5dMRZA 9599 2023-05-25T20:57:52Z 2023-05-25T20:58:13Z OWNER

Here's a new BaseView class that automatically populates OPTIONS based on available methods: ```python class BaseView: async def head(self, args, kwargs): try: response = await self.get(args, **kwargs) response.body = b"" return response except AttributeError: raise

async def method_not_allowed(self, request):
    if (
        request.path.endswith(".json")
        or request.headers.get("content-type") == "application/json"
    ):
        response = Response.json(
            {"ok": False, "error": "Method not allowed"}, status=405
        )
    else:
        response = Response.text("Method not allowed", status=405)
    return response

async def options(self, request, *args, **kwargs):
    response = Response.text("ok")
    response.headers["allow"] = ", ".join(
        method.upper()
        for method in ("head", "get", "post", "put", "patch", "delete")
        if hasattr(self, method)
    )
    return response

async def __call__(self, request, datasette):
    try:
        handler = getattr(self, request.method.lower())
        return await handler(request, datasette)
    except AttributeError:
        return await self.method_not_allowed(request)

class DemoView(BaseView): async def get(self, datasette, request): return Response.text("Hello there! {} - {}".format(datasette, request))

post = get

```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
1726236847  
Powered by Datasette · Queries took 0.916ms · About: github-to-sqlite