Skip to content

Commit

Permalink
feat: Invite endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
null2264 committed Jul 17, 2023
1 parent 9f71569 commit 721b84c
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 6 deletions.
14 changes: 14 additions & 0 deletions nexus/core/routes/auth.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
from typing import Annotated, Union

from fastapi import Header
from fastapi.requests import Request
from fastapi.responses import JSONResponse, RedirectResponse
from fastapi.routing import APIRouter

from nexus.core.oauth import OAuth2Session
from nexus.core.oauth.decorators import requireValidAuth
from nexus.utils.discord_utils import generateInviteLink


router = APIRouter()
Expand All @@ -27,3 +31,13 @@ async def logout(request: Request):
if request.cookies.get("loggedIn"):
resp.delete_cookie("loggedIn")
return resp


@router.get("/invite")
async def invite(request: Request):
inviteLink = generateInviteLink(request)
resp = RedirectResponse(inviteLink)
contentType: Union[str, None] = request.headers.get("content-type")
if contentType == "application/json":
resp = JSONResponse({"invite": inviteLink})
return resp
8 changes: 2 additions & 6 deletions nexus/core/routes/ng/meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from nexus.core.oauth import Guild, User
from nexus.core.oauth.decorators import requireValidAuth
from nexus.core.oauth.utils import validateAuth
from nexus.utils.discord_utils import generateInviteLink


if TYPE_CHECKING:
Expand Down Expand Up @@ -123,12 +124,7 @@ async def managedGuilds(request: Request):
guildJson = guild.json()
# for some reason 'guild.id in botGuilds' always returns False
guildJson["bot"] = int(guild.id) in [int(i) for i in botGuilds]
guildJson["invite"] = discord.utils.oauth_url(
request.app.clientId,
permissions=discord.Permissions(4260883702),
guild=guild,
# redirect_uri=os.getenv("DISCORD_GUILD_REDIRECT_URI"),
)
guildJson["invite"] = generateInviteLink(request, guild)
ret.append(guildJson)

# show guilds that has the bot in it first, while also sort them by name
Expand Down
15 changes: 15 additions & 0 deletions nexus/utils/discord_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from typing import Optional
import discord
from discord.abc import MISSING
from starlette.requests import Request

from nexus.core.oauth.models import Guild


def generateInviteLink(request: Request, guild: Optional[Guild] = None):
return discord.utils.oauth_url(
request.app.clientId,
permissions=discord.Permissions(4260883702),
guild=guild or MISSING,
# redirect_uri=os.getenv("DISCORD_GUILD_REDIRECT_URI"),
)

0 comments on commit 721b84c

Please sign in to comment.