fix RuntimeError when running commands involving http client
This commit is contained in:
parent
0940921383
commit
f4698aa4dc
|
@ -38,6 +38,15 @@ class HttpClient:
|
||||||
self._session = None
|
self._session = None
|
||||||
|
|
||||||
|
|
||||||
|
async def __aenter__(self):
|
||||||
|
await self.open()
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
async def __aexit__(self, *_):
|
||||||
|
await self.close()
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def limit(self):
|
def limit(self):
|
||||||
return self.cfg['limit']
|
return self.cfg['limit']
|
||||||
|
@ -196,3 +205,18 @@ class HttpClient:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return await self.get(nodeinfo_url, loads=Nodeinfo.new_from_json) or False
|
return await self.get(nodeinfo_url, loads=Nodeinfo.new_from_json) or False
|
||||||
|
|
||||||
|
|
||||||
|
async def get(database, *args, **kwargs):
|
||||||
|
async with HttpClient(database) as client:
|
||||||
|
return await client.get(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
async def post(database, *args, **kwargs):
|
||||||
|
async with HttpClient(database) as client:
|
||||||
|
return await client.post(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
async def fetch_nodeinfo(database, *args, **kwargs):
|
||||||
|
async with HttpClient(database) as client:
|
||||||
|
return await client.fetch_nodeinfo(*args, **kwargs)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import platform
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from . import misc, __version__
|
from . import misc, __version__
|
||||||
|
from . import http_client as http
|
||||||
from .application import Application
|
from .application import Application
|
||||||
from .config import RELAY_SOFTWARE
|
from .config import RELAY_SOFTWARE
|
||||||
|
|
||||||
|
@ -148,7 +149,7 @@ def cli_inbox_follow(actor):
|
||||||
inbox = inbox_data['inbox']
|
inbox = inbox_data['inbox']
|
||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
actor_data = asyncio.run(app.client.get(actor, sign_headers=True))
|
actor_data = asyncio.run(http.get(app.database, actor, sign_headers=True))
|
||||||
|
|
||||||
if not actor_data:
|
if not actor_data:
|
||||||
return click.echo(f'Failed to fetch actor: {actor}')
|
return click.echo(f'Failed to fetch actor: {actor}')
|
||||||
|
@ -160,7 +161,7 @@ def cli_inbox_follow(actor):
|
||||||
actor = actor
|
actor = actor
|
||||||
)
|
)
|
||||||
|
|
||||||
asyncio.run(app.client.post(inbox, message))
|
asyncio.run(http.post(app.database, inbox, message))
|
||||||
click.echo(f'Sent follow message to actor: {actor}')
|
click.echo(f'Sent follow message to actor: {actor}')
|
||||||
|
|
||||||
|
|
||||||
|
@ -186,7 +187,7 @@ def cli_inbox_unfollow(actor):
|
||||||
)
|
)
|
||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
actor_data = asyncio.run(app.client.get(actor, sign_headers=True))
|
actor_data = asyncio.run(http.get(app.database, actor, sign_headers=True))
|
||||||
inbox = actor_data.shared_inbox
|
inbox = actor_data.shared_inbox
|
||||||
message = misc.Message.new_unfollow(
|
message = misc.Message.new_unfollow(
|
||||||
host = app.config.host,
|
host = app.config.host,
|
||||||
|
@ -198,7 +199,7 @@ def cli_inbox_unfollow(actor):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
asyncio.run(app.client.post(inbox, message))
|
asyncio.run(http.post(app.database, inbox, message))
|
||||||
click.echo(f'Sent unfollow message to: {actor}')
|
click.echo(f'Sent unfollow message to: {actor}')
|
||||||
|
|
||||||
|
|
||||||
|
@ -322,7 +323,7 @@ def cli_software_ban(name, fetch_nodeinfo):
|
||||||
return click.echo('Banned all relay software')
|
return click.echo('Banned all relay software')
|
||||||
|
|
||||||
if fetch_nodeinfo:
|
if fetch_nodeinfo:
|
||||||
nodeinfo = asyncio.run(app.client.fetch_nodeinfo(name))
|
nodeinfo = asyncio.run(http.fetch_nodeinfo(app.database, name))
|
||||||
|
|
||||||
if not nodeinfo:
|
if not nodeinfo:
|
||||||
click.echo(f'Failed to fetch software name from domain: {name}')
|
click.echo(f'Failed to fetch software name from domain: {name}')
|
||||||
|
@ -352,7 +353,7 @@ def cli_software_unban(name, fetch_nodeinfo):
|
||||||
return click.echo('Unbanned all relay software')
|
return click.echo('Unbanned all relay software')
|
||||||
|
|
||||||
if fetch_nodeinfo:
|
if fetch_nodeinfo:
|
||||||
nodeinfo = asyncio.run(app.client.fetch_nodeinfo(name))
|
nodeinfo = asyncio.run(http.fetch_nodeinfo(app.database, name))
|
||||||
|
|
||||||
if not nodeinfo:
|
if not nodeinfo:
|
||||||
click.echo(f'Failed to fetch software name from domain: {name}')
|
click.echo(f'Failed to fetch software name from domain: {name}')
|
||||||
|
|
Loading…
Reference in a new issue