61 lines
2.2 KiB
Python
61 lines
2.2 KiB
Python
from pathlib import Path
|
|
import json
|
|
from typing import List, Optional
|
|
|
|
from fastapi.openapi.utils import get_openapi
|
|
|
|
import app.container as container
|
|
from app.core.audit import AuditLogger
|
|
from app.core.config import Settings
|
|
from app.factory import create_app
|
|
from app.providers.base import SystemProvider
|
|
from app.services.user_group_service import UserGroupService
|
|
from app.state import AppState
|
|
|
|
|
|
class DummyProvider(SystemProvider):
|
|
def create_user(self, username: str, password_hash: str, home_dir: Optional[str], linked_home_dir: Optional[str], shell: str, primary_group: Optional[str], groups: List[str]) -> None:
|
|
return None
|
|
def delete_user(self, username: str) -> None:
|
|
return None
|
|
def change_user_password(self, username: str, password_hash: str) -> None:
|
|
return None
|
|
def list_users(self):
|
|
return []
|
|
def get_user(self, username: str):
|
|
raise NotImplementedError
|
|
def create_group(self, groupname: str) -> None:
|
|
return None
|
|
def delete_group(self, groupname: str) -> None:
|
|
return None
|
|
def list_groups(self):
|
|
return []
|
|
def get_group(self, groupname: str):
|
|
raise NotImplementedError
|
|
def add_user_groups(self, username: str, groups: List[str], replace: bool) -> None:
|
|
return None
|
|
def remove_user_groups(self, username: str, groups: List[str]) -> None:
|
|
return None
|
|
def get_user_groups(self, username: str):
|
|
return []
|
|
|
|
|
|
def main() -> None:
|
|
settings = Settings(TOKEN="sdk-token")
|
|
container.app_state = AppState(
|
|
settings=settings,
|
|
service=UserGroupService(provider=DummyProvider(), home_base_dir="/home"),
|
|
audit=AuditLogger("./logs/sdk_audit.log"),
|
|
)
|
|
app = create_app()
|
|
schema = get_openapi(title=app.title, version=app.version, routes=app.routes)
|
|
output = Path("sdk/openapi.json")
|
|
output.parent.mkdir(parents=True, exist_ok=True)
|
|
output.write_text(json.dumps(schema, ensure_ascii=False, indent=2), encoding="utf-8")
|
|
print("OpenAPI exported to sdk/openapi.json")
|
|
print("Run: openapi-python-client generate --path sdk/openapi.json --output-path sdk/python_client")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|