Metadata-Version: 2.1
Name: netcord
Version: 1.2.1
Summary: Package for authentication with Discord API
Author: netrix-team
License: MIT
Project-URL: Homepage, https://github.com/netrix-team/netcord
Project-URL: GitHub, https://github.com/netrix-team/netcord
Project-URL: Docs, https://netcord.readthedocs.io/en/latest/
Keywords: netcord,discord,oauth2
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flake8==7.0.0
Requires-Dist: aiohttp>=3.9.4
Requires-Dist: pydantic>=2.7.4
Requires-Dist: fastapi>=0.111.0

# Netcord
Package for authentication with Discord API

## Installing
```
pip install netcord
```

## Example
```py
# main.py

import uvicorn
from pydantic import BaseModel

from os import getenv
from netcord import Netcord

from fastapi import FastAPI, Request
from fastapi import HTTPException

app = FastAPI(title='Your Site')

CLIENT_ID = getenv('CLIENT_ID')
CLIENT_SECRET = getenv('CLIENT_SECRET')
netcord = Netcord(CLIENT_ID, CLIENT_SECRET)


class RequestData(BaseModel):
    code: str
    state: str


@app.get('/auth/login')
async def login(session_id: str):
    return {'url': netcord.generate_auth_url(session_id)}


@app.post('/auth/callback')
async def callback(session_id: str, data: RequestData):
    try:
        netcord.check_state(session_id, data.state)
        tokens = await netcord.get_access_token(data.code)

        user = await netcord.get_user(tokens.access_token)
        return {'user': user.dict()}
    
    except ValueError as error:
        raise HTTPException(status_code=400, detail=str(error))


if __name__ == '__main__':
    uvicorn.run(app, reload=True, log_level=20)
```
