mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Implemented HEAD requests, removed Sanic InvalidUsage
This commit is contained in:
parent
620f0aa4f8
commit
79950c9643
4 changed files with 15 additions and 9 deletions
|
|
@ -12,7 +12,7 @@ from pathlib import Path
|
|||
import click
|
||||
from markupsafe import Markup
|
||||
from jinja2 import ChoiceLoader, Environment, FileSystemLoader, PrefixLoader
|
||||
from sanic.exceptions import InvalidUsage, NotFound
|
||||
from sanic.exceptions import NotFound
|
||||
|
||||
from .views.base import DatasetteError, ureg, AsgiRouter
|
||||
from .views.database import DatabaseDownload, DatabaseView
|
||||
|
|
@ -665,10 +665,6 @@ class Datasette:
|
|||
status = 404
|
||||
info = {}
|
||||
message = exception.args[0]
|
||||
elif isinstance(exception, InvalidUsage):
|
||||
status = 405
|
||||
info = {}
|
||||
message = exception.args[0]
|
||||
elif isinstance(exception, DatasetteError):
|
||||
status = exception.status
|
||||
info = exception.error_dict
|
||||
|
|
|
|||
|
|
@ -54,6 +54,11 @@ class DatasetteError(Exception):
|
|||
class BaseView(AsgiView):
|
||||
ds = None
|
||||
|
||||
async def head(self, *args, **kwargs):
|
||||
response = await self.get(*args, **kwargs)
|
||||
response.body = b""
|
||||
return response
|
||||
|
||||
def _asset_urls(self, key, template, context):
|
||||
# Flatten list-of-lists from plugins:
|
||||
seen_urls = set()
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ class TestClient:
|
|||
self.asgi_app = asgi_app
|
||||
|
||||
@async_to_sync
|
||||
async def get(self, path, allow_redirects=True, redirect_count=0):
|
||||
return await self._get(path, allow_redirects, redirect_count)
|
||||
async def get(self, path, allow_redirects=True, redirect_count=0, method="GET"):
|
||||
return await self._get(path, allow_redirects, redirect_count, method)
|
||||
|
||||
async def _get(self, path, allow_redirects=True, redirect_count=0):
|
||||
async def _get(self, path, allow_redirects=True, redirect_count=0, method="GET"):
|
||||
query_string = b""
|
||||
if "?" in path:
|
||||
path, _, query_string = path.partition("?")
|
||||
|
|
@ -50,7 +50,7 @@ class TestClient:
|
|||
{
|
||||
"type": "http",
|
||||
"http_version": "1.0",
|
||||
"method": "GET",
|
||||
"method": method,
|
||||
"path": unquote(path),
|
||||
"raw_path": path.encode("ascii"),
|
||||
"query_string": query_string,
|
||||
|
|
|
|||
|
|
@ -46,6 +46,11 @@ def test_homepage(app_client_two_attached_databases):
|
|||
] == table_links
|
||||
|
||||
|
||||
def test_http_head(app_client):
|
||||
response = app_client.get("/", method="HEAD")
|
||||
assert response.status == 200
|
||||
|
||||
|
||||
def test_static(app_client):
|
||||
response = app_client.get("/-/static/app2.css")
|
||||
assert response.status == 404
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue