Skip to content

Commit

Permalink
Refactor duplicate code in DatasetteClient, closes #2307
Browse files Browse the repository at this point in the history
  • Loading branch information
simonw committed Mar 15, 2024
1 parent 54f5604 commit eb8545c
Showing 1 changed file with 11 additions and 32 deletions.
43 changes: 11 additions & 32 deletions datasette/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -1933,54 +1933,33 @@ def _fix(self, path, avoid_path_rewrites=False):
path = f"http://localhost{path}"
return path

async def get(self, path, **kwargs):
async def _request(self, method, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.get(self._fix(path), **kwargs)
return await getattr(client, method)(self._fix(path), **kwargs)

async def get(self, path, **kwargs):
return await self._request("get", path, **kwargs)

async def options(self, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.options(self._fix(path), **kwargs)
return await self._request("options", path, **kwargs)

async def head(self, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.head(self._fix(path), **kwargs)
return await self._request("head", path, **kwargs)

async def post(self, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.post(self._fix(path), **kwargs)
return await self._request("post", path, **kwargs)

async def put(self, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.put(self._fix(path), **kwargs)
return await self._request("put", path, **kwargs)

async def patch(self, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.patch(self._fix(path), **kwargs)
return await self._request("patch", path, **kwargs)

async def delete(self, path, **kwargs):
async with httpx.AsyncClient(
transport=httpx.ASGITransport(app=self.app),
cookies=kwargs.pop("cookies", None),
) as client:
return await client.delete(self._fix(path), **kwargs)
return await self._request("delete", path, **kwargs)

async def request(self, method, path, **kwargs):
avoid_path_rewrites = kwargs.pop("avoid_path_rewrites", None)
Expand Down

0 comments on commit eb8545c

Please sign in to comment.