fix(commands:peeringdb|Network): fix false results
This commit is contained in:
parent
5b7c905ac8
commit
b9f6c6cb0a
2 changed files with 43 additions and 11 deletions
|
@ -223,15 +223,36 @@ async def get_pydig_result(
|
||||||
namespace="network",
|
namespace="network",
|
||||||
)
|
)
|
||||||
async def get_peeringdb_net_result(asn: str) -> dict:
|
async def get_peeringdb_net_result(asn: str) -> dict:
|
||||||
try:
|
# Q. why this and not ?asn=
|
||||||
async with aiohttp.ClientSession() as cs:
|
# A. better do one request and save in cache than execute new
|
||||||
async with cs.get(
|
# request every time
|
||||||
f"https://peeringdb.com/api/net?asn={asn}",
|
@cached(
|
||||||
timeout=aiohttp.ClientTimeout(total=21),
|
ttl=24 * 3600,
|
||||||
) as s:
|
serializer=PickleSerializer(),
|
||||||
return await s.json()
|
cache=Cache.MEMORY,
|
||||||
except (asyncio.exceptions.TimeoutError,):
|
namespace="network",
|
||||||
pass
|
)
|
||||||
|
async def _local_cache() -> dict:
|
||||||
|
try:
|
||||||
|
async with aiohttp.ClientSession() as cs:
|
||||||
|
async with cs.get(
|
||||||
|
"https://peeringdb.com/api/net",
|
||||||
|
timeout=aiohttp.ClientTimeout(total=21),
|
||||||
|
) as s:
|
||||||
|
return await s.json()
|
||||||
|
except asyncio.exceptions.TimeoutError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return {"data": []}
|
||||||
|
|
||||||
|
result = await _local_cache()
|
||||||
|
|
||||||
|
if not result["data"]:
|
||||||
|
return result
|
||||||
|
|
||||||
|
for data in result["data"]:
|
||||||
|
if data.get("asn", None) == int(asn):
|
||||||
|
return {"data": [data]}
|
||||||
|
|
||||||
return {"data": []}
|
return {"data": []}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import aiohttp
|
||||||
import discord
|
import discord
|
||||||
from aiohttp import ClientConnectorError, InvalidURL
|
from aiohttp import ClientConnectorError, InvalidURL
|
||||||
from jishaku.models import copy_context_with
|
from jishaku.models import copy_context_with
|
||||||
from discord.ext import commands
|
from discord.ext import commands, tasks
|
||||||
from ipinfo.exceptions import RequestQuotaExceededError
|
from ipinfo.exceptions import RequestQuotaExceededError
|
||||||
from structured_config import ConfigFile
|
from structured_config import ConfigFile
|
||||||
from tuxbot.cogs.Network.functions.converters import (
|
from tuxbot.cogs.Network.functions.converters import (
|
||||||
|
@ -62,6 +62,7 @@ class Network(commands.Cog):
|
||||||
str(cogs_data_path("Network") / "config.yaml"),
|
str(cogs_data_path("Network") / "config.yaml"),
|
||||||
NetworkConfig,
|
NetworkConfig,
|
||||||
).config
|
).config
|
||||||
|
self._update_peering_db.start() # pylint: disable=no-member
|
||||||
|
|
||||||
async def cog_command_error(self, ctx: ContextPlus, error):
|
async def cog_command_error(self, ctx: ContextPlus, error):
|
||||||
if isinstance(
|
if isinstance(
|
||||||
|
@ -81,6 +82,16 @@ class Network(commands.Cog):
|
||||||
async def cog_before_invoke(self, ctx: ContextPlus):
|
async def cog_before_invoke(self, ctx: ContextPlus):
|
||||||
await ctx.trigger_typing()
|
await ctx.trigger_typing()
|
||||||
|
|
||||||
|
def cog_unload(self):
|
||||||
|
self._update_peering_db.cancel() # pylint: disable=no-member
|
||||||
|
|
||||||
|
@tasks.loop(hours=24.0)
|
||||||
|
async def _update_peering_db(self):
|
||||||
|
await get_peeringdb_net_result(str(1))
|
||||||
|
|
||||||
|
logging.log(logging.INFO, "_update_peering_db")
|
||||||
|
self.bot.console.log("[Network]: _update_peering_db")
|
||||||
|
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
|
|
||||||
|
@ -349,4 +360,4 @@ class Network(commands.Cog):
|
||||||
data["created"], "%Y-%m-%dT%H:%M:%SZ"
|
data["created"], "%Y-%m-%dT%H:%M:%SZ"
|
||||||
)
|
)
|
||||||
|
|
||||||
await ctx.send(embed=e)
|
await ctx.send(f"https://www.peeringdb.com/net/{data['id']}", embed=e)
|
||||||
|
|
Loading…
Reference in a new issue