This commit is contained in:
parent
87506b0478
commit
d02ae5bd3f
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -157,3 +157,6 @@ dokku_config
|
|||
*.db
|
||||
*.sqlite3
|
||||
views.json
|
||||
*.pem
|
||||
*.key
|
||||
*.crt
|
|
@ -40,13 +40,16 @@ Backend service providing GraphQL API for content management system with reactio
|
|||
### Setup
|
||||
|
||||
|
||||
Start API server with `dev` key:
|
||||
Start API server with `dev` keyword added and `mkcert` installed:
|
||||
|
||||
```shell
|
||||
mkdir .venv
|
||||
python3.12 -m venv .venv
|
||||
poetry env use .venv/bin/python3.12
|
||||
poetry update
|
||||
|
||||
mkcert -install
|
||||
mkcert localhost
|
||||
poetry run server.py dev
|
||||
```
|
||||
|
||||
|
|
10
main.py
10
main.py
|
@ -1,11 +1,13 @@
|
|||
import asyncio
|
||||
import os
|
||||
import sys
|
||||
from importlib import import_module
|
||||
from os.path import exists
|
||||
|
||||
from ariadne import load_schema_from_path, make_executable_schema
|
||||
from ariadne.asgi import GraphQL
|
||||
from starlette.applications import Starlette
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
from starlette.requests import Request
|
||||
from starlette.responses import JSONResponse, Response
|
||||
from starlette.routing import Route
|
||||
|
@ -123,3 +125,11 @@ app = Starlette(
|
|||
)
|
||||
|
||||
app.add_middleware(ExceptionHandlerMiddleware)
|
||||
if "dev" in sys.argv:
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["https://localhost:3000"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from granian.constants import Interfaces
|
||||
from granian.log import LogLevels
|
||||
from granian.server import Granian
|
||||
|
@ -20,6 +23,9 @@ if __name__ == "__main__":
|
|||
backlog=2048,
|
||||
)
|
||||
|
||||
if "dev" in sys.argv:
|
||||
logger.info("dev mode, building ssl context")
|
||||
granian_instance.build_ssl_context(cert=Path("localhost.pem"), key=Path("localhost-key.pem"), password=None)
|
||||
granian_instance.serve()
|
||||
except Exception as error:
|
||||
logger.error(f"Granian error: {error}", exc_info=True)
|
||||
|
|
|
@ -93,6 +93,7 @@ def login_required(f):
|
|||
Возвращает:
|
||||
- Обернутую функцию с добавленной проверкой авторизации.
|
||||
"""
|
||||
|
||||
@wraps(f)
|
||||
async def decorated_function(*args, **kwargs):
|
||||
info = args[1]
|
||||
|
@ -124,6 +125,7 @@ def login_accepted(f):
|
|||
Возвращает:
|
||||
- Обернутую функцию с добавленной проверкой авторизации.
|
||||
"""
|
||||
|
||||
@wraps(f)
|
||||
async def decorated_function(*args, **kwargs):
|
||||
info = args[1]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from asyncio.log import logger
|
||||
from ariadne import MutationType, QueryType
|
||||
|
||||
import httpx
|
||||
from ariadne import MutationType, QueryType
|
||||
|
||||
from settings import AUTH_URL
|
||||
|
||||
|
@ -10,6 +11,8 @@ resolvers = [query, mutation]
|
|||
|
||||
|
||||
async def request_graphql_data(gql, url=AUTH_URL, headers=None):
|
||||
if not url:
|
||||
return None
|
||||
if headers is None:
|
||||
headers = {"Content-Type": "application/json"}
|
||||
try:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import asyncio
|
||||
from asyncio.log import logger
|
||||
import os
|
||||
import re
|
||||
from asyncio.log import logger
|
||||
|
||||
from sqlalchemy import select
|
||||
from starlette.endpoints import HTTPEndpoint
|
||||
|
|
Loading…
Reference in New Issue
Block a user