generated from Luis/nextjs-python-web-template
Rename producer to service and consumer to client #41
@@ -25,6 +25,7 @@
|
|||||||
"pkgs/clan-cli".extraPythonPackages = self'.packages.clan-cli.pytestDependencies;
|
"pkgs/clan-cli".extraPythonPackages = self'.packages.clan-cli.pytestDependencies;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
treefmt.settings.formatter.nix = {
|
treefmt.settings.formatter.nix = {
|
||||||
command = "sh";
|
command = "sh";
|
||||||
options = [
|
options = [
|
||||||
@@ -51,6 +52,7 @@
|
|||||||
"--" # this argument is ignored by bash
|
"--" # this argument is ignored by bash
|
||||||
];
|
];
|
||||||
includes = [ "*.py" ];
|
includes = [ "*.py" ];
|
||||||
|
excludes = [ "**/tests/openapi_client/**" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
1
pkgs/clan-cli/bin/gen-openapi
Normal file → Executable file
1
pkgs/clan-cli/bin/gen-openapi
Normal file → Executable file
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
91
pkgs/clan-cli/bin/gen-python-client
Executable file
91
pkgs/clan-cli/bin/gen-python-client
Executable file
@@ -0,0 +1,91 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
import tempfile
|
||||||
|
from uvicorn.importer import import_from_string
|
||||||
|
import subprocess
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
def replace_line_in_file(file_path: Path, pattern: str, replacement: str) -> None:
|
||||||
|
with open(file_path, 'r') as file:
|
||||||
|
content = file.read()
|
||||||
|
updated_content = re.sub(pattern, replacement, content)
|
||||||
|
with open(file_path, 'w') as file:
|
||||||
|
file.write(updated_content)
|
||||||
|
|
||||||
|
def replace_in_directory(*, directory_path: Path, pattern: str, replacement: str) -> None:
|
||||||
|
for root, dirs, files in os.walk(directory_path):
|
||||||
|
for file in files:
|
||||||
|
file_path = Path(os.path.join(root, file))
|
||||||
|
replace_line_in_file(file_path, pattern, replacement)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
parser = argparse.ArgumentParser(prog="gen-openapi")
|
||||||
|
parser.add_argument(
|
||||||
|
"--app", help='App import string. Eg. "clan_cli.webui.app:app"', default="clan_cli.webui.app:app"
|
||||||
|
)
|
||||||
|
parser.add_argument("--app-dir", help="Directory containing the app", default=".")
|
||||||
|
parser.add_argument(
|
||||||
|
"--out", help="Output file ending in .json", default="tests", type=Path
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.app_dir is not None:
|
||||||
|
print(f"adding {args.app_dir} to sys.path")
|
||||||
|
sys.path.insert(0, args.app_dir)
|
||||||
|
|
||||||
|
print(f"importing app from {args.app}")
|
||||||
|
app = import_from_string(args.app)
|
||||||
|
openapi = app.openapi()
|
||||||
|
version = openapi.get("openapi", "unknown version")
|
||||||
|
|
||||||
|
print(f"writing openapi spec v{version}")
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||||
|
|
||||||
|
tmp_dir = Path(tmpdirname)
|
||||||
|
openapi_p = tmp_dir / "openapi.json"
|
||||||
|
openapi_p.write_text(json.dumps(openapi, indent=2))
|
||||||
|
|
||||||
|
gen_code = tmp_dir / "gen_code"
|
||||||
|
|
||||||
|
print(f"generating python client to {args.out}")
|
||||||
|
if not args.out.is_dir():
|
||||||
|
raise Exception(f"{args.out} is not a directory")
|
||||||
|
args.out.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
cmd = [
|
||||||
|
"openapi-generator-cli",
|
||||||
|
"generate",
|
||||||
|
"-g",
|
||||||
|
"python",
|
||||||
|
"-o",
|
||||||
|
f"{gen_code}",
|
||||||
|
"-i",
|
||||||
|
f"{openapi_p}",
|
||||||
|
"--additional-properties=generateSourceCodeOnly=true"
|
||||||
|
]
|
||||||
|
subprocess.run(cmd, check=True, text=True)
|
||||||
|
|
||||||
|
|
||||||
|
src_client: Path = gen_code / "openapi_client"
|
||||||
|
pattern = r"from typing import Any, List, Optional"
|
||||||
|
replacement = "from typing import Any, List, Optional, Dict"
|
||||||
|
replace_in_directory(directory_path=src_client, pattern=pattern, replacement=replacement)
|
||||||
|
|
||||||
|
dst_client: Path = args.out / "openapi_client"
|
||||||
|
shutil.rmtree(dst_client, ignore_errors=True)
|
||||||
|
shutil.copytree(src_client, dst_client)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -13,13 +13,23 @@ from ..errors import ClanError
|
|||||||
from . import sql_models
|
from . import sql_models
|
||||||
from .assets import asset_path
|
from .assets import asset_path
|
||||||
from .error_handlers import clan_error_handler, sql_error_handler
|
from .error_handlers import clan_error_handler, sql_error_handler
|
||||||
from .routers import health, root, socket_manager2, sql_connect # sql router hinzufügen
|
from .routers import endpoints, health, root, socket_manager2 # sql router hinzufügen
|
||||||
from .sql_db import engine
|
from .sql_db import engine
|
||||||
from .tags import tags_metadata
|
from .tags import tags_metadata
|
||||||
|
|
||||||
origins = [
|
cors_url = [
|
||||||
"http://localhost:3000",
|
"http://localhost",
|
||||||
|
"http://127.0.0.1",
|
||||||
|
"http://0.0.0.0",
|
||||||
|
"http://[::]",
|
||||||
]
|
]
|
||||||
|
cors_ports = [2979, 3000]
|
||||||
|
cors_whitelist = []
|
||||||
|
for u in cors_url:
|
||||||
|
for p in cors_ports:
|
||||||
|
cors_whitelist.append(f"{u}:{p}")
|
||||||
|
|
||||||
|
|
||||||
# Logging setup
|
# Logging setup
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -42,7 +52,7 @@ def setup_app() -> FastAPI:
|
|||||||
app = FastAPI(lifespan=lifespan, swagger_ui_parameters={"tryItOutEnabled": True})
|
app = FastAPI(lifespan=lifespan, swagger_ui_parameters={"tryItOutEnabled": True})
|
||||||
app.add_middleware(
|
app.add_middleware(
|
||||||
CORSMiddleware,
|
CORSMiddleware,
|
||||||
allow_origins=origins,
|
allow_origins=cors_whitelist,
|
||||||
allow_credentials=True,
|
allow_credentials=True,
|
||||||
allow_methods=["*"],
|
allow_methods=["*"],
|
||||||
allow_headers=["*"],
|
allow_headers=["*"],
|
||||||
@@ -50,7 +60,7 @@ def setup_app() -> FastAPI:
|
|||||||
|
|
||||||
app.include_router(health.router)
|
app.include_router(health.router)
|
||||||
# sql methodes
|
# sql methodes
|
||||||
app.include_router(sql_connect.router)
|
app.include_router(endpoints.router)
|
||||||
|
|
||||||
app.include_router(socket_manager2.router)
|
app.include_router(socket_manager2.router)
|
||||||
|
|
||||||
|
|||||||
238
pkgs/clan-cli/clan_cli/webui/routers/endpoints.py
Normal file
238
pkgs/clan-cli/clan_cli/webui/routers/endpoints.py
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
import logging
|
||||||
|
import time
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
from fastapi import APIRouter, BackgroundTasks, Depends
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
|
from ...errors import ClanError
|
||||||
|
from .. import sql_crud, sql_db, sql_models
|
||||||
|
from ..schemas import (
|
||||||
|
Entity,
|
||||||
|
EntityCreate,
|
||||||
|
Resolution,
|
||||||
|
Service,
|
||||||
|
ServiceCreate,
|
||||||
|
ServicesByName,
|
||||||
|
)
|
||||||
|
from ..tags import Tags
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# #
|
||||||
|
# Service #
|
||||||
|
# #
|
||||||
|
#########################
|
||||||
|
@router.post("/api/v1/service", response_model=Service, tags=[Tags.services])
|
||||||
|
async def create_service(
|
||||||
|
service: ServiceCreate, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> Service:
|
||||||
|
# todo checken ob schon da ...
|
||||||
|
return sql_crud.create_service(db=db, service=service)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/api/v1/services", response_model=List[Service], tags=[Tags.services])
|
||||||
|
async def get_all_services(
|
||||||
|
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> List[sql_models.Service]:
|
||||||
|
services = sql_crud.get_services(db, skip=skip, limit=limit)
|
||||||
|
return services
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/{entity_did}/service", response_model=List[Service], tags=[Tags.services]
|
||||||
|
)
|
||||||
|
async def get_service_by_did(
|
||||||
|
entity_did: str = "did:sov:test:1234",
|
||||||
|
skip: int = 0,
|
||||||
|
limit: int = 100,
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> List[sql_models.Service]:
|
||||||
|
service = sql_crud.get_services_by_entity_did(db, entity_did=entity_did)
|
||||||
|
return service
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/services_by_entity_name",
|
||||||
|
response_model=ServicesByName,
|
||||||
|
tags=[Tags.services],
|
||||||
|
)
|
||||||
|
async def get_services_by_name(
|
||||||
|
entity_name: str,
|
||||||
|
skip: int = 0,
|
||||||
|
limit: int = 100,
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> ServicesByName:
|
||||||
|
entity = sql_crud.get_entity_by_name(db, name=entity_name)
|
||||||
|
if entity is None:
|
||||||
|
raise ClanError(f"Entity with name '{entity_name}' not found")
|
||||||
|
services = sql_crud.get_services_by_entity_did(db, entity_did=str(entity.did))
|
||||||
|
return ServicesByName(entity=entity, services=services) # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
@router.delete("/api/v1/{entity_did}/service", tags=[Tags.services])
|
||||||
|
async def delete_service(
|
||||||
|
entity_did: str = "did:sov:test:1234",
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> dict[str, str]:
|
||||||
|
sql_crud.delete_service_by_entity_did(db, entity_did)
|
||||||
|
return {"message": "service deleted"}
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# #
|
||||||
|
# REPOSITORY #
|
||||||
|
# #
|
||||||
|
#########################
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/repositories",
|
||||||
|
response_model=List[Service],
|
||||||
|
tags=[Tags.repositories],
|
||||||
|
)
|
||||||
|
async def get_all_repositories(
|
||||||
|
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> List[sql_models.Service]:
|
||||||
|
repositories = sql_crud.get_services(db, skip=skip, limit=limit)
|
||||||
|
return repositories
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# #
|
||||||
|
# Entity #
|
||||||
|
# #
|
||||||
|
#########################
|
||||||
|
@router.post("/api/v1/entity", response_model=Entity, tags=[Tags.entities])
|
||||||
|
async def create_entity(
|
||||||
|
entity: EntityCreate, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> EntityCreate:
|
||||||
|
return sql_crud.create_entity(db, entity)
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/entity_by_name", response_model=Optional[Entity], tags=[Tags.entities]
|
||||||
|
)
|
||||||
|
async def get_entity_by_name(
|
||||||
|
entity_name: str, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> Optional[sql_models.Entity]:
|
||||||
|
entity = sql_crud.get_entity_by_name(db, name=entity_name)
|
||||||
|
return entity
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/api/v1/entities", response_model=List[Entity], tags=[Tags.entities])
|
||||||
|
async def get_all_entities(
|
||||||
|
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> List[sql_models.Entity]:
|
||||||
|
entities = sql_crud.get_entities(db, skip=skip, limit=limit)
|
||||||
|
return entities
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/{entity_did}/entity", response_model=Optional[Entity], tags=[Tags.entities]
|
||||||
|
)
|
||||||
|
async def get_entity_by_did(
|
||||||
|
entity_did: str = "did:sov:test:1234",
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> Optional[sql_models.Entity]:
|
||||||
|
entity = sql_crud.get_entity_by_did(db, did=entity_did)
|
||||||
|
return entity
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/attached_entities",
|
||||||
|
response_model=List[Entity],
|
||||||
|
tags=[Tags.entities],
|
||||||
|
)
|
||||||
|
async def get_attached_entities(
|
||||||
|
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> List[sql_models.Entity]:
|
||||||
|
entities = sql_crud.get_attached_entities(db, skip=skip, limit=limit)
|
||||||
|
return entities
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/api/v1/{entity_did}/detach", response_model=Entity, tags=[Tags.entities])
|
||||||
|
async def detach_entity(
|
||||||
|
background_tasks: BackgroundTasks,
|
||||||
|
entity_did: str = "did:sov:test:1234",
|
||||||
|
skip: int = 0,
|
||||||
|
limit: int = 100,
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> sql_models.Entity:
|
||||||
|
entity = sql_crud.set_attached_by_entity_did(db, entity_did, False)
|
||||||
|
return entity
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/api/v1/{entity_did}/attach", tags=[Tags.entities])
|
||||||
|
async def attach_entity(
|
||||||
|
background_tasks: BackgroundTasks,
|
||||||
|
entity_did: str = "did:sov:test:1234",
|
||||||
|
skip: int = 0,
|
||||||
|
limit: int = 100,
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> dict[str, str]:
|
||||||
|
if sql_crud.get_entity_by_did(db, entity_did) is None:
|
||||||
|
raise ClanError(f"Entity with did '{entity_did}' not found")
|
||||||
|
|
||||||
|
background_tasks.add_task(attach_entity_loc, db, entity_did)
|
||||||
|
return {"message": "Attaching in the background"}
|
||||||
|
|
||||||
|
|
||||||
|
def attach_entity_loc(db: Session, entity_did: str) -> None:
|
||||||
|
db_entity = sql_crud.set_attached_by_entity_did(db, entity_did, True)
|
||||||
|
try:
|
||||||
|
while db_entity.attached:
|
||||||
|
# query status endpoint
|
||||||
|
# https://www.python-httpx.org/
|
||||||
|
response = httpx.get(f"http://{db_entity.ip}", timeout=2)
|
||||||
|
print(response)
|
||||||
|
# test with:
|
||||||
|
# while true ; do printf 'HTTP/1.1 200 OK\r\n\r\ncool, thanks' | nc -l -N localhost 5555 ; done
|
||||||
|
# client test (apt install python3-httpx):
|
||||||
|
# httpx http://localhost:5555
|
||||||
|
# except not reached set false
|
||||||
|
time.sleep(1)
|
||||||
|
except Exception:
|
||||||
|
log.warning(f"Entity {entity_did} not reachable. Setting attached to false")
|
||||||
|
|
||||||
|
db_entity = sql_crud.set_attached_by_entity_did(db, entity_did, False)
|
||||||
|
|
||||||
|
|
||||||
|
@router.delete("/api/v1/{entity_did}/entity", tags=[Tags.entities])
|
||||||
|
async def delete_entity(
|
||||||
|
entity_did: str = "did:sov:test:1234",
|
||||||
|
db: Session = Depends(sql_db.get_db),
|
||||||
|
) -> dict[str, str]:
|
||||||
|
sql_crud.delete_entity_by_did_recursive(db, did=entity_did)
|
||||||
|
return {"message": "Entity deleted and all relations to that entity"}
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# #
|
||||||
|
# Resolution #
|
||||||
|
# #
|
||||||
|
#########################
|
||||||
|
|
||||||
|
|
||||||
|
@router.get(
|
||||||
|
"/api/v1/resolutions", response_model=List[Resolution], tags=[Tags.resolutions]
|
||||||
|
)
|
||||||
|
async def get_all_resolutions(
|
||||||
|
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
||||||
|
) -> List[Resolution]:
|
||||||
|
# TODO: Get resolutions from DLG entity
|
||||||
|
|
||||||
|
return [
|
||||||
|
Resolution(
|
||||||
|
requester_name="C1",
|
||||||
|
requester_did="did:sov:test:1122",
|
||||||
|
resolved_did="did:sov:test:1234",
|
||||||
|
other={"test": "test"},
|
||||||
|
timestamp=datetime.now(),
|
||||||
|
id=1,
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -1,312 +0,0 @@
|
|||||||
import logging
|
|
||||||
import time
|
|
||||||
from typing import List, Optional
|
|
||||||
|
|
||||||
import httpx
|
|
||||||
from fastapi import APIRouter, BackgroundTasks, Depends
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
|
|
||||||
from ...errors import ClanError
|
|
||||||
from .. import sql_crud, sql_db, sql_models
|
|
||||||
from ..schemas import (
|
|
||||||
Consumer,
|
|
||||||
ConsumerCreate,
|
|
||||||
Entity,
|
|
||||||
EntityCreate,
|
|
||||||
Producer,
|
|
||||||
ProducerCreate,
|
|
||||||
Repository,
|
|
||||||
RepositoryCreate,
|
|
||||||
Resolution,
|
|
||||||
ResolutionCreate,
|
|
||||||
)
|
|
||||||
from ..tags import Tags
|
|
||||||
|
|
||||||
router = APIRouter()
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Producer #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
@router.post("/api/v1/create_producer", response_model=Producer, tags=[Tags.producers])
|
|
||||||
def create_producer(
|
|
||||||
producer: ProducerCreate, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> Producer:
|
|
||||||
# todo checken ob schon da ...
|
|
||||||
return sql_crud.create_producer(db=db, producer=producer)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_producers", response_model=List[Producer], tags=[Tags.producers]
|
|
||||||
)
|
|
||||||
def get_producers(
|
|
||||||
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> List[sql_models.Producer]:
|
|
||||||
producers = sql_crud.get_producers(db, skip=skip, limit=limit)
|
|
||||||
return producers
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_producer", response_model=List[Producer], tags=[Tags.producers]
|
|
||||||
)
|
|
||||||
def get_producer(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
skip: int = 0,
|
|
||||||
limit: int = 100,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> List[sql_models.Producer]:
|
|
||||||
producer = sql_crud.get_producers_by_entity_did(db, entity_did=entity_did)
|
|
||||||
return producer
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/api/v1/delete_producer", tags=[Tags.producers])
|
|
||||||
def delete_producer(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> dict[str, str]:
|
|
||||||
sql_crud.delete_producer_by_entity_did(db, entity_did)
|
|
||||||
return {"message": "Producer deleted"}
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Consumer #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
@router.post("/api/v1/create_consumer", response_model=Consumer, tags=[Tags.consumers])
|
|
||||||
def create_consumer(
|
|
||||||
consumer: ConsumerCreate, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> Consumer:
|
|
||||||
# todo checken ob schon da ...
|
|
||||||
return sql_crud.create_consumer(db=db, consumer=consumer)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_consumers", response_model=List[Consumer], tags=[Tags.consumers]
|
|
||||||
)
|
|
||||||
def get_consumers(
|
|
||||||
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> List[sql_models.Consumer]:
|
|
||||||
consumers = sql_crud.get_consumers(db, skip=skip, limit=limit)
|
|
||||||
return consumers
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_consumer", response_model=List[Consumer], tags=[Tags.consumers]
|
|
||||||
)
|
|
||||||
def get_consumer(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
skip: int = 0,
|
|
||||||
limit: int = 100,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> List[sql_models.Consumer]:
|
|
||||||
consumer = sql_crud.get_consumers_by_entity_did(db, entity_did=entity_did)
|
|
||||||
return consumer
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/api/v1/delete_consumer", tags=[Tags.consumers])
|
|
||||||
def delete_consumer(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> dict[str, str]:
|
|
||||||
sql_crud.delete_consumer_by_entity_did(db, entity_did)
|
|
||||||
return {"message": "Consumer deleted"}
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# REPOSITORY #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
@router.post(
|
|
||||||
"/api/v1/create_repository", response_model=Repository, tags=[Tags.repositories]
|
|
||||||
)
|
|
||||||
def create_repository(
|
|
||||||
repository: RepositoryCreate, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> sql_models.Repository:
|
|
||||||
# todo checken ob schon da ...
|
|
||||||
return sql_crud.create_repository(db=db, repository=repository)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_repositories",
|
|
||||||
response_model=List[Repository],
|
|
||||||
tags=[Tags.repositories],
|
|
||||||
)
|
|
||||||
def get_repositories(
|
|
||||||
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> List[sql_models.Repository]:
|
|
||||||
repositories = sql_crud.get_repositories(db, skip=skip, limit=limit)
|
|
||||||
return repositories
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_repository", response_model=List[Repository], tags=[Tags.repositories]
|
|
||||||
)
|
|
||||||
def get_repository(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
skip: int = 0,
|
|
||||||
limit: int = 100,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> List[sql_models.Repository]:
|
|
||||||
repository = sql_crud.get_repository_by_entity_did(db, did=entity_did)
|
|
||||||
return repository
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/api/v1/delete_repository", tags=[Tags.repositories])
|
|
||||||
def delete_repository(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> dict[str, str]:
|
|
||||||
sql_crud.delete_repository_by_entity_did(db, did=entity_did)
|
|
||||||
return {"message": "Repository deleted"}
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Entity #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
@router.post("/api/v1/create_entity", response_model=Entity, tags=[Tags.entities])
|
|
||||||
def create_entity(
|
|
||||||
entity: EntityCreate, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> EntityCreate:
|
|
||||||
return sql_crud.create_entity(db, entity)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/api/v1/get_entities", response_model=List[Entity], tags=[Tags.entities])
|
|
||||||
def get_entities(
|
|
||||||
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> List[sql_models.Entity]:
|
|
||||||
entities = sql_crud.get_entities(db, skip=skip, limit=limit)
|
|
||||||
return entities
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/api/v1/get_entity", response_model=Optional[Entity], tags=[Tags.entities])
|
|
||||||
def get_entity(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> Optional[sql_models.Entity]:
|
|
||||||
entity = sql_crud.get_entity_by_did(db, did=entity_did)
|
|
||||||
return entity
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_attached_entities",
|
|
||||||
response_model=List[Entity],
|
|
||||||
tags=[Tags.entities],
|
|
||||||
)
|
|
||||||
def get_attached_entities(
|
|
||||||
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> List[sql_models.Entity]:
|
|
||||||
entities = sql_crud.get_attached_entities(db, skip=skip, limit=limit)
|
|
||||||
return entities
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/api/v1/detach", response_model=Entity, tags=[Tags.entities])
|
|
||||||
async def detach(
|
|
||||||
background_tasks: BackgroundTasks,
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
skip: int = 0,
|
|
||||||
limit: int = 100,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> sql_models.Entity:
|
|
||||||
entity = sql_crud.set_attached_by_entity_did(db, entity_did, False)
|
|
||||||
return entity
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/api/v1/attach", tags=[Tags.entities])
|
|
||||||
async def attach(
|
|
||||||
background_tasks: BackgroundTasks,
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
skip: int = 0,
|
|
||||||
limit: int = 100,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> dict[str, str]:
|
|
||||||
if sql_crud.get_entity_by_did(db, entity_did) is None:
|
|
||||||
raise ClanError(f"Entity with did '{entity_did}' not found")
|
|
||||||
|
|
||||||
background_tasks.add_task(attach_entity, db, entity_did)
|
|
||||||
return {"message": "Attaching in the background"}
|
|
||||||
|
|
||||||
|
|
||||||
def attach_entity(db: Session, entity_did: str) -> None:
|
|
||||||
db_entity = sql_crud.set_attached_by_entity_did(db, entity_did, True)
|
|
||||||
try:
|
|
||||||
while db_entity.attached:
|
|
||||||
# query status endpoint
|
|
||||||
# https://www.python-httpx.org/
|
|
||||||
response = httpx.get(f"http://{db_entity.ip}", timeout=2)
|
|
||||||
print(response)
|
|
||||||
# test with:
|
|
||||||
# while true ; do printf 'HTTP/1.1 200 OK\r\n\r\ncool, thanks' | nc -l -N localhost 5555 ; done
|
|
||||||
# client test (apt install python3-httpx):
|
|
||||||
# httpx http://localhost:5555
|
|
||||||
# except not reached set false
|
|
||||||
time.sleep(1)
|
|
||||||
except Exception:
|
|
||||||
log.warning(f"Entity {entity_did} not reachable. Setting attached to false")
|
|
||||||
|
|
||||||
db_entity = sql_crud.set_attached_by_entity_did(db, entity_did, False)
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/api/v1/delete_entity_recursive", tags=[Tags.entities])
|
|
||||||
def delete_entity(
|
|
||||||
entity_did: str = "did:sov:test:1234",
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> dict[str, str]:
|
|
||||||
sql_crud.delete_entity_by_did_recursive(db, did=entity_did)
|
|
||||||
return {"message": "Entity deleted and all relations to that entity"}
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Resolution #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
@router.post(
|
|
||||||
"/api/v1/create_resolution", response_model=Resolution, tags=[Tags.resolutions]
|
|
||||||
)
|
|
||||||
def create_resolution(
|
|
||||||
resolution: ResolutionCreate,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> sql_models.Resolution:
|
|
||||||
return sql_crud.create_resolution(db, resolution)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_resolutions", response_model=List[Resolution], tags=[Tags.resolutions]
|
|
||||||
)
|
|
||||||
def get_resolutions(
|
|
||||||
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
|
|
||||||
) -> List[sql_models.Resolution]:
|
|
||||||
resolutions = sql_crud.get_resolutions(db, skip=skip, limit=limit)
|
|
||||||
return resolutions
|
|
||||||
|
|
||||||
|
|
||||||
@router.get(
|
|
||||||
"/api/v1/get_resolution", response_model=List[Resolution], tags=[Tags.resolutions]
|
|
||||||
)
|
|
||||||
def get_resolution(
|
|
||||||
requester_did: str = "did:sov:test:1122",
|
|
||||||
skip: int = 0,
|
|
||||||
limit: int = 100,
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> List[sql_models.Resolution]:
|
|
||||||
resolution = sql_crud.get_resolution_by_requester_did(
|
|
||||||
db, requester_did=requester_did
|
|
||||||
)
|
|
||||||
return resolution
|
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/api/v1/delete_resolution", tags=[Tags.resolutions])
|
|
||||||
def delete_resolution(
|
|
||||||
requester_did: str = "did:sov:test:1122",
|
|
||||||
db: Session = Depends(sql_db.get_db),
|
|
||||||
) -> dict[str, str]:
|
|
||||||
sql_crud.delete_resolution_by_requester_did(db, requester_did=requester_did)
|
|
||||||
return {"message": "Resolution deleted"}
|
|
||||||
@@ -2,7 +2,7 @@ from datetime import datetime
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
|
||||||
class Status(Enum):
|
class Status(Enum):
|
||||||
@@ -16,86 +16,23 @@ class Machine(BaseModel):
|
|||||||
status: Status
|
status: Status
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Producer #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
class ProducerBase(BaseModel):
|
|
||||||
uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df"
|
|
||||||
service_name: str = "Carlo's Printing"
|
|
||||||
service_type: str = "3D Printing"
|
|
||||||
endpoint_url: str = "http://127.0.0.1:8000"
|
|
||||||
status: str = "unknown"
|
|
||||||
other: dict = {"action": ["register", "deregister", "delete", "create"]}
|
|
||||||
|
|
||||||
|
|
||||||
class ProducerCreate(ProducerBase):
|
|
||||||
entity_did: str = "did:sov:test:1234"
|
|
||||||
|
|
||||||
|
|
||||||
class Producer(ProducerCreate):
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Consumer #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
class ConsumerBase(BaseModel):
|
|
||||||
entity_did: str = "did:sov:test:1234"
|
|
||||||
producer_uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df"
|
|
||||||
other: dict = {"test": "test"}
|
|
||||||
|
|
||||||
|
|
||||||
class ConsumerCreate(ConsumerBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class Consumer(ConsumerCreate):
|
|
||||||
id: int
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# REPOSITORY #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
class RepositoryBase(ProducerBase):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class RepositoryCreate(RepositoryBase):
|
|
||||||
entity_did: str = "did:sov:test:1234"
|
|
||||||
|
|
||||||
|
|
||||||
class Repository(RepositoryCreate):
|
|
||||||
time_created: datetime
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
orm_mode = True
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# #
|
# #
|
||||||
# Entity #
|
# Entity #
|
||||||
# #
|
# #
|
||||||
#########################
|
#########################
|
||||||
class EntityBase(BaseModel):
|
class EntityBase(BaseModel):
|
||||||
did: str = "did:sov:test:1234"
|
did: str = Field(..., example="did:sov:test:1234")
|
||||||
name: str = "C1"
|
name: str = Field(..., example="C1")
|
||||||
ip: str = "127.0.0.1"
|
ip: str = Field(..., example="127.0.0.1")
|
||||||
attached: bool = False
|
visible: bool = Field(..., example=True)
|
||||||
visible: bool = True
|
other: dict = Field(
|
||||||
other: dict = {
|
...,
|
||||||
"network": "Carlo's Home Network",
|
example={
|
||||||
"roles": ["service repository", "service prosumer"],
|
"network": "Carlos Home Network",
|
||||||
}
|
"roles": ["service repository", "service prosumer"],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EntityCreate(EntityBase):
|
class EntityCreate(EntityBase):
|
||||||
@@ -103,9 +40,42 @@ class EntityCreate(EntityBase):
|
|||||||
|
|
||||||
|
|
||||||
class Entity(EntityCreate):
|
class Entity(EntityCreate):
|
||||||
producers: List[Producer] = []
|
attached: bool = Field(...)
|
||||||
consumers: List[Consumer] = []
|
|
||||||
repository: List[Repository] = []
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# #
|
||||||
|
# Service #
|
||||||
|
# #
|
||||||
|
#########################
|
||||||
|
class ServiceBase(BaseModel):
|
||||||
|
uuid: str = Field(..., example="8e285c0c-4e40-430a-a477-26b3b81e30df")
|
||||||
|
service_name: str = Field(..., example="Carlos Printing")
|
||||||
|
service_type: str = Field(..., example="3D Printing")
|
||||||
|
endpoint_url: str = Field(..., example="http://127.0.0.1:8000")
|
||||||
|
status: str = Field(..., example="unknown")
|
||||||
|
other: dict = Field(
|
||||||
|
..., example={"action": ["register", "deregister", "delete", "create"]}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceCreate(ServiceBase):
|
||||||
|
entity_did: str = Field(..., example="did:sov:test:1234")
|
||||||
|
|
||||||
|
|
||||||
|
class Service(ServiceCreate):
|
||||||
|
entity: Entity
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
|
||||||
|
|
||||||
|
class ServicesByName(BaseModel):
|
||||||
|
entity: Entity
|
||||||
|
services: List[Service]
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
orm_mode = True
|
orm_mode = True
|
||||||
@@ -116,13 +86,11 @@ class Entity(EntityCreate):
|
|||||||
# Resolution #
|
# Resolution #
|
||||||
# #
|
# #
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
|
|
||||||
class ResolutionBase(BaseModel):
|
class ResolutionBase(BaseModel):
|
||||||
requester_name: str = "C1"
|
requester_name: str = Field(..., example="C1")
|
||||||
requester_did: str = "did:sov:test:1122"
|
requester_did: str = Field(..., example="did:sov:test:1122")
|
||||||
resolved_did: str = "did:sov:test:1234"
|
resolved_did: str = Field(..., example="did:sov:test:1234")
|
||||||
other: dict = {"test": "test"}
|
other: dict = Field(..., example={"test": "test"})
|
||||||
|
|
||||||
|
|
||||||
class ResolutionCreate(ResolutionBase):
|
class ResolutionCreate(ResolutionBase):
|
||||||
|
|||||||
@@ -8,143 +8,63 @@ from . import schemas, sql_models
|
|||||||
|
|
||||||
#########################
|
#########################
|
||||||
# #
|
# #
|
||||||
# Producer #
|
# service #
|
||||||
# #
|
# #
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
|
|
||||||
def create_producer(
|
def create_service(db: Session, service: schemas.ServiceCreate) -> sql_models.Service:
|
||||||
db: Session, producer: schemas.ProducerCreate
|
db_service = sql_models.Service(**service.dict())
|
||||||
) -> sql_models.Producer:
|
db.add(db_service)
|
||||||
db_producer = sql_models.Producer(**producer.dict())
|
|
||||||
db.add(db_producer)
|
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(db_producer)
|
db.refresh(db_service)
|
||||||
return db_producer
|
return db_service
|
||||||
|
|
||||||
|
|
||||||
def get_producers(
|
def get_services(
|
||||||
db: Session, skip: int = 0, limit: int = 100
|
db: Session, skip: int = 0, limit: int = 100
|
||||||
) -> List[sql_models.Producer]:
|
) -> List[sql_models.Service]:
|
||||||
return db.query(sql_models.Producer).offset(skip).limit(limit).all()
|
return db.query(sql_models.Service).offset(skip).limit(limit).all()
|
||||||
|
|
||||||
|
|
||||||
def get_producers_by_entity_did(
|
def get_services_by_entity_did(
|
||||||
db: Session, entity_did: str, skip: int = 0, limit: int = 100
|
db: Session, entity_did: str, skip: int = 0, limit: int = 100
|
||||||
) -> List[sql_models.Producer]:
|
) -> List[sql_models.Service]:
|
||||||
return (
|
return (
|
||||||
db.query(sql_models.Producer)
|
db.query(sql_models.Service)
|
||||||
.filter(sql_models.Producer.entity_did == entity_did)
|
.filter(sql_models.Service.entity_did == entity_did)
|
||||||
.offset(skip)
|
.offset(skip)
|
||||||
.limit(limit)
|
.limit(limit)
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def delete_producer_by_entity_did(db: Session, entity_did: str) -> None:
|
def delete_service_by_entity_did(db: Session, entity_did: str) -> None:
|
||||||
db.query(sql_models.Producer).filter(
|
db.query(sql_models.Service).filter(
|
||||||
sql_models.Producer.entity_did == entity_did
|
sql_models.Service.entity_did == entity_did
|
||||||
).delete()
|
).delete()
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
#########################
|
def get_services_without_entity_id(
|
||||||
# #
|
|
||||||
# Consumer #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
|
|
||||||
|
|
||||||
def create_consumer(
|
|
||||||
db: Session, consumer: schemas.ConsumerCreate
|
|
||||||
) -> sql_models.Consumer:
|
|
||||||
db_consumer = sql_models.Consumer(**consumer.dict())
|
|
||||||
db.add(db_consumer)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(db_consumer)
|
|
||||||
return db_consumer
|
|
||||||
|
|
||||||
|
|
||||||
def get_consumers(
|
|
||||||
db: Session, skip: int = 0, limit: int = 100
|
|
||||||
) -> List[sql_models.Consumer]:
|
|
||||||
return db.query(sql_models.Consumer).offset(skip).limit(limit).all()
|
|
||||||
|
|
||||||
|
|
||||||
def get_consumers_by_entity_did(
|
|
||||||
db: Session, entity_did: str, skip: int = 0, limit: int = 100
|
db: Session, entity_did: str, skip: int = 0, limit: int = 100
|
||||||
) -> List[sql_models.Consumer]:
|
) -> List[sql_models.Service]:
|
||||||
return (
|
return (
|
||||||
db.query(sql_models.Consumer)
|
db.query(sql_models.Service)
|
||||||
.filter(sql_models.Consumer.entity_did == entity_did)
|
.filter(sql_models.Service.entity_did != entity_did)
|
||||||
.offset(skip)
|
.offset(skip)
|
||||||
.limit(limit)
|
.limit(limit)
|
||||||
.all()
|
.all()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def delete_consumer_by_entity_did(db: Session, entity_did: str) -> None:
|
|
||||||
db.query(sql_models.Consumer).filter(
|
|
||||||
sql_models.Consumer.entity_did == entity_did
|
|
||||||
).delete()
|
|
||||||
db.commit()
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# REPOSITORY #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
def create_repository(
|
|
||||||
db: Session, repository: schemas.RepositoryCreate
|
|
||||||
) -> sql_models.Repository:
|
|
||||||
db_repository = sql_models.Repository(**repository.dict())
|
|
||||||
db.add(db_repository)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(db_repository)
|
|
||||||
return db_repository
|
|
||||||
|
|
||||||
|
|
||||||
def get_repositories(
|
|
||||||
db: Session, skip: int = 0, limit: int = 100
|
|
||||||
) -> List[sql_models.Repository]:
|
|
||||||
return db.query(sql_models.Repository).offset(skip).limit(limit).all()
|
|
||||||
|
|
||||||
|
|
||||||
def get_repository_by_uuid(db: Session, uuid: str) -> Optional[sql_models.Repository]:
|
|
||||||
return (
|
|
||||||
db.query(sql_models.Repository)
|
|
||||||
.filter(sql_models.Repository.uuid == uuid)
|
|
||||||
.first()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def get_repository_by_entity_did(
|
|
||||||
db: Session, did: str, skip: int = 0, limit: int = 100
|
|
||||||
) -> List[sql_models.Repository]:
|
|
||||||
return (
|
|
||||||
db.query(sql_models.Repository)
|
|
||||||
.filter(sql_models.Repository.entity_did == did)
|
|
||||||
.offset(skip)
|
|
||||||
.limit(limit)
|
|
||||||
.all()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def delete_repository_by_entity_did(db: Session, did: str) -> None:
|
|
||||||
db.query(sql_models.Repository).filter(
|
|
||||||
sql_models.Repository.entity_did == did
|
|
||||||
).delete()
|
|
||||||
db.commit()
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# #
|
# #
|
||||||
# Entity #
|
# Entity #
|
||||||
# #
|
# #
|
||||||
#########################
|
#########################
|
||||||
def create_entity(db: Session, entity: schemas.EntityCreate) -> sql_models.Entity:
|
def create_entity(db: Session, entity: schemas.EntityCreate) -> sql_models.Entity:
|
||||||
db_entity = sql_models.Entity(**entity.dict())
|
db_entity = sql_models.Entity(**entity.dict(), attached=False)
|
||||||
db.add(db_entity)
|
db.add(db_entity)
|
||||||
db.commit()
|
db.commit()
|
||||||
db.refresh(db_entity)
|
db.refresh(db_entity)
|
||||||
@@ -161,6 +81,10 @@ def get_entity_by_did(db: Session, did: str) -> Optional[sql_models.Entity]:
|
|||||||
return db.query(sql_models.Entity).filter(sql_models.Entity.did == did).first()
|
return db.query(sql_models.Entity).filter(sql_models.Entity.did == did).first()
|
||||||
|
|
||||||
|
|
||||||
|
def get_entity_by_name(db: Session, name: str) -> Optional[sql_models.Entity]:
|
||||||
|
return db.query(sql_models.Entity).filter(sql_models.Entity.name == name).first()
|
||||||
|
|
||||||
|
|
||||||
# get attached
|
# get attached
|
||||||
def get_attached_entities(
|
def get_attached_entities(
|
||||||
db: Session, skip: int = 0, limit: int = 100
|
db: Session, skip: int = 0, limit: int = 100
|
||||||
@@ -198,47 +122,5 @@ def delete_entity_by_did(db: Session, did: str) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def delete_entity_by_did_recursive(db: Session, did: str) -> None:
|
def delete_entity_by_did_recursive(db: Session, did: str) -> None:
|
||||||
delete_producer_by_entity_did(db, did)
|
delete_service_by_entity_did(db, did)
|
||||||
delete_consumer_by_entity_did(db, did)
|
|
||||||
delete_repository_by_entity_did(db, did)
|
|
||||||
delete_entity_by_did(db, did)
|
delete_entity_by_did(db, did)
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Resolution #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
def create_resolution(
|
|
||||||
db: Session, resolution: schemas.ResolutionCreate
|
|
||||||
) -> sql_models.Resolution:
|
|
||||||
db_resolution = sql_models.Resolution(**resolution.dict())
|
|
||||||
db.add(db_resolution)
|
|
||||||
db.commit()
|
|
||||||
db.refresh(db_resolution)
|
|
||||||
return db_resolution
|
|
||||||
|
|
||||||
|
|
||||||
def get_resolutions(
|
|
||||||
db: Session, skip: int = 0, limit: int = 100
|
|
||||||
) -> List[sql_models.Resolution]:
|
|
||||||
return db.query(sql_models.Resolution).offset(skip).limit(limit).all()
|
|
||||||
|
|
||||||
|
|
||||||
def get_resolution_by_requester_did(
|
|
||||||
db: Session, requester_did: str, skip: int = 0, limit: int = 100
|
|
||||||
) -> List[sql_models.Resolution]:
|
|
||||||
return (
|
|
||||||
db.query(sql_models.Resolution)
|
|
||||||
.filter(sql_models.Resolution.requester_did == requester_did)
|
|
||||||
.offset(skip)
|
|
||||||
.limit(limit)
|
|
||||||
.all()
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def delete_resolution_by_requester_did(db: Session, requester_did: str) -> None:
|
|
||||||
db.query(sql_models.Resolution).filter(
|
|
||||||
sql_models.Resolution.requester_did == requester_did
|
|
||||||
).delete()
|
|
||||||
db.commit()
|
|
||||||
|
|||||||
@@ -2,15 +2,11 @@ from sqlalchemy import (
|
|||||||
JSON,
|
JSON,
|
||||||
Boolean,
|
Boolean,
|
||||||
Column,
|
Column,
|
||||||
DateTime,
|
|
||||||
ForeignKey,
|
ForeignKey,
|
||||||
Integer,
|
|
||||||
String,
|
String,
|
||||||
Text,
|
Text,
|
||||||
UniqueConstraint,
|
|
||||||
)
|
)
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.sql import func
|
|
||||||
|
|
||||||
from .sql_db import Base
|
from .sql_db import Base
|
||||||
|
|
||||||
@@ -23,7 +19,7 @@ class Entity(Base):
|
|||||||
|
|
||||||
## Queryable body ##
|
## Queryable body ##
|
||||||
did = Column(String, primary_key=True, index=True)
|
did = Column(String, primary_key=True, index=True)
|
||||||
name = Column(String, index=True)
|
name = Column(String, index=True, unique=True)
|
||||||
ip = Column(String, index=True)
|
ip = Column(String, index=True)
|
||||||
attached = Column(Boolean, index=True)
|
attached = Column(Boolean, index=True)
|
||||||
visible = Column(Boolean, index=True)
|
visible = Column(Boolean, index=True)
|
||||||
@@ -33,13 +29,10 @@ class Entity(Base):
|
|||||||
other = Column(JSON)
|
other = Column(JSON)
|
||||||
|
|
||||||
## Relations ##
|
## Relations ##
|
||||||
producers = relationship("Producer", back_populates="entity")
|
services = relationship("Service", back_populates="entity")
|
||||||
consumers = relationship("Consumer", back_populates="entity")
|
|
||||||
repository = relationship("Repository", back_populates="entity")
|
|
||||||
# TODO maby refactor to repositories
|
|
||||||
|
|
||||||
|
|
||||||
class ProducerAbstract(Base):
|
class ServiceAbstract(Base):
|
||||||
__abstract__ = True
|
__abstract__ = True
|
||||||
|
|
||||||
# Queryable body
|
# Queryable body
|
||||||
@@ -54,58 +47,10 @@ class ProducerAbstract(Base):
|
|||||||
other = Column(JSON)
|
other = Column(JSON)
|
||||||
|
|
||||||
|
|
||||||
class Producer(ProducerAbstract):
|
class Service(ServiceAbstract):
|
||||||
__tablename__ = "producers"
|
__tablename__ = "services"
|
||||||
|
|
||||||
# Usage is the consumers column
|
|
||||||
|
|
||||||
## Relations ##
|
## Relations ##
|
||||||
# One entity can have many producers
|
# One entity can have many services
|
||||||
entity = relationship("Entity", back_populates="producers")
|
entity = relationship("Entity", back_populates="services")
|
||||||
entity_did = Column(String, ForeignKey("entities.did"))
|
entity_did = Column(String, ForeignKey("entities.did"))
|
||||||
|
|
||||||
# One producer has many consumers
|
|
||||||
consumers = relationship("Consumer", back_populates="producer")
|
|
||||||
|
|
||||||
|
|
||||||
class Consumer(Base):
|
|
||||||
__tablename__ = "consumers"
|
|
||||||
|
|
||||||
## Queryable body ##
|
|
||||||
id = Column(Integer, primary_key=True, index=True)
|
|
||||||
|
|
||||||
## Non queryable body ##
|
|
||||||
other = Column(JSON)
|
|
||||||
|
|
||||||
## Relations ##
|
|
||||||
# one entity can have many consumers
|
|
||||||
entity = relationship("Entity", back_populates="consumers")
|
|
||||||
entity_did = Column(String, ForeignKey("entities.did"))
|
|
||||||
|
|
||||||
# one consumer has one producer
|
|
||||||
producer = relationship("Producer", back_populates="consumers")
|
|
||||||
producer_uuid = Column(String, ForeignKey("producers.uuid"))
|
|
||||||
|
|
||||||
__table_args__ = (UniqueConstraint("producer_uuid", "entity_did"),)
|
|
||||||
|
|
||||||
|
|
||||||
class Repository(ProducerAbstract):
|
|
||||||
__tablename__ = "repositories"
|
|
||||||
|
|
||||||
time_created = Column(DateTime(timezone=True), server_default=func.now())
|
|
||||||
|
|
||||||
# one repository has one entity
|
|
||||||
entity = relationship("Entity", back_populates="repository")
|
|
||||||
entity_did = Column(Integer, ForeignKey("entities.did"))
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: Ask how this works exactly
|
|
||||||
class Resolution(Base):
|
|
||||||
__tablename__ = "resolutions"
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
|
||||||
requester_name = Column(String, index=True)
|
|
||||||
requester_did = Column(String, index=True)
|
|
||||||
resolved_did = Column(String, index=True)
|
|
||||||
other = Column(JSON)
|
|
||||||
timestamp = Column(DateTime(timezone=True), server_default=func.now())
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ from typing import Any, Dict, List
|
|||||||
|
|
||||||
|
|
||||||
class Tags(Enum):
|
class Tags(Enum):
|
||||||
producers = "producers"
|
services = "services"
|
||||||
consumers = "consumers"
|
clients = "clients"
|
||||||
entities = "entities"
|
entities = "entities"
|
||||||
repositories = "repositories"
|
repositories = "repositories"
|
||||||
resolutions = "resolution"
|
resolutions = "resolution"
|
||||||
@@ -15,12 +15,12 @@ class Tags(Enum):
|
|||||||
|
|
||||||
tags_metadata: List[Dict[str, Any]] = [
|
tags_metadata: List[Dict[str, Any]] = [
|
||||||
{
|
{
|
||||||
"name": str(Tags.producers),
|
"name": str(Tags.services),
|
||||||
"description": "Operations on a producer.",
|
"description": "Operations on a service.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": str(Tags.consumers),
|
"name": str(Tags.clients),
|
||||||
"description": "Operations on a consumer.",
|
"description": "Operations on a client.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": str(Tags.entities),
|
"name": str(Tags.entities),
|
||||||
|
|||||||
@@ -36,8 +36,10 @@
|
|||||||
, mypy
|
, mypy
|
||||||
, sqlalchemy
|
, sqlalchemy
|
||||||
, websockets
|
, websockets
|
||||||
, deal
|
|
||||||
, broadcaster
|
, broadcaster
|
||||||
|
, aenum
|
||||||
|
, dateutil
|
||||||
|
, urllib3
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
|
||||||
@@ -48,7 +50,6 @@ let
|
|||||||
sqlalchemy
|
sqlalchemy
|
||||||
websockets
|
websockets
|
||||||
broadcaster
|
broadcaster
|
||||||
deal
|
|
||||||
];
|
];
|
||||||
|
|
||||||
pytestDependencies = runtimeDependencies ++ dependencies ++ [
|
pytestDependencies = runtimeDependencies ++ dependencies ++ [
|
||||||
@@ -63,6 +64,10 @@ let
|
|||||||
git
|
git
|
||||||
gnupg
|
gnupg
|
||||||
stdenv.cc
|
stdenv.cc
|
||||||
|
# openapi client deps
|
||||||
|
dateutil
|
||||||
|
aenum
|
||||||
|
urllib3
|
||||||
];
|
];
|
||||||
|
|
||||||
# Optional dependencies for clan cli, we re-expose them here to make sure they all build.
|
# Optional dependencies for clan cli, we re-expose them here to make sure they all build.
|
||||||
|
|||||||
3
pkgs/clan-cli/emulate_entity.sh
Executable file
3
pkgs/clan-cli/emulate_entity.sh
Executable file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
while true ; do printf 'HTTP/1.1 200 OK\r\n\r\ncool, thanks' | nc -l -N 127.0.0.1 5555 ; done
|
||||||
@@ -8,7 +8,6 @@
|
|||||||
clan-cli = pkgs.python3.pkgs.callPackage ./default.nix {
|
clan-cli = pkgs.python3.pkgs.callPackage ./default.nix {
|
||||||
inherit (self'.packages) ui-assets;
|
inherit (self'.packages) ui-assets;
|
||||||
inherit (inputs) nixpkgs;
|
inherit (inputs) nixpkgs;
|
||||||
inherit (inputs.nixpkgs-for-iosl.legacyPackages.${system}.python3Packages) deal;
|
|
||||||
inherit (inputs.nixpkgs-for-iosl.legacyPackages.${system}.python3Packages) broadcaster;
|
inherit (inputs.nixpkgs-for-iosl.legacyPackages.${system}.python3Packages) broadcaster;
|
||||||
};
|
};
|
||||||
inherit (self'.packages.clan-cli) clan-openapi;
|
inherit (self'.packages.clan-cli) clan-openapi;
|
||||||
|
|||||||
@@ -31,7 +31,14 @@ warn_redundant_casts = true
|
|||||||
disallow_untyped_calls = true
|
disallow_untyped_calls = true
|
||||||
disallow_untyped_defs = true
|
disallow_untyped_defs = true
|
||||||
no_implicit_optional = true
|
no_implicit_optional = true
|
||||||
exclude = "clan_cli.nixpkgs"
|
follow_imports = "normal"
|
||||||
|
exclude = [
|
||||||
|
"clan_cli.nixpkgs",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[tool.mypy.overrides]]
|
||||||
|
module = "openapi_client.*"
|
||||||
|
ignore_errors = true
|
||||||
|
|
||||||
[[tool.mypy.overrides]]
|
[[tool.mypy.overrides]]
|
||||||
module = "argcomplete.*"
|
module = "argcomplete.*"
|
||||||
@@ -60,9 +67,9 @@ ignore_missing_imports = true
|
|||||||
|
|
||||||
[tool.ruff]
|
[tool.ruff]
|
||||||
line-length = 88
|
line-length = 88
|
||||||
|
|
||||||
select = [ "E", "F", "I", "N"]
|
select = [ "E", "F", "I", "N"]
|
||||||
ignore = [ "E501" ]
|
ignore = [ "E501" ]
|
||||||
|
exclude = ["tests/openapi_client"]
|
||||||
|
|
||||||
[tool.black]
|
[tool.black]
|
||||||
line-length = 88
|
line-length = 88
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ nix-unit, clan-cli, ui-assets, system, mkShell, writeScriptBin, openssh, ruff, python3 }:
|
{ nix-unit, clan-cli, openapi-generator-cli, ui-assets, system, mkShell, writeScriptBin, openssh, ruff, python3 }:
|
||||||
let
|
let
|
||||||
checkScript = writeScriptBin "check" ''
|
checkScript = writeScriptBin "check" ''
|
||||||
nix build .#checks.${system}.{treefmt,clan-pytest} -L "$@"
|
nix build .#checks.${system}.{treefmt,clan-pytest} -L "$@"
|
||||||
@@ -19,6 +19,7 @@ mkShell {
|
|||||||
openssh
|
openssh
|
||||||
ruff
|
ruff
|
||||||
clan-cli.checkPython
|
clan-cli.checkPython
|
||||||
|
openapi-generator-cli
|
||||||
];
|
];
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
|||||||
@@ -1,9 +1,60 @@
|
|||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import urllib.request
|
||||||
|
from multiprocessing import Process
|
||||||
|
from typing import Generator
|
||||||
|
from urllib.error import URLError
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
import uvicorn
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
from openapi_client import ApiClient, Configuration
|
||||||
|
|
||||||
from clan_cli.webui.app import app
|
from clan_cli.webui.app import app
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def api() -> TestClient:
|
def test_client() -> TestClient:
|
||||||
return TestClient(app)
|
return TestClient(app)
|
||||||
|
|
||||||
|
|
||||||
|
def get_health(*, url: str, max_retries: int = 20, delay: float = 0.2) -> str | None:
|
||||||
|
for attempt in range(max_retries):
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(url) as response:
|
||||||
|
return response.read()
|
||||||
|
except URLError as e:
|
||||||
|
print(f"Attempt {attempt + 1} failed: {e.reason}", file=sys.stderr)
|
||||||
|
time.sleep(delay)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
# Pytest fixture to run the server in a separate process
|
||||||
|
@pytest.fixture(scope="session")
|
||||||
|
def server_url() -> Generator[str, None, None]:
|
||||||
|
port = 8000
|
||||||
|
host = "127.0.0.1"
|
||||||
|
proc = Process(
|
||||||
|
target=uvicorn.run,
|
||||||
|
args=(app,),
|
||||||
|
kwargs={"host": host, "port": port, "log_level": "info"},
|
||||||
|
daemon=True,
|
||||||
|
)
|
||||||
|
proc.start()
|
||||||
|
|
||||||
|
url = f"http://{host}:{port}"
|
||||||
|
res = get_health(url=url + "/health")
|
||||||
|
if res is None:
|
||||||
|
raise Exception(f"Couldn't reach {url} after starting server")
|
||||||
|
|
||||||
|
yield url
|
||||||
|
proc.terminate()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="session")
|
||||||
|
def api_client(server_url: str) -> Generator[ApiClient, None, None]:
|
||||||
|
configuration = Configuration(host=server_url)
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with ApiClient(configuration) as api_client:
|
||||||
|
yield api_client
|
||||||
|
|||||||
48
pkgs/clan-cli/tests/openapi_client/__init__.py
Normal file
48
pkgs/clan-cli/tests/openapi_client/__init__.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
# flake8: noqa
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
__version__ = "1.0.0"
|
||||||
|
|
||||||
|
# import apis into sdk package
|
||||||
|
from openapi_client.api.default_api import DefaultApi
|
||||||
|
from openapi_client.api.entities_api import EntitiesApi
|
||||||
|
from openapi_client.api.repositories_api import RepositoriesApi
|
||||||
|
from openapi_client.api.resolution_api import ResolutionApi
|
||||||
|
from openapi_client.api.services_api import ServicesApi
|
||||||
|
|
||||||
|
# import ApiClient
|
||||||
|
from openapi_client.api_response import ApiResponse
|
||||||
|
from openapi_client.api_client import ApiClient
|
||||||
|
from openapi_client.configuration import Configuration
|
||||||
|
from openapi_client.exceptions import OpenApiException
|
||||||
|
from openapi_client.exceptions import ApiTypeError
|
||||||
|
from openapi_client.exceptions import ApiValueError
|
||||||
|
from openapi_client.exceptions import ApiKeyError
|
||||||
|
from openapi_client.exceptions import ApiAttributeError
|
||||||
|
from openapi_client.exceptions import ApiException
|
||||||
|
|
||||||
|
# import models into sdk package
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.models.entity_create import EntityCreate
|
||||||
|
from openapi_client.models.http_validation_error import HTTPValidationError
|
||||||
|
from openapi_client.models.machine import Machine
|
||||||
|
from openapi_client.models.resolution import Resolution
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.models.service_create import ServiceCreate
|
||||||
|
from openapi_client.models.services_by_name import ServicesByName
|
||||||
|
from openapi_client.models.status import Status
|
||||||
|
from openapi_client.models.validation_error import ValidationError
|
||||||
|
from openapi_client.models.validation_error_loc_inner import ValidationErrorLocInner
|
||||||
9
pkgs/clan-cli/tests/openapi_client/api/__init__.py
Normal file
9
pkgs/clan-cli/tests/openapi_client/api/__init__.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# flake8: noqa
|
||||||
|
|
||||||
|
# import apis into api package
|
||||||
|
from openapi_client.api.default_api import DefaultApi
|
||||||
|
from openapi_client.api.entities_api import EntitiesApi
|
||||||
|
from openapi_client.api.repositories_api import RepositoriesApi
|
||||||
|
from openapi_client.api.resolution_api import ResolutionApi
|
||||||
|
from openapi_client.api.services_api import ServicesApi
|
||||||
|
|
||||||
437
pkgs/clan-cli/tests/openapi_client/api/default_api.py
Normal file
437
pkgs/clan-cli/tests/openapi_client/api/default_api.py
Normal file
@@ -0,0 +1,437 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import re # noqa: F401
|
||||||
|
import io
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
from pydantic import validate_arguments, ValidationError
|
||||||
|
|
||||||
|
from pydantic import StrictStr
|
||||||
|
|
||||||
|
from openapi_client.models.machine import Machine
|
||||||
|
|
||||||
|
from openapi_client.api_client import ApiClient
|
||||||
|
from openapi_client.api_response import ApiResponse
|
||||||
|
from openapi_client.exceptions import ( # noqa: F401
|
||||||
|
ApiTypeError,
|
||||||
|
ApiValueError
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultApi:
|
||||||
|
"""NOTE: This class is auto generated by OpenAPI Generator
|
||||||
|
Ref: https://openapi-generator.tech
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, api_client=None) -> None:
|
||||||
|
if api_client is None:
|
||||||
|
api_client = ApiClient.get_default()
|
||||||
|
self.api_client = api_client
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get(self, **kwargs) -> None: # noqa: E501
|
||||||
|
"""Get # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get(async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the get_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.get_with_http_info(**kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_with_http_info(self, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Get # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_with_http_info(async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method get" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/ws2_example', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def health(self, **kwargs) -> Machine: # noqa: E501
|
||||||
|
"""Health # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.health(async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: Machine
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the health_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.health_with_http_info(**kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def health_with_http_info(self, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Health # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.health_with_http_info(async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(Machine, status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method health" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "Machine",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/health', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def root(self, path_name : StrictStr, **kwargs) -> None: # noqa: E501
|
||||||
|
"""Root # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.root(path_name, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param path_name: (required)
|
||||||
|
:type path_name: str
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the root_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.root_with_http_info(path_name, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def root_with_http_info(self, path_name : StrictStr, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Root # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.root_with_http_info(path_name, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param path_name: (required)
|
||||||
|
:type path_name: str
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: None
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'path_name'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method root" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
if _params['path_name']:
|
||||||
|
_path_params['path_name'] = _params['path_name']
|
||||||
|
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/{path_name}', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
1213
pkgs/clan-cli/tests/openapi_client/api/entities_api.py
Normal file
1213
pkgs/clan-cli/tests/openapi_client/api/entities_api.py
Normal file
File diff suppressed because it is too large
Load Diff
192
pkgs/clan-cli/tests/openapi_client/api/repositories_api.py
Normal file
192
pkgs/clan-cli/tests/openapi_client/api/repositories_api.py
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import re # noqa: F401
|
||||||
|
import io
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
from pydantic import validate_arguments, ValidationError
|
||||||
|
|
||||||
|
from pydantic import StrictInt
|
||||||
|
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
|
||||||
|
from openapi_client.api_client import ApiClient
|
||||||
|
from openapi_client.api_response import ApiResponse
|
||||||
|
from openapi_client.exceptions import ( # noqa: F401
|
||||||
|
ApiTypeError,
|
||||||
|
ApiValueError
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RepositoriesApi:
|
||||||
|
"""NOTE: This class is auto generated by OpenAPI Generator
|
||||||
|
Ref: https://openapi-generator.tech
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, api_client=None) -> None:
|
||||||
|
if api_client is None:
|
||||||
|
api_client = ApiClient.get_default()
|
||||||
|
self.api_client = api_client
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_all_repositories(self, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> List[Service]: # noqa: E501
|
||||||
|
"""Get All Repositories # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_all_repositories(skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: List[Service]
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the get_all_repositories_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.get_all_repositories_with_http_info(skip, limit, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_all_repositories_with_http_info(self, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Get All Repositories # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_all_repositories_with_http_info(skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(List[Service], status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'skip',
|
||||||
|
'limit'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method get_all_repositories" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
if _params.get('skip') is not None: # noqa: E501
|
||||||
|
_query_params.append(('skip', _params['skip']))
|
||||||
|
|
||||||
|
if _params.get('limit') is not None: # noqa: E501
|
||||||
|
_query_params.append(('limit', _params['limit']))
|
||||||
|
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "List[Service]",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/repositories', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
192
pkgs/clan-cli/tests/openapi_client/api/resolution_api.py
Normal file
192
pkgs/clan-cli/tests/openapi_client/api/resolution_api.py
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import re # noqa: F401
|
||||||
|
import io
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
from pydantic import validate_arguments, ValidationError
|
||||||
|
|
||||||
|
from pydantic import StrictInt
|
||||||
|
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
from openapi_client.models.resolution import Resolution
|
||||||
|
|
||||||
|
from openapi_client.api_client import ApiClient
|
||||||
|
from openapi_client.api_response import ApiResponse
|
||||||
|
from openapi_client.exceptions import ( # noqa: F401
|
||||||
|
ApiTypeError,
|
||||||
|
ApiValueError
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ResolutionApi:
|
||||||
|
"""NOTE: This class is auto generated by OpenAPI Generator
|
||||||
|
Ref: https://openapi-generator.tech
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, api_client=None) -> None:
|
||||||
|
if api_client is None:
|
||||||
|
api_client = ApiClient.get_default()
|
||||||
|
self.api_client = api_client
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_all_resolutions(self, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> List[Resolution]: # noqa: E501
|
||||||
|
"""Get All Resolutions # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_all_resolutions(skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: List[Resolution]
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the get_all_resolutions_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.get_all_resolutions_with_http_info(skip, limit, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_all_resolutions_with_http_info(self, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Get All Resolutions # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_all_resolutions_with_http_info(skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(List[Resolution], status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'skip',
|
||||||
|
'limit'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method get_all_resolutions" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
if _params.get('skip') is not None: # noqa: E501
|
||||||
|
_query_params.append(('skip', _params['skip']))
|
||||||
|
|
||||||
|
if _params.get('limit') is not None: # noqa: E501
|
||||||
|
_query_params.append(('limit', _params['limit']))
|
||||||
|
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "List[Resolution]",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/resolutions', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
789
pkgs/clan-cli/tests/openapi_client/api/services_api.py
Normal file
789
pkgs/clan-cli/tests/openapi_client/api/services_api.py
Normal file
@@ -0,0 +1,789 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import re # noqa: F401
|
||||||
|
import io
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
from pydantic import validate_arguments, ValidationError
|
||||||
|
|
||||||
|
from pydantic import StrictInt, StrictStr
|
||||||
|
|
||||||
|
from typing import Any, List, Optional, Dict
|
||||||
|
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.models.service_create import ServiceCreate
|
||||||
|
from openapi_client.models.services_by_name import ServicesByName
|
||||||
|
|
||||||
|
from openapi_client.api_client import ApiClient
|
||||||
|
from openapi_client.api_response import ApiResponse
|
||||||
|
from openapi_client.exceptions import ( # noqa: F401
|
||||||
|
ApiTypeError,
|
||||||
|
ApiValueError
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ServicesApi:
|
||||||
|
"""NOTE: This class is auto generated by OpenAPI Generator
|
||||||
|
Ref: https://openapi-generator.tech
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, api_client=None) -> None:
|
||||||
|
if api_client is None:
|
||||||
|
api_client = ApiClient.get_default()
|
||||||
|
self.api_client = api_client
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def create_service(self, service_create : ServiceCreate, **kwargs) -> Service: # noqa: E501
|
||||||
|
"""Create Service # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.create_service(service_create, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param service_create: (required)
|
||||||
|
:type service_create: ServiceCreate
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: Service
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the create_service_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.create_service_with_http_info(service_create, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def create_service_with_http_info(self, service_create : ServiceCreate, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Create Service # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.create_service_with_http_info(service_create, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param service_create: (required)
|
||||||
|
:type service_create: ServiceCreate
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(Service, status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'service_create'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method create_service" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
if _params['service_create'] is not None:
|
||||||
|
_body_params = _params['service_create']
|
||||||
|
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# set the HTTP header `Content-Type`
|
||||||
|
_content_types_list = _params.get('_content_type',
|
||||||
|
self.api_client.select_header_content_type(
|
||||||
|
['application/json']))
|
||||||
|
if _content_types_list:
|
||||||
|
_header_params['Content-Type'] = _content_types_list
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "Service",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/service', 'POST',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def delete_service(self, entity_did : StrictStr, **kwargs) -> Dict[str, str]: # noqa: E501
|
||||||
|
"""Delete Service # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.delete_service(entity_did, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param entity_did: (required)
|
||||||
|
:type entity_did: str
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: Dict[str, str]
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the delete_service_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.delete_service_with_http_info(entity_did, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def delete_service_with_http_info(self, entity_did : StrictStr, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Delete Service # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.delete_service_with_http_info(entity_did, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param entity_did: (required)
|
||||||
|
:type entity_did: str
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(Dict[str, str], status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'entity_did'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method delete_service" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
if _params['entity_did']:
|
||||||
|
_path_params['entity_did'] = _params['entity_did']
|
||||||
|
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "Dict[str, str]",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/{entity_did}/service', 'DELETE',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_all_services(self, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> List[Service]: # noqa: E501
|
||||||
|
"""Get All Services # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_all_services(skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: List[Service]
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the get_all_services_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.get_all_services_with_http_info(skip, limit, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_all_services_with_http_info(self, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Get All Services # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_all_services_with_http_info(skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(List[Service], status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'skip',
|
||||||
|
'limit'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method get_all_services" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
if _params.get('skip') is not None: # noqa: E501
|
||||||
|
_query_params.append(('skip', _params['skip']))
|
||||||
|
|
||||||
|
if _params.get('limit') is not None: # noqa: E501
|
||||||
|
_query_params.append(('limit', _params['limit']))
|
||||||
|
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "List[Service]",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/services', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_service_by_did(self, entity_did : StrictStr, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> List[Service]: # noqa: E501
|
||||||
|
"""Get Service By Did # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_service_by_did(entity_did, skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param entity_did: (required)
|
||||||
|
:type entity_did: str
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: List[Service]
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the get_service_by_did_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.get_service_by_did_with_http_info(entity_did, skip, limit, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_service_by_did_with_http_info(self, entity_did : StrictStr, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Get Service By Did # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_service_by_did_with_http_info(entity_did, skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param entity_did: (required)
|
||||||
|
:type entity_did: str
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(List[Service], status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'entity_did',
|
||||||
|
'skip',
|
||||||
|
'limit'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method get_service_by_did" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
if _params['entity_did']:
|
||||||
|
_path_params['entity_did'] = _params['entity_did']
|
||||||
|
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
if _params.get('skip') is not None: # noqa: E501
|
||||||
|
_query_params.append(('skip', _params['skip']))
|
||||||
|
|
||||||
|
if _params.get('limit') is not None: # noqa: E501
|
||||||
|
_query_params.append(('limit', _params['limit']))
|
||||||
|
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "List[Service]",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/{entity_did}/service', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_services_by_name(self, entity_name : StrictStr, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> ServicesByName: # noqa: E501
|
||||||
|
"""Get Services By Name # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_services_by_name(entity_name, skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param entity_name: (required)
|
||||||
|
:type entity_name: str
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request.
|
||||||
|
If one number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: ServicesByName
|
||||||
|
"""
|
||||||
|
kwargs['_return_http_data_only'] = True
|
||||||
|
if '_preload_content' in kwargs:
|
||||||
|
message = "Error! Please call the get_services_by_name_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
||||||
|
raise ValueError(message)
|
||||||
|
return self.get_services_by_name_with_http_info(entity_name, skip, limit, **kwargs) # noqa: E501
|
||||||
|
|
||||||
|
@validate_arguments
|
||||||
|
def get_services_by_name_with_http_info(self, entity_name : StrictStr, skip : Optional[StrictInt] = None, limit : Optional[StrictInt] = None, **kwargs) -> ApiResponse: # noqa: E501
|
||||||
|
"""Get Services By Name # noqa: E501
|
||||||
|
|
||||||
|
This method makes a synchronous HTTP request by default. To make an
|
||||||
|
asynchronous HTTP request, please pass async_req=True
|
||||||
|
|
||||||
|
>>> thread = api.get_services_by_name_with_http_info(entity_name, skip, limit, async_req=True)
|
||||||
|
>>> result = thread.get()
|
||||||
|
|
||||||
|
:param entity_name: (required)
|
||||||
|
:type entity_name: str
|
||||||
|
:param skip:
|
||||||
|
:type skip: int
|
||||||
|
:param limit:
|
||||||
|
:type limit: int
|
||||||
|
:param async_req: Whether to execute the request asynchronously.
|
||||||
|
:type async_req: bool, optional
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:type _preload_content: bool, optional
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:type _return_http_data_only: bool, optional
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_auth: dict, optional
|
||||||
|
:type _content_type: string, optional: force content-type for the request
|
||||||
|
:return: Returns the result object.
|
||||||
|
If the method is called asynchronously,
|
||||||
|
returns the request thread.
|
||||||
|
:rtype: tuple(ServicesByName, status_code(int), headers(HTTPHeaderDict))
|
||||||
|
"""
|
||||||
|
|
||||||
|
_params = locals()
|
||||||
|
|
||||||
|
_all_params = [
|
||||||
|
'entity_name',
|
||||||
|
'skip',
|
||||||
|
'limit'
|
||||||
|
]
|
||||||
|
_all_params.extend(
|
||||||
|
[
|
||||||
|
'async_req',
|
||||||
|
'_return_http_data_only',
|
||||||
|
'_preload_content',
|
||||||
|
'_request_timeout',
|
||||||
|
'_request_auth',
|
||||||
|
'_content_type',
|
||||||
|
'_headers'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# validate the arguments
|
||||||
|
for _key, _val in _params['kwargs'].items():
|
||||||
|
if _key not in _all_params:
|
||||||
|
raise ApiTypeError(
|
||||||
|
"Got an unexpected keyword argument '%s'"
|
||||||
|
" to method get_services_by_name" % _key
|
||||||
|
)
|
||||||
|
_params[_key] = _val
|
||||||
|
del _params['kwargs']
|
||||||
|
|
||||||
|
_collection_formats = {}
|
||||||
|
|
||||||
|
# process the path parameters
|
||||||
|
_path_params = {}
|
||||||
|
|
||||||
|
# process the query parameters
|
||||||
|
_query_params = []
|
||||||
|
if _params.get('entity_name') is not None: # noqa: E501
|
||||||
|
_query_params.append(('entity_name', _params['entity_name']))
|
||||||
|
|
||||||
|
if _params.get('skip') is not None: # noqa: E501
|
||||||
|
_query_params.append(('skip', _params['skip']))
|
||||||
|
|
||||||
|
if _params.get('limit') is not None: # noqa: E501
|
||||||
|
_query_params.append(('limit', _params['limit']))
|
||||||
|
|
||||||
|
# process the header parameters
|
||||||
|
_header_params = dict(_params.get('_headers', {}))
|
||||||
|
# process the form parameters
|
||||||
|
_form_params = []
|
||||||
|
_files = {}
|
||||||
|
# process the body parameter
|
||||||
|
_body_params = None
|
||||||
|
# set the HTTP header `Accept`
|
||||||
|
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||||
|
['application/json']) # noqa: E501
|
||||||
|
|
||||||
|
# authentication setting
|
||||||
|
_auth_settings = [] # noqa: E501
|
||||||
|
|
||||||
|
_response_types_map = {
|
||||||
|
'200': "ServicesByName",
|
||||||
|
'422': "HTTPValidationError",
|
||||||
|
}
|
||||||
|
|
||||||
|
return self.api_client.call_api(
|
||||||
|
'/api/v1/services_by_entity_name', 'GET',
|
||||||
|
_path_params,
|
||||||
|
_query_params,
|
||||||
|
_header_params,
|
||||||
|
body=_body_params,
|
||||||
|
post_params=_form_params,
|
||||||
|
files=_files,
|
||||||
|
response_types_map=_response_types_map,
|
||||||
|
auth_settings=_auth_settings,
|
||||||
|
async_req=_params.get('async_req'),
|
||||||
|
_return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
|
||||||
|
_preload_content=_params.get('_preload_content', True),
|
||||||
|
_request_timeout=_params.get('_request_timeout'),
|
||||||
|
collection_formats=_collection_formats,
|
||||||
|
_request_auth=_params.get('_request_auth'))
|
||||||
758
pkgs/clan-cli/tests/openapi_client/api_client.py
Normal file
758
pkgs/clan-cli/tests/openapi_client/api_client.py
Normal file
@@ -0,0 +1,758 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import atexit
|
||||||
|
import datetime
|
||||||
|
from dateutil.parser import parse
|
||||||
|
import json
|
||||||
|
import mimetypes
|
||||||
|
from multiprocessing.pool import ThreadPool
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
from urllib.parse import quote
|
||||||
|
|
||||||
|
from openapi_client.configuration import Configuration
|
||||||
|
from openapi_client.api_response import ApiResponse
|
||||||
|
import openapi_client.models
|
||||||
|
from openapi_client import rest
|
||||||
|
from openapi_client.exceptions import ApiValueError, ApiException
|
||||||
|
|
||||||
|
|
||||||
|
class ApiClient:
|
||||||
|
"""Generic API client for OpenAPI client library builds.
|
||||||
|
|
||||||
|
OpenAPI generic API client. This client handles the client-
|
||||||
|
server communication, and is invariant across implementations. Specifics of
|
||||||
|
the methods and models for each application are generated from the OpenAPI
|
||||||
|
templates.
|
||||||
|
|
||||||
|
:param configuration: .Configuration object for this client
|
||||||
|
:param header_name: a header to pass when making calls to the API.
|
||||||
|
:param header_value: a header value to pass when making calls to
|
||||||
|
the API.
|
||||||
|
:param cookie: a cookie to include in the header when making calls
|
||||||
|
to the API
|
||||||
|
:param pool_threads: The number of threads to use for async requests
|
||||||
|
to the API. More threads means more concurrent API requests.
|
||||||
|
"""
|
||||||
|
|
||||||
|
PRIMITIVE_TYPES = (float, bool, bytes, str, int)
|
||||||
|
NATIVE_TYPES_MAPPING = {
|
||||||
|
'int': int,
|
||||||
|
'long': int, # TODO remove as only py3 is supported?
|
||||||
|
'float': float,
|
||||||
|
'str': str,
|
||||||
|
'bool': bool,
|
||||||
|
'date': datetime.date,
|
||||||
|
'datetime': datetime.datetime,
|
||||||
|
'object': object,
|
||||||
|
}
|
||||||
|
_pool = None
|
||||||
|
|
||||||
|
def __init__(self, configuration=None, header_name=None, header_value=None,
|
||||||
|
cookie=None, pool_threads=1) -> None:
|
||||||
|
# use default configuration if none is provided
|
||||||
|
if configuration is None:
|
||||||
|
configuration = Configuration.get_default()
|
||||||
|
self.configuration = configuration
|
||||||
|
self.pool_threads = pool_threads
|
||||||
|
|
||||||
|
self.rest_client = rest.RESTClientObject(configuration)
|
||||||
|
self.default_headers = {}
|
||||||
|
if header_name is not None:
|
||||||
|
self.default_headers[header_name] = header_value
|
||||||
|
self.cookie = cookie
|
||||||
|
# Set default User-Agent.
|
||||||
|
self.user_agent = 'OpenAPI-Generator/1.0.0/python'
|
||||||
|
self.client_side_validation = configuration.client_side_validation
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
if self._pool:
|
||||||
|
self._pool.close()
|
||||||
|
self._pool.join()
|
||||||
|
self._pool = None
|
||||||
|
if hasattr(atexit, 'unregister'):
|
||||||
|
atexit.unregister(self.close)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pool(self):
|
||||||
|
"""Create thread pool on first request
|
||||||
|
avoids instantiating unused threadpool for blocking clients.
|
||||||
|
"""
|
||||||
|
if self._pool is None:
|
||||||
|
atexit.register(self.close)
|
||||||
|
self._pool = ThreadPool(self.pool_threads)
|
||||||
|
return self._pool
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_agent(self):
|
||||||
|
"""User agent for this API client"""
|
||||||
|
return self.default_headers['User-Agent']
|
||||||
|
|
||||||
|
@user_agent.setter
|
||||||
|
def user_agent(self, value):
|
||||||
|
self.default_headers['User-Agent'] = value
|
||||||
|
|
||||||
|
def set_default_header(self, header_name, header_value):
|
||||||
|
self.default_headers[header_name] = header_value
|
||||||
|
|
||||||
|
|
||||||
|
_default = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
"""Return new instance of ApiClient.
|
||||||
|
|
||||||
|
This method returns newly created, based on default constructor,
|
||||||
|
object of ApiClient class or returns a copy of default
|
||||||
|
ApiClient.
|
||||||
|
|
||||||
|
:return: The ApiClient object.
|
||||||
|
"""
|
||||||
|
if cls._default is None:
|
||||||
|
cls._default = ApiClient()
|
||||||
|
return cls._default
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_default(cls, default):
|
||||||
|
"""Set default instance of ApiClient.
|
||||||
|
|
||||||
|
It stores default ApiClient.
|
||||||
|
|
||||||
|
:param default: object of ApiClient.
|
||||||
|
"""
|
||||||
|
cls._default = default
|
||||||
|
|
||||||
|
def __call_api(
|
||||||
|
self, resource_path, method, path_params=None,
|
||||||
|
query_params=None, header_params=None, body=None, post_params=None,
|
||||||
|
files=None, response_types_map=None, auth_settings=None,
|
||||||
|
_return_http_data_only=None, collection_formats=None,
|
||||||
|
_preload_content=True, _request_timeout=None, _host=None,
|
||||||
|
_request_auth=None):
|
||||||
|
|
||||||
|
config = self.configuration
|
||||||
|
|
||||||
|
# header parameters
|
||||||
|
header_params = header_params or {}
|
||||||
|
header_params.update(self.default_headers)
|
||||||
|
if self.cookie:
|
||||||
|
header_params['Cookie'] = self.cookie
|
||||||
|
if header_params:
|
||||||
|
header_params = self.sanitize_for_serialization(header_params)
|
||||||
|
header_params = dict(self.parameters_to_tuples(header_params,
|
||||||
|
collection_formats))
|
||||||
|
|
||||||
|
# path parameters
|
||||||
|
if path_params:
|
||||||
|
path_params = self.sanitize_for_serialization(path_params)
|
||||||
|
path_params = self.parameters_to_tuples(path_params,
|
||||||
|
collection_formats)
|
||||||
|
for k, v in path_params:
|
||||||
|
# specified safe chars, encode everything
|
||||||
|
resource_path = resource_path.replace(
|
||||||
|
'{%s}' % k,
|
||||||
|
quote(str(v), safe=config.safe_chars_for_path_param)
|
||||||
|
)
|
||||||
|
|
||||||
|
# post parameters
|
||||||
|
if post_params or files:
|
||||||
|
post_params = post_params if post_params else []
|
||||||
|
post_params = self.sanitize_for_serialization(post_params)
|
||||||
|
post_params = self.parameters_to_tuples(post_params,
|
||||||
|
collection_formats)
|
||||||
|
post_params.extend(self.files_parameters(files))
|
||||||
|
|
||||||
|
# auth setting
|
||||||
|
self.update_params_for_auth(
|
||||||
|
header_params, query_params, auth_settings,
|
||||||
|
resource_path, method, body,
|
||||||
|
request_auth=_request_auth)
|
||||||
|
|
||||||
|
# body
|
||||||
|
if body:
|
||||||
|
body = self.sanitize_for_serialization(body)
|
||||||
|
|
||||||
|
# request url
|
||||||
|
if _host is None:
|
||||||
|
url = self.configuration.host + resource_path
|
||||||
|
else:
|
||||||
|
# use server/host defined in path or operation instead
|
||||||
|
url = _host + resource_path
|
||||||
|
|
||||||
|
# query parameters
|
||||||
|
if query_params:
|
||||||
|
query_params = self.sanitize_for_serialization(query_params)
|
||||||
|
url_query = self.parameters_to_url_query(query_params,
|
||||||
|
collection_formats)
|
||||||
|
url += "?" + url_query
|
||||||
|
|
||||||
|
try:
|
||||||
|
# perform request and return response
|
||||||
|
response_data = self.request(
|
||||||
|
method, url,
|
||||||
|
query_params=query_params,
|
||||||
|
headers=header_params,
|
||||||
|
post_params=post_params, body=body,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout)
|
||||||
|
except ApiException as e:
|
||||||
|
if e.body:
|
||||||
|
e.body = e.body.decode('utf-8')
|
||||||
|
raise e
|
||||||
|
|
||||||
|
self.last_response = response_data
|
||||||
|
|
||||||
|
return_data = None # assuming derialization is not needed
|
||||||
|
# data needs deserialization or returns HTTP data (deserialized) only
|
||||||
|
if _preload_content or _return_http_data_only:
|
||||||
|
response_type = response_types_map.get(str(response_data.status), None)
|
||||||
|
if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:
|
||||||
|
# if not found, look for '1XX', '2XX', etc.
|
||||||
|
response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
|
||||||
|
|
||||||
|
if response_type == "bytearray":
|
||||||
|
response_data.data = response_data.data
|
||||||
|
else:
|
||||||
|
match = None
|
||||||
|
content_type = response_data.getheader('content-type')
|
||||||
|
if content_type is not None:
|
||||||
|
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
|
||||||
|
encoding = match.group(1) if match else "utf-8"
|
||||||
|
response_data.data = response_data.data.decode(encoding)
|
||||||
|
|
||||||
|
# deserialize response data
|
||||||
|
if response_type == "bytearray":
|
||||||
|
return_data = response_data.data
|
||||||
|
elif response_type:
|
||||||
|
return_data = self.deserialize(response_data, response_type)
|
||||||
|
else:
|
||||||
|
return_data = None
|
||||||
|
|
||||||
|
if _return_http_data_only:
|
||||||
|
return return_data
|
||||||
|
else:
|
||||||
|
return ApiResponse(status_code = response_data.status,
|
||||||
|
data = return_data,
|
||||||
|
headers = response_data.getheaders(),
|
||||||
|
raw_data = response_data.data)
|
||||||
|
|
||||||
|
def sanitize_for_serialization(self, obj):
|
||||||
|
"""Builds a JSON POST object.
|
||||||
|
|
||||||
|
If obj is None, return None.
|
||||||
|
If obj is str, int, long, float, bool, return directly.
|
||||||
|
If obj is datetime.datetime, datetime.date
|
||||||
|
convert to string in iso8601 format.
|
||||||
|
If obj is list, sanitize each element in the list.
|
||||||
|
If obj is dict, return the dict.
|
||||||
|
If obj is OpenAPI model, return the properties dict.
|
||||||
|
|
||||||
|
:param obj: The data to serialize.
|
||||||
|
:return: The serialized form of data.
|
||||||
|
"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
elif isinstance(obj, self.PRIMITIVE_TYPES):
|
||||||
|
return obj
|
||||||
|
elif isinstance(obj, list):
|
||||||
|
return [self.sanitize_for_serialization(sub_obj)
|
||||||
|
for sub_obj in obj]
|
||||||
|
elif isinstance(obj, tuple):
|
||||||
|
return tuple(self.sanitize_for_serialization(sub_obj)
|
||||||
|
for sub_obj in obj)
|
||||||
|
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
||||||
|
return obj.isoformat()
|
||||||
|
|
||||||
|
if isinstance(obj, dict):
|
||||||
|
obj_dict = obj
|
||||||
|
else:
|
||||||
|
# Convert model obj to dict except
|
||||||
|
# attributes `openapi_types`, `attribute_map`
|
||||||
|
# and attributes which value is not None.
|
||||||
|
# Convert attribute name to json key in
|
||||||
|
# model definition for request.
|
||||||
|
obj_dict = obj.to_dict()
|
||||||
|
|
||||||
|
return {key: self.sanitize_for_serialization(val)
|
||||||
|
for key, val in obj_dict.items()}
|
||||||
|
|
||||||
|
def deserialize(self, response, response_type):
|
||||||
|
"""Deserializes response into an object.
|
||||||
|
|
||||||
|
:param response: RESTResponse object to be deserialized.
|
||||||
|
:param response_type: class literal for
|
||||||
|
deserialized object, or string of class name.
|
||||||
|
|
||||||
|
:return: deserialized object.
|
||||||
|
"""
|
||||||
|
# handle file downloading
|
||||||
|
# save response body into a tmp file and return the instance
|
||||||
|
if response_type == "file":
|
||||||
|
return self.__deserialize_file(response)
|
||||||
|
|
||||||
|
# fetch data from response object
|
||||||
|
try:
|
||||||
|
data = json.loads(response.data)
|
||||||
|
except ValueError:
|
||||||
|
data = response.data
|
||||||
|
|
||||||
|
return self.__deserialize(data, response_type)
|
||||||
|
|
||||||
|
def __deserialize(self, data, klass):
|
||||||
|
"""Deserializes dict, list, str into an object.
|
||||||
|
|
||||||
|
:param data: dict, list or str.
|
||||||
|
:param klass: class literal, or string of class name.
|
||||||
|
|
||||||
|
:return: object.
|
||||||
|
"""
|
||||||
|
if data is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if isinstance(klass, str):
|
||||||
|
if klass.startswith('List['):
|
||||||
|
sub_kls = re.match(r'List\[(.*)]', klass).group(1)
|
||||||
|
return [self.__deserialize(sub_data, sub_kls)
|
||||||
|
for sub_data in data]
|
||||||
|
|
||||||
|
if klass.startswith('Dict['):
|
||||||
|
sub_kls = re.match(r'Dict\[([^,]*), (.*)]', klass).group(2)
|
||||||
|
return {k: self.__deserialize(v, sub_kls)
|
||||||
|
for k, v in data.items()}
|
||||||
|
|
||||||
|
# convert str to class
|
||||||
|
if klass in self.NATIVE_TYPES_MAPPING:
|
||||||
|
klass = self.NATIVE_TYPES_MAPPING[klass]
|
||||||
|
else:
|
||||||
|
klass = getattr(openapi_client.models, klass)
|
||||||
|
|
||||||
|
if klass in self.PRIMITIVE_TYPES:
|
||||||
|
return self.__deserialize_primitive(data, klass)
|
||||||
|
elif klass == object:
|
||||||
|
return self.__deserialize_object(data)
|
||||||
|
elif klass == datetime.date:
|
||||||
|
return self.__deserialize_date(data)
|
||||||
|
elif klass == datetime.datetime:
|
||||||
|
return self.__deserialize_datetime(data)
|
||||||
|
else:
|
||||||
|
return self.__deserialize_model(data, klass)
|
||||||
|
|
||||||
|
def call_api(self, resource_path, method,
|
||||||
|
path_params=None, query_params=None, header_params=None,
|
||||||
|
body=None, post_params=None, files=None,
|
||||||
|
response_types_map=None, auth_settings=None,
|
||||||
|
async_req=None, _return_http_data_only=None,
|
||||||
|
collection_formats=None, _preload_content=True,
|
||||||
|
_request_timeout=None, _host=None, _request_auth=None):
|
||||||
|
"""Makes the HTTP request (synchronous) and returns deserialized data.
|
||||||
|
|
||||||
|
To make an async_req request, set the async_req parameter.
|
||||||
|
|
||||||
|
:param resource_path: Path to method endpoint.
|
||||||
|
:param method: Method to call.
|
||||||
|
:param path_params: Path parameters in the url.
|
||||||
|
:param query_params: Query parameters in the url.
|
||||||
|
:param header_params: Header parameters to be
|
||||||
|
placed in the request header.
|
||||||
|
:param body: Request body.
|
||||||
|
:param post_params dict: Request post form parameters,
|
||||||
|
for `application/x-www-form-urlencoded`, `multipart/form-data`.
|
||||||
|
:param auth_settings list: Auth Settings names for the request.
|
||||||
|
:param response: Response data type.
|
||||||
|
:param files dict: key -> filename, value -> filepath,
|
||||||
|
for `multipart/form-data`.
|
||||||
|
:param async_req bool: execute request asynchronously
|
||||||
|
:param _return_http_data_only: response data instead of ApiResponse
|
||||||
|
object with status code, headers, etc
|
||||||
|
:param _preload_content: if False, the ApiResponse.data will
|
||||||
|
be set to none and raw_data will store the
|
||||||
|
HTTP response body without reading/decoding.
|
||||||
|
Default is True.
|
||||||
|
:param collection_formats: dict of collection formats for path, query,
|
||||||
|
header, and post parameters.
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
:param _request_auth: set to override the auth_settings for an a single
|
||||||
|
request; this effectively ignores the authentication
|
||||||
|
in the spec for a single request.
|
||||||
|
:type _request_token: dict, optional
|
||||||
|
:return:
|
||||||
|
If async_req parameter is True,
|
||||||
|
the request will be called asynchronously.
|
||||||
|
The method will return the request thread.
|
||||||
|
If parameter async_req is False or missing,
|
||||||
|
then the method will return the response directly.
|
||||||
|
"""
|
||||||
|
if not async_req:
|
||||||
|
return self.__call_api(resource_path, method,
|
||||||
|
path_params, query_params, header_params,
|
||||||
|
body, post_params, files,
|
||||||
|
response_types_map, auth_settings,
|
||||||
|
_return_http_data_only, collection_formats,
|
||||||
|
_preload_content, _request_timeout, _host,
|
||||||
|
_request_auth)
|
||||||
|
|
||||||
|
return self.pool.apply_async(self.__call_api, (resource_path,
|
||||||
|
method, path_params,
|
||||||
|
query_params,
|
||||||
|
header_params, body,
|
||||||
|
post_params, files,
|
||||||
|
response_types_map,
|
||||||
|
auth_settings,
|
||||||
|
_return_http_data_only,
|
||||||
|
collection_formats,
|
||||||
|
_preload_content,
|
||||||
|
_request_timeout,
|
||||||
|
_host, _request_auth))
|
||||||
|
|
||||||
|
def request(self, method, url, query_params=None, headers=None,
|
||||||
|
post_params=None, body=None, _preload_content=True,
|
||||||
|
_request_timeout=None):
|
||||||
|
"""Makes the HTTP request using RESTClient."""
|
||||||
|
if method == "GET":
|
||||||
|
return self.rest_client.get_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
headers=headers)
|
||||||
|
elif method == "HEAD":
|
||||||
|
return self.rest_client.head_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
headers=headers)
|
||||||
|
elif method == "OPTIONS":
|
||||||
|
return self.rest_client.options_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
headers=headers,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout)
|
||||||
|
elif method == "POST":
|
||||||
|
return self.rest_client.post_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
headers=headers,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
elif method == "PUT":
|
||||||
|
return self.rest_client.put_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
headers=headers,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
elif method == "PATCH":
|
||||||
|
return self.rest_client.patch_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
headers=headers,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
elif method == "DELETE":
|
||||||
|
return self.rest_client.delete_request(url,
|
||||||
|
query_params=query_params,
|
||||||
|
headers=headers,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
else:
|
||||||
|
raise ApiValueError(
|
||||||
|
"http method must be `GET`, `HEAD`, `OPTIONS`,"
|
||||||
|
" `POST`, `PATCH`, `PUT` or `DELETE`."
|
||||||
|
)
|
||||||
|
|
||||||
|
def parameters_to_tuples(self, params, collection_formats):
|
||||||
|
"""Get parameters as list of tuples, formatting collections.
|
||||||
|
|
||||||
|
:param params: Parameters as dict or list of two-tuples
|
||||||
|
:param dict collection_formats: Parameter collection formats
|
||||||
|
:return: Parameters as list of tuples, collections formatted
|
||||||
|
"""
|
||||||
|
new_params = []
|
||||||
|
if collection_formats is None:
|
||||||
|
collection_formats = {}
|
||||||
|
for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
|
||||||
|
if k in collection_formats:
|
||||||
|
collection_format = collection_formats[k]
|
||||||
|
if collection_format == 'multi':
|
||||||
|
new_params.extend((k, value) for value in v)
|
||||||
|
else:
|
||||||
|
if collection_format == 'ssv':
|
||||||
|
delimiter = ' '
|
||||||
|
elif collection_format == 'tsv':
|
||||||
|
delimiter = '\t'
|
||||||
|
elif collection_format == 'pipes':
|
||||||
|
delimiter = '|'
|
||||||
|
else: # csv is the default
|
||||||
|
delimiter = ','
|
||||||
|
new_params.append(
|
||||||
|
(k, delimiter.join(str(value) for value in v)))
|
||||||
|
else:
|
||||||
|
new_params.append((k, v))
|
||||||
|
return new_params
|
||||||
|
|
||||||
|
def parameters_to_url_query(self, params, collection_formats):
|
||||||
|
"""Get parameters as list of tuples, formatting collections.
|
||||||
|
|
||||||
|
:param params: Parameters as dict or list of two-tuples
|
||||||
|
:param dict collection_formats: Parameter collection formats
|
||||||
|
:return: URL query string (e.g. a=Hello%20World&b=123)
|
||||||
|
"""
|
||||||
|
new_params = []
|
||||||
|
if collection_formats is None:
|
||||||
|
collection_formats = {}
|
||||||
|
for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
|
||||||
|
if isinstance(v, (int, float)):
|
||||||
|
v = str(v)
|
||||||
|
if isinstance(v, bool):
|
||||||
|
v = str(v).lower()
|
||||||
|
if isinstance(v, dict):
|
||||||
|
v = json.dumps(v)
|
||||||
|
|
||||||
|
if k in collection_formats:
|
||||||
|
collection_format = collection_formats[k]
|
||||||
|
if collection_format == 'multi':
|
||||||
|
new_params.extend((k, value) for value in v)
|
||||||
|
else:
|
||||||
|
if collection_format == 'ssv':
|
||||||
|
delimiter = ' '
|
||||||
|
elif collection_format == 'tsv':
|
||||||
|
delimiter = '\t'
|
||||||
|
elif collection_format == 'pipes':
|
||||||
|
delimiter = '|'
|
||||||
|
else: # csv is the default
|
||||||
|
delimiter = ','
|
||||||
|
new_params.append(
|
||||||
|
(k, delimiter.join(quote(str(value)) for value in v)))
|
||||||
|
else:
|
||||||
|
new_params.append((k, quote(str(v))))
|
||||||
|
|
||||||
|
return "&".join(["=".join(item) for item in new_params])
|
||||||
|
|
||||||
|
def files_parameters(self, files=None):
|
||||||
|
"""Builds form parameters.
|
||||||
|
|
||||||
|
:param files: File parameters.
|
||||||
|
:return: Form parameters with files.
|
||||||
|
"""
|
||||||
|
params = []
|
||||||
|
|
||||||
|
if files:
|
||||||
|
for k, v in files.items():
|
||||||
|
if not v:
|
||||||
|
continue
|
||||||
|
file_names = v if type(v) is list else [v]
|
||||||
|
for n in file_names:
|
||||||
|
with open(n, 'rb') as f:
|
||||||
|
filename = os.path.basename(f.name)
|
||||||
|
filedata = f.read()
|
||||||
|
mimetype = (mimetypes.guess_type(filename)[0] or
|
||||||
|
'application/octet-stream')
|
||||||
|
params.append(
|
||||||
|
tuple([k, tuple([filename, filedata, mimetype])]))
|
||||||
|
|
||||||
|
return params
|
||||||
|
|
||||||
|
def select_header_accept(self, accepts):
|
||||||
|
"""Returns `Accept` based on an array of accepts provided.
|
||||||
|
|
||||||
|
:param accepts: List of headers.
|
||||||
|
:return: Accept (e.g. application/json).
|
||||||
|
"""
|
||||||
|
if not accepts:
|
||||||
|
return
|
||||||
|
|
||||||
|
for accept in accepts:
|
||||||
|
if re.search('json', accept, re.IGNORECASE):
|
||||||
|
return accept
|
||||||
|
|
||||||
|
return accepts[0]
|
||||||
|
|
||||||
|
def select_header_content_type(self, content_types):
|
||||||
|
"""Returns `Content-Type` based on an array of content_types provided.
|
||||||
|
|
||||||
|
:param content_types: List of content-types.
|
||||||
|
:return: Content-Type (e.g. application/json).
|
||||||
|
"""
|
||||||
|
if not content_types:
|
||||||
|
return None
|
||||||
|
|
||||||
|
for content_type in content_types:
|
||||||
|
if re.search('json', content_type, re.IGNORECASE):
|
||||||
|
return content_type
|
||||||
|
|
||||||
|
return content_types[0]
|
||||||
|
|
||||||
|
def update_params_for_auth(self, headers, queries, auth_settings,
|
||||||
|
resource_path, method, body,
|
||||||
|
request_auth=None):
|
||||||
|
"""Updates header and query params based on authentication setting.
|
||||||
|
|
||||||
|
:param headers: Header parameters dict to be updated.
|
||||||
|
:param queries: Query parameters tuple list to be updated.
|
||||||
|
:param auth_settings: Authentication setting identifiers list.
|
||||||
|
:resource_path: A string representation of the HTTP request resource path.
|
||||||
|
:method: A string representation of the HTTP request method.
|
||||||
|
:body: A object representing the body of the HTTP request.
|
||||||
|
The object type is the return value of sanitize_for_serialization().
|
||||||
|
:param request_auth: if set, the provided settings will
|
||||||
|
override the token in the configuration.
|
||||||
|
"""
|
||||||
|
if not auth_settings:
|
||||||
|
return
|
||||||
|
|
||||||
|
if request_auth:
|
||||||
|
self._apply_auth_params(headers, queries,
|
||||||
|
resource_path, method, body,
|
||||||
|
request_auth)
|
||||||
|
return
|
||||||
|
|
||||||
|
for auth in auth_settings:
|
||||||
|
auth_setting = self.configuration.auth_settings().get(auth)
|
||||||
|
if auth_setting:
|
||||||
|
self._apply_auth_params(headers, queries,
|
||||||
|
resource_path, method, body,
|
||||||
|
auth_setting)
|
||||||
|
|
||||||
|
def _apply_auth_params(self, headers, queries,
|
||||||
|
resource_path, method, body,
|
||||||
|
auth_setting):
|
||||||
|
"""Updates the request parameters based on a single auth_setting
|
||||||
|
|
||||||
|
:param headers: Header parameters dict to be updated.
|
||||||
|
:param queries: Query parameters tuple list to be updated.
|
||||||
|
:resource_path: A string representation of the HTTP request resource path.
|
||||||
|
:method: A string representation of the HTTP request method.
|
||||||
|
:body: A object representing the body of the HTTP request.
|
||||||
|
The object type is the return value of sanitize_for_serialization().
|
||||||
|
:param auth_setting: auth settings for the endpoint
|
||||||
|
"""
|
||||||
|
if auth_setting['in'] == 'cookie':
|
||||||
|
headers['Cookie'] = auth_setting['value']
|
||||||
|
elif auth_setting['in'] == 'header':
|
||||||
|
if auth_setting['type'] != 'http-signature':
|
||||||
|
headers[auth_setting['key']] = auth_setting['value']
|
||||||
|
elif auth_setting['in'] == 'query':
|
||||||
|
queries.append((auth_setting['key'], auth_setting['value']))
|
||||||
|
else:
|
||||||
|
raise ApiValueError(
|
||||||
|
'Authentication token must be in `query` or `header`'
|
||||||
|
)
|
||||||
|
|
||||||
|
def __deserialize_file(self, response):
|
||||||
|
"""Deserializes body to file
|
||||||
|
|
||||||
|
Saves response body into a file in a temporary folder,
|
||||||
|
using the filename from the `Content-Disposition` header if provided.
|
||||||
|
|
||||||
|
:param response: RESTResponse.
|
||||||
|
:return: file path.
|
||||||
|
"""
|
||||||
|
fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
|
||||||
|
os.close(fd)
|
||||||
|
os.remove(path)
|
||||||
|
|
||||||
|
content_disposition = response.getheader("Content-Disposition")
|
||||||
|
if content_disposition:
|
||||||
|
filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?',
|
||||||
|
content_disposition).group(1)
|
||||||
|
path = os.path.join(os.path.dirname(path), filename)
|
||||||
|
|
||||||
|
with open(path, "wb") as f:
|
||||||
|
f.write(response.data)
|
||||||
|
|
||||||
|
return path
|
||||||
|
|
||||||
|
def __deserialize_primitive(self, data, klass):
|
||||||
|
"""Deserializes string to primitive type.
|
||||||
|
|
||||||
|
:param data: str.
|
||||||
|
:param klass: class literal.
|
||||||
|
|
||||||
|
:return: int, long, float, str, bool.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return klass(data)
|
||||||
|
except UnicodeEncodeError:
|
||||||
|
return str(data)
|
||||||
|
except TypeError:
|
||||||
|
return data
|
||||||
|
|
||||||
|
def __deserialize_object(self, value):
|
||||||
|
"""Return an original value.
|
||||||
|
|
||||||
|
:return: object.
|
||||||
|
"""
|
||||||
|
return value
|
||||||
|
|
||||||
|
def __deserialize_date(self, string):
|
||||||
|
"""Deserializes string to date.
|
||||||
|
|
||||||
|
:param string: str.
|
||||||
|
:return: date.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return parse(string).date()
|
||||||
|
except ImportError:
|
||||||
|
return string
|
||||||
|
except ValueError:
|
||||||
|
raise rest.ApiException(
|
||||||
|
status=0,
|
||||||
|
reason="Failed to parse `{0}` as date object".format(string)
|
||||||
|
)
|
||||||
|
|
||||||
|
def __deserialize_datetime(self, string):
|
||||||
|
"""Deserializes string to datetime.
|
||||||
|
|
||||||
|
The string should be in iso8601 datetime format.
|
||||||
|
|
||||||
|
:param string: str.
|
||||||
|
:return: datetime.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return parse(string)
|
||||||
|
except ImportError:
|
||||||
|
return string
|
||||||
|
except ValueError:
|
||||||
|
raise rest.ApiException(
|
||||||
|
status=0,
|
||||||
|
reason=(
|
||||||
|
"Failed to parse `{0}` as datetime object"
|
||||||
|
.format(string)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def __deserialize_model(self, data, klass):
|
||||||
|
"""Deserializes list or dict to model.
|
||||||
|
|
||||||
|
:param data: dict, list.
|
||||||
|
:param klass: class literal.
|
||||||
|
:return: model object.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return klass.from_dict(data)
|
||||||
25
pkgs/clan-cli/tests/openapi_client/api_response.py
Normal file
25
pkgs/clan-cli/tests/openapi_client/api_response.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
"""API response object."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
from typing import Any, Dict, Optional
|
||||||
|
from pydantic import Field, StrictInt, StrictStr
|
||||||
|
|
||||||
|
class ApiResponse:
|
||||||
|
"""
|
||||||
|
API response object
|
||||||
|
"""
|
||||||
|
|
||||||
|
status_code: Optional[StrictInt] = Field(None, description="HTTP status code")
|
||||||
|
headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers")
|
||||||
|
data: Optional[Any] = Field(None, description="Deserialized data given the data type")
|
||||||
|
raw_data: Optional[Any] = Field(None, description="Raw data (HTTP response body)")
|
||||||
|
|
||||||
|
def __init__(self,
|
||||||
|
status_code=None,
|
||||||
|
headers=None,
|
||||||
|
data=None,
|
||||||
|
raw_data=None) -> None:
|
||||||
|
self.status_code = status_code
|
||||||
|
self.headers = headers
|
||||||
|
self.data = data
|
||||||
|
self.raw_data = raw_data
|
||||||
434
pkgs/clan-cli/tests/openapi_client/configuration.py
Normal file
434
pkgs/clan-cli/tests/openapi_client/configuration.py
Normal file
@@ -0,0 +1,434 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import copy
|
||||||
|
import logging
|
||||||
|
import multiprocessing
|
||||||
|
import sys
|
||||||
|
import urllib3
|
||||||
|
|
||||||
|
import http.client as httplib
|
||||||
|
|
||||||
|
JSON_SCHEMA_VALIDATION_KEYWORDS = {
|
||||||
|
'multipleOf', 'maximum', 'exclusiveMaximum',
|
||||||
|
'minimum', 'exclusiveMinimum', 'maxLength',
|
||||||
|
'minLength', 'pattern', 'maxItems', 'minItems'
|
||||||
|
}
|
||||||
|
|
||||||
|
class Configuration:
|
||||||
|
"""This class contains various settings of the API client.
|
||||||
|
|
||||||
|
:param host: Base url.
|
||||||
|
:param api_key: Dict to store API key(s).
|
||||||
|
Each entry in the dict specifies an API key.
|
||||||
|
The dict key is the name of the security scheme in the OAS specification.
|
||||||
|
The dict value is the API key secret.
|
||||||
|
:param api_key_prefix: Dict to store API prefix (e.g. Bearer).
|
||||||
|
The dict key is the name of the security scheme in the OAS specification.
|
||||||
|
The dict value is an API key prefix when generating the auth data.
|
||||||
|
:param username: Username for HTTP basic authentication.
|
||||||
|
:param password: Password for HTTP basic authentication.
|
||||||
|
:param access_token: Access token.
|
||||||
|
:param server_index: Index to servers configuration.
|
||||||
|
:param server_variables: Mapping with string values to replace variables in
|
||||||
|
templated server configuration. The validation of enums is performed for
|
||||||
|
variables with defined enum values before.
|
||||||
|
:param server_operation_index: Mapping from operation ID to an index to server
|
||||||
|
configuration.
|
||||||
|
:param server_operation_variables: Mapping from operation ID to a mapping with
|
||||||
|
string values to replace variables in templated server configuration.
|
||||||
|
The validation of enums is performed for variables with defined enum
|
||||||
|
values before.
|
||||||
|
:param ssl_ca_cert: str - the path to a file of concatenated CA certificates
|
||||||
|
in PEM format.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
_default = None
|
||||||
|
|
||||||
|
def __init__(self, host=None,
|
||||||
|
api_key=None, api_key_prefix=None,
|
||||||
|
username=None, password=None,
|
||||||
|
access_token=None,
|
||||||
|
server_index=None, server_variables=None,
|
||||||
|
server_operation_index=None, server_operation_variables=None,
|
||||||
|
ssl_ca_cert=None,
|
||||||
|
) -> None:
|
||||||
|
"""Constructor
|
||||||
|
"""
|
||||||
|
self._base_path = "http://localhost" if host is None else host
|
||||||
|
"""Default Base url
|
||||||
|
"""
|
||||||
|
self.server_index = 0 if server_index is None and host is None else server_index
|
||||||
|
self.server_operation_index = server_operation_index or {}
|
||||||
|
"""Default server index
|
||||||
|
"""
|
||||||
|
self.server_variables = server_variables or {}
|
||||||
|
self.server_operation_variables = server_operation_variables or {}
|
||||||
|
"""Default server variables
|
||||||
|
"""
|
||||||
|
self.temp_folder_path = None
|
||||||
|
"""Temp file folder for downloading files
|
||||||
|
"""
|
||||||
|
# Authentication Settings
|
||||||
|
self.api_key = {}
|
||||||
|
if api_key:
|
||||||
|
self.api_key = api_key
|
||||||
|
"""dict to store API key(s)
|
||||||
|
"""
|
||||||
|
self.api_key_prefix = {}
|
||||||
|
if api_key_prefix:
|
||||||
|
self.api_key_prefix = api_key_prefix
|
||||||
|
"""dict to store API prefix (e.g. Bearer)
|
||||||
|
"""
|
||||||
|
self.refresh_api_key_hook = None
|
||||||
|
"""function hook to refresh API key if expired
|
||||||
|
"""
|
||||||
|
self.username = username
|
||||||
|
"""Username for HTTP basic authentication
|
||||||
|
"""
|
||||||
|
self.password = password
|
||||||
|
"""Password for HTTP basic authentication
|
||||||
|
"""
|
||||||
|
self.access_token = access_token
|
||||||
|
"""Access token
|
||||||
|
"""
|
||||||
|
self.logger = {}
|
||||||
|
"""Logging Settings
|
||||||
|
"""
|
||||||
|
self.logger["package_logger"] = logging.getLogger("openapi_client")
|
||||||
|
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
|
||||||
|
self.logger_format = '%(asctime)s %(levelname)s %(message)s'
|
||||||
|
"""Log format
|
||||||
|
"""
|
||||||
|
self.logger_stream_handler = None
|
||||||
|
"""Log stream handler
|
||||||
|
"""
|
||||||
|
self.logger_file_handler = None
|
||||||
|
"""Log file handler
|
||||||
|
"""
|
||||||
|
self.logger_file = None
|
||||||
|
"""Debug file location
|
||||||
|
"""
|
||||||
|
self.debug = False
|
||||||
|
"""Debug switch
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.verify_ssl = True
|
||||||
|
"""SSL/TLS verification
|
||||||
|
Set this to false to skip verifying SSL certificate when calling API
|
||||||
|
from https server.
|
||||||
|
"""
|
||||||
|
self.ssl_ca_cert = ssl_ca_cert
|
||||||
|
"""Set this to customize the certificate file to verify the peer.
|
||||||
|
"""
|
||||||
|
self.cert_file = None
|
||||||
|
"""client certificate file
|
||||||
|
"""
|
||||||
|
self.key_file = None
|
||||||
|
"""client key file
|
||||||
|
"""
|
||||||
|
self.assert_hostname = None
|
||||||
|
"""Set this to True/False to enable/disable SSL hostname verification.
|
||||||
|
"""
|
||||||
|
self.tls_server_name = None
|
||||||
|
"""SSL/TLS Server Name Indication (SNI)
|
||||||
|
Set this to the SNI value expected by the server.
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
|
||||||
|
"""urllib3 connection pool's maximum number of connections saved
|
||||||
|
per pool. urllib3 uses 1 connection as default value, but this is
|
||||||
|
not the best value when you are making a lot of possibly parallel
|
||||||
|
requests to the same host, which is often the case here.
|
||||||
|
cpu_count * 5 is used as default value to increase performance.
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.proxy = None
|
||||||
|
"""Proxy URL
|
||||||
|
"""
|
||||||
|
self.proxy_headers = None
|
||||||
|
"""Proxy headers
|
||||||
|
"""
|
||||||
|
self.safe_chars_for_path_param = ''
|
||||||
|
"""Safe chars for path_param
|
||||||
|
"""
|
||||||
|
self.retries = None
|
||||||
|
"""Adding retries to override urllib3 default value 3
|
||||||
|
"""
|
||||||
|
# Enable client side validation
|
||||||
|
self.client_side_validation = True
|
||||||
|
|
||||||
|
self.socket_options = None
|
||||||
|
"""Options to pass down to the underlying urllib3 socket
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z"
|
||||||
|
"""datetime format
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.date_format = "%Y-%m-%d"
|
||||||
|
"""date format
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __deepcopy__(self, memo):
|
||||||
|
cls = self.__class__
|
||||||
|
result = cls.__new__(cls)
|
||||||
|
memo[id(self)] = result
|
||||||
|
for k, v in self.__dict__.items():
|
||||||
|
if k not in ('logger', 'logger_file_handler'):
|
||||||
|
setattr(result, k, copy.deepcopy(v, memo))
|
||||||
|
# shallow copy of loggers
|
||||||
|
result.logger = copy.copy(self.logger)
|
||||||
|
# use setters to configure loggers
|
||||||
|
result.logger_file = self.logger_file
|
||||||
|
result.debug = self.debug
|
||||||
|
return result
|
||||||
|
|
||||||
|
def __setattr__(self, name, value):
|
||||||
|
object.__setattr__(self, name, value)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_default(cls, default):
|
||||||
|
"""Set default instance of configuration.
|
||||||
|
|
||||||
|
It stores default configuration, which can be
|
||||||
|
returned by get_default_copy method.
|
||||||
|
|
||||||
|
:param default: object of Configuration
|
||||||
|
"""
|
||||||
|
cls._default = default
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default_copy(cls):
|
||||||
|
"""Deprecated. Please use `get_default` instead.
|
||||||
|
|
||||||
|
Deprecated. Please use `get_default` instead.
|
||||||
|
|
||||||
|
:return: The configuration object.
|
||||||
|
"""
|
||||||
|
return cls.get_default()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_default(cls):
|
||||||
|
"""Return the default configuration.
|
||||||
|
|
||||||
|
This method returns newly created, based on default constructor,
|
||||||
|
object of Configuration class or returns a copy of default
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
:return: The configuration object.
|
||||||
|
"""
|
||||||
|
if cls._default is None:
|
||||||
|
cls._default = Configuration()
|
||||||
|
return cls._default
|
||||||
|
|
||||||
|
@property
|
||||||
|
def logger_file(self):
|
||||||
|
"""The logger file.
|
||||||
|
|
||||||
|
If the logger_file is None, then add stream handler and remove file
|
||||||
|
handler. Otherwise, add file handler and remove stream handler.
|
||||||
|
|
||||||
|
:param value: The logger_file path.
|
||||||
|
:type: str
|
||||||
|
"""
|
||||||
|
return self.__logger_file
|
||||||
|
|
||||||
|
@logger_file.setter
|
||||||
|
def logger_file(self, value):
|
||||||
|
"""The logger file.
|
||||||
|
|
||||||
|
If the logger_file is None, then add stream handler and remove file
|
||||||
|
handler. Otherwise, add file handler and remove stream handler.
|
||||||
|
|
||||||
|
:param value: The logger_file path.
|
||||||
|
:type: str
|
||||||
|
"""
|
||||||
|
self.__logger_file = value
|
||||||
|
if self.__logger_file:
|
||||||
|
# If set logging file,
|
||||||
|
# then add file handler and remove stream handler.
|
||||||
|
self.logger_file_handler = logging.FileHandler(self.__logger_file)
|
||||||
|
self.logger_file_handler.setFormatter(self.logger_formatter)
|
||||||
|
for _, logger in self.logger.items():
|
||||||
|
logger.addHandler(self.logger_file_handler)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def debug(self):
|
||||||
|
"""Debug status
|
||||||
|
|
||||||
|
:param value: The debug status, True or False.
|
||||||
|
:type: bool
|
||||||
|
"""
|
||||||
|
return self.__debug
|
||||||
|
|
||||||
|
@debug.setter
|
||||||
|
def debug(self, value):
|
||||||
|
"""Debug status
|
||||||
|
|
||||||
|
:param value: The debug status, True or False.
|
||||||
|
:type: bool
|
||||||
|
"""
|
||||||
|
self.__debug = value
|
||||||
|
if self.__debug:
|
||||||
|
# if debug status is True, turn on debug logging
|
||||||
|
for _, logger in self.logger.items():
|
||||||
|
logger.setLevel(logging.DEBUG)
|
||||||
|
# turn on httplib debug
|
||||||
|
httplib.HTTPConnection.debuglevel = 1
|
||||||
|
else:
|
||||||
|
# if debug status is False, turn off debug logging,
|
||||||
|
# setting log level to default `logging.WARNING`
|
||||||
|
for _, logger in self.logger.items():
|
||||||
|
logger.setLevel(logging.WARNING)
|
||||||
|
# turn off httplib debug
|
||||||
|
httplib.HTTPConnection.debuglevel = 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def logger_format(self):
|
||||||
|
"""The logger format.
|
||||||
|
|
||||||
|
The logger_formatter will be updated when sets logger_format.
|
||||||
|
|
||||||
|
:param value: The format string.
|
||||||
|
:type: str
|
||||||
|
"""
|
||||||
|
return self.__logger_format
|
||||||
|
|
||||||
|
@logger_format.setter
|
||||||
|
def logger_format(self, value):
|
||||||
|
"""The logger format.
|
||||||
|
|
||||||
|
The logger_formatter will be updated when sets logger_format.
|
||||||
|
|
||||||
|
:param value: The format string.
|
||||||
|
:type: str
|
||||||
|
"""
|
||||||
|
self.__logger_format = value
|
||||||
|
self.logger_formatter = logging.Formatter(self.__logger_format)
|
||||||
|
|
||||||
|
def get_api_key_with_prefix(self, identifier, alias=None):
|
||||||
|
"""Gets API key (with prefix if set).
|
||||||
|
|
||||||
|
:param identifier: The identifier of apiKey.
|
||||||
|
:param alias: The alternative identifier of apiKey.
|
||||||
|
:return: The token for api key authentication.
|
||||||
|
"""
|
||||||
|
if self.refresh_api_key_hook is not None:
|
||||||
|
self.refresh_api_key_hook(self)
|
||||||
|
key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
|
||||||
|
if key:
|
||||||
|
prefix = self.api_key_prefix.get(identifier)
|
||||||
|
if prefix:
|
||||||
|
return "%s %s" % (prefix, key)
|
||||||
|
else:
|
||||||
|
return key
|
||||||
|
|
||||||
|
def get_basic_auth_token(self):
|
||||||
|
"""Gets HTTP basic authentication header (string).
|
||||||
|
|
||||||
|
:return: The token for basic HTTP authentication.
|
||||||
|
"""
|
||||||
|
username = ""
|
||||||
|
if self.username is not None:
|
||||||
|
username = self.username
|
||||||
|
password = ""
|
||||||
|
if self.password is not None:
|
||||||
|
password = self.password
|
||||||
|
return urllib3.util.make_headers(
|
||||||
|
basic_auth=username + ':' + password
|
||||||
|
).get('authorization')
|
||||||
|
|
||||||
|
def auth_settings(self):
|
||||||
|
"""Gets Auth Settings dict for api client.
|
||||||
|
|
||||||
|
:return: The Auth Settings information dict.
|
||||||
|
"""
|
||||||
|
auth = {}
|
||||||
|
return auth
|
||||||
|
|
||||||
|
def to_debug_report(self):
|
||||||
|
"""Gets the essential information for debugging.
|
||||||
|
|
||||||
|
:return: The report for debugging.
|
||||||
|
"""
|
||||||
|
return "Python SDK Debug Report:\n"\
|
||||||
|
"OS: {env}\n"\
|
||||||
|
"Python Version: {pyversion}\n"\
|
||||||
|
"Version of the API: 0.1.0\n"\
|
||||||
|
"SDK Package Version: 1.0.0".\
|
||||||
|
format(env=sys.platform, pyversion=sys.version)
|
||||||
|
|
||||||
|
def get_host_settings(self):
|
||||||
|
"""Gets an array of host settings
|
||||||
|
|
||||||
|
:return: An array of host settings
|
||||||
|
"""
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
'url': "",
|
||||||
|
'description': "No description provided",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_host_from_settings(self, index, variables=None, servers=None):
|
||||||
|
"""Gets host URL based on the index and variables
|
||||||
|
:param index: array index of the host settings
|
||||||
|
:param variables: hash of variable and the corresponding value
|
||||||
|
:param servers: an array of host settings or None
|
||||||
|
:return: URL based on host settings
|
||||||
|
"""
|
||||||
|
if index is None:
|
||||||
|
return self._base_path
|
||||||
|
|
||||||
|
variables = {} if variables is None else variables
|
||||||
|
servers = self.get_host_settings() if servers is None else servers
|
||||||
|
|
||||||
|
try:
|
||||||
|
server = servers[index]
|
||||||
|
except IndexError:
|
||||||
|
raise ValueError(
|
||||||
|
"Invalid index {0} when selecting the host settings. "
|
||||||
|
"Must be less than {1}".format(index, len(servers)))
|
||||||
|
|
||||||
|
url = server['url']
|
||||||
|
|
||||||
|
# go through variables and replace placeholders
|
||||||
|
for variable_name, variable in server.get('variables', {}).items():
|
||||||
|
used_value = variables.get(
|
||||||
|
variable_name, variable['default_value'])
|
||||||
|
|
||||||
|
if 'enum_values' in variable \
|
||||||
|
and used_value not in variable['enum_values']:
|
||||||
|
raise ValueError(
|
||||||
|
"The variable `{0}` in the host URL has invalid value "
|
||||||
|
"{1}. Must be {2}.".format(
|
||||||
|
variable_name, variables[variable_name],
|
||||||
|
variable['enum_values']))
|
||||||
|
|
||||||
|
url = url.replace("{" + variable_name + "}", used_value)
|
||||||
|
|
||||||
|
return url
|
||||||
|
|
||||||
|
@property
|
||||||
|
def host(self):
|
||||||
|
"""Return generated host."""
|
||||||
|
return self.get_host_from_settings(self.server_index, variables=self.server_variables)
|
||||||
|
|
||||||
|
@host.setter
|
||||||
|
def host(self, value):
|
||||||
|
"""Fix base path."""
|
||||||
|
self._base_path = value
|
||||||
|
self.server_index = None
|
||||||
193
pkgs/clan-cli/tests/openapi_client/docs/DefaultApi.md
Normal file
193
pkgs/clan-cli/tests/openapi_client/docs/DefaultApi.md
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
# openapi_client.DefaultApi
|
||||||
|
|
||||||
|
All URIs are relative to _http://localhost_
|
||||||
|
|
||||||
|
| Method | HTTP request | Description |
|
||||||
|
| ---------------------------------- | -------------------- | ----------- |
|
||||||
|
| [**get**](DefaultApi.md#get) | **GET** /ws2_example | Get |
|
||||||
|
| [**health**](DefaultApi.md#health) | **GET** /health | Health |
|
||||||
|
| [**root**](DefaultApi.md#root) | **GET** /{path_name} | Root |
|
||||||
|
|
||||||
|
# **get**
|
||||||
|
|
||||||
|
> get()
|
||||||
|
|
||||||
|
Get
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.DefaultApi(api_client)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get
|
||||||
|
api_instance.get()
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling DefaultApi->get: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
void (empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **health**
|
||||||
|
|
||||||
|
> Machine health()
|
||||||
|
|
||||||
|
Health
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.machine import Machine
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.DefaultApi(api_client)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Health
|
||||||
|
api_response = api_instance.health()
|
||||||
|
print("The response of DefaultApi->health:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling DefaultApi->health: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Machine**](Machine.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **root**
|
||||||
|
|
||||||
|
> root(path_name)
|
||||||
|
|
||||||
|
Root
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.DefaultApi(api_client)
|
||||||
|
path_name = 'path_name_example' # str |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Root
|
||||||
|
api_instance.root(path_name)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling DefaultApi->root: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ------------- | ------- | ----------- | ----- |
|
||||||
|
| **path_name** | **str** | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
void (empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
553
pkgs/clan-cli/tests/openapi_client/docs/EntitiesApi.md
Normal file
553
pkgs/clan-cli/tests/openapi_client/docs/EntitiesApi.md
Normal file
@@ -0,0 +1,553 @@
|
|||||||
|
# openapi_client.EntitiesApi
|
||||||
|
|
||||||
|
All URIs are relative to _http://localhost_
|
||||||
|
|
||||||
|
| Method | HTTP request | Description |
|
||||||
|
| ----------------------------------------------------------------- | -------------------------------------- | --------------------- |
|
||||||
|
| [**attach_entity**](EntitiesApi.md#attach_entity) | **POST** /api/v1/{entity_did}/attach | Attach Entity |
|
||||||
|
| [**create_entity**](EntitiesApi.md#create_entity) | **POST** /api/v1/entity | Create Entity |
|
||||||
|
| [**delete_entity**](EntitiesApi.md#delete_entity) | **DELETE** /api/v1/{entity_did}/entity | Delete Entity |
|
||||||
|
| [**detach_entity**](EntitiesApi.md#detach_entity) | **POST** /api/v1/{entity_did}/detach | Detach Entity |
|
||||||
|
| [**get_all_entities**](EntitiesApi.md#get_all_entities) | **GET** /api/v1/entities | Get All Entities |
|
||||||
|
| [**get_attached_entities**](EntitiesApi.md#get_attached_entities) | **GET** /api/v1/attached_entities | Get Attached Entities |
|
||||||
|
| [**get_entity_by_did**](EntitiesApi.md#get_entity_by_did) | **GET** /api/v1/{entity_did}/entity | Get Entity By Did |
|
||||||
|
| [**get_entity_by_name**](EntitiesApi.md#get_entity_by_name) | **GET** /api/v1/entity_by_name | Get Entity By Name |
|
||||||
|
|
||||||
|
# **attach_entity**
|
||||||
|
|
||||||
|
> Dict[str, str] attach_entity(entity_did, skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Attach Entity
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
entity_did = 'entity_did_example' # str |
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Attach Entity
|
||||||
|
api_response = api_instance.attach_entity(entity_did, skip=skip, limit=limit)
|
||||||
|
print("The response of EntitiesApi->attach_entity:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->attach_entity: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
**Dict[str, str]**
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **create_entity**
|
||||||
|
|
||||||
|
> Entity create_entity(entity_create)
|
||||||
|
|
||||||
|
Create Entity
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.models.entity_create import EntityCreate
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
entity_create = openapi_client.EntityCreate() # EntityCreate |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Create Entity
|
||||||
|
api_response = api_instance.create_entity(entity_create)
|
||||||
|
print("The response of EntitiesApi->create_entity:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->create_entity: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ----------------- | ----------------------------------- | ----------- | ----- |
|
||||||
|
| **entity_create** | [**EntityCreate**](EntityCreate.md) | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Entity**](Entity.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **delete_entity**
|
||||||
|
|
||||||
|
> Dict[str, str] delete_entity(entity_did)
|
||||||
|
|
||||||
|
Delete Entity
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
entity_did = 'entity_did_example' # str |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Delete Entity
|
||||||
|
api_response = api_instance.delete_entity(entity_did)
|
||||||
|
print("The response of EntitiesApi->delete_entity:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->delete_entity: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------------- | ------- | ----------- | ----- |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
**Dict[str, str]**
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **detach_entity**
|
||||||
|
|
||||||
|
> Entity detach_entity(entity_did, skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Detach Entity
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
entity_did = 'entity_did_example' # str |
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Detach Entity
|
||||||
|
api_response = api_instance.detach_entity(entity_did, skip=skip, limit=limit)
|
||||||
|
print("The response of EntitiesApi->detach_entity:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->detach_entity: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Entity**](Entity.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_all_entities**
|
||||||
|
|
||||||
|
> List[Entity] get_all_entities(skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get All Entities
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get All Entities
|
||||||
|
api_response = api_instance.get_all_entities(skip=skip, limit=limit)
|
||||||
|
print("The response of EntitiesApi->get_all_entities:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->get_all_entities: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List[Entity]**](Entity.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_attached_entities**
|
||||||
|
|
||||||
|
> List[Entity] get_attached_entities(skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get Attached Entities
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get Attached Entities
|
||||||
|
api_response = api_instance.get_attached_entities(skip=skip, limit=limit)
|
||||||
|
print("The response of EntitiesApi->get_attached_entities:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->get_attached_entities: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List[Entity]**](Entity.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_entity_by_did**
|
||||||
|
|
||||||
|
> Entity get_entity_by_did(entity_did)
|
||||||
|
|
||||||
|
Get Entity By Did
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
entity_did = 'entity_did_example' # str |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get Entity By Did
|
||||||
|
api_response = api_instance.get_entity_by_did(entity_did)
|
||||||
|
print("The response of EntitiesApi->get_entity_by_did:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->get_entity_by_did: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------------- | ------- | ----------- | ----- |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Entity**](Entity.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_entity_by_name**
|
||||||
|
|
||||||
|
> Entity get_entity_by_name(entity_name)
|
||||||
|
|
||||||
|
Get Entity By Name
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.EntitiesApi(api_client)
|
||||||
|
entity_name = 'entity_name_example' # str |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get Entity By Name
|
||||||
|
api_response = api_instance.get_entity_by_name(entity_name)
|
||||||
|
print("The response of EntitiesApi->get_entity_by_name:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling EntitiesApi->get_entity_by_name: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------------- | ------- | ----------- | ----- |
|
||||||
|
| **entity_name** | **str** | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Entity**](Entity.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
32
pkgs/clan-cli/tests/openapi_client/docs/Entity.md
Normal file
32
pkgs/clan-cli/tests/openapi_client/docs/Entity.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Entity
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ------------ | ---------- | ----------- | ----- |
|
||||||
|
| **did** | **str** | |
|
||||||
|
| **name** | **str** | |
|
||||||
|
| **ip** | **str** | |
|
||||||
|
| **visible** | **bool** | |
|
||||||
|
| **other** | **object** | |
|
||||||
|
| **attached** | **bool** | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of Entity from a JSON string
|
||||||
|
entity_instance = Entity.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print Entity.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
entity_dict = entity_instance.to_dict()
|
||||||
|
# create an instance of Entity from a dict
|
||||||
|
entity_form_dict = entity.from_dict(entity_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
31
pkgs/clan-cli/tests/openapi_client/docs/EntityCreate.md
Normal file
31
pkgs/clan-cli/tests/openapi_client/docs/EntityCreate.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# EntityCreate
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ----------- | ---------- | ----------- | ----- |
|
||||||
|
| **did** | **str** | |
|
||||||
|
| **name** | **str** | |
|
||||||
|
| **ip** | **str** | |
|
||||||
|
| **visible** | **bool** | |
|
||||||
|
| **other** | **object** | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.entity_create import EntityCreate
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of EntityCreate from a JSON string
|
||||||
|
entity_create_instance = EntityCreate.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print EntityCreate.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
entity_create_dict = entity_create_instance.to_dict()
|
||||||
|
# create an instance of EntityCreate from a dict
|
||||||
|
entity_create_form_dict = entity_create.from_dict(entity_create_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# HTTPValidationError
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ---------- | ----------------------------------------------- | ----------- | ---------- |
|
||||||
|
| **detail** | [**List[ValidationError]**](ValidationError.md) | | [optional] |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.http_validation_error import HTTPValidationError
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of HTTPValidationError from a JSON string
|
||||||
|
http_validation_error_instance = HTTPValidationError.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print HTTPValidationError.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
http_validation_error_dict = http_validation_error_instance.to_dict()
|
||||||
|
# create an instance of HTTPValidationError from a dict
|
||||||
|
http_validation_error_form_dict = http_validation_error.from_dict(http_validation_error_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
28
pkgs/clan-cli/tests/openapi_client/docs/Machine.md
Normal file
28
pkgs/clan-cli/tests/openapi_client/docs/Machine.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Machine
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ---------- | ----------------------- | ----------- | ----- |
|
||||||
|
| **name** | **str** | |
|
||||||
|
| **status** | [**Status**](Status.md) | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.machine import Machine
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of Machine from a JSON string
|
||||||
|
machine_instance = Machine.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print Machine.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
machine_dict = machine_instance.to_dict()
|
||||||
|
# create an instance of Machine from a dict
|
||||||
|
machine_form_dict = machine.from_dict(machine_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
75
pkgs/clan-cli/tests/openapi_client/docs/RepositoriesApi.md
Normal file
75
pkgs/clan-cli/tests/openapi_client/docs/RepositoriesApi.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# openapi_client.RepositoriesApi
|
||||||
|
|
||||||
|
All URIs are relative to _http://localhost_
|
||||||
|
|
||||||
|
| Method | HTTP request | Description |
|
||||||
|
| ------------------------------------------------------------------- | ---------------------------- | -------------------- |
|
||||||
|
| [**get_all_repositories**](RepositoriesApi.md#get_all_repositories) | **GET** /api/v1/repositories | Get All Repositories |
|
||||||
|
|
||||||
|
# **get_all_repositories**
|
||||||
|
|
||||||
|
> List[Service] get_all_repositories(skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get All Repositories
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.RepositoriesApi(api_client)
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get All Repositories
|
||||||
|
api_response = api_instance.get_all_repositories(skip=skip, limit=limit)
|
||||||
|
print("The response of RepositoriesApi->get_all_repositories:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling RepositoriesApi->get_all_repositories: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List[Service]**](Service.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
32
pkgs/clan-cli/tests/openapi_client/docs/Resolution.md
Normal file
32
pkgs/clan-cli/tests/openapi_client/docs/Resolution.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Resolution
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ------------------ | ------------ | ----------- | ----- |
|
||||||
|
| **requester_name** | **str** | |
|
||||||
|
| **requester_did** | **str** | |
|
||||||
|
| **resolved_did** | **str** | |
|
||||||
|
| **other** | **object** | |
|
||||||
|
| **timestamp** | **datetime** | |
|
||||||
|
| **id** | **int** | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.resolution import Resolution
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of Resolution from a JSON string
|
||||||
|
resolution_instance = Resolution.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print Resolution.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
resolution_dict = resolution_instance.to_dict()
|
||||||
|
# create an instance of Resolution from a dict
|
||||||
|
resolution_form_dict = resolution.from_dict(resolution_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
75
pkgs/clan-cli/tests/openapi_client/docs/ResolutionApi.md
Normal file
75
pkgs/clan-cli/tests/openapi_client/docs/ResolutionApi.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# openapi_client.ResolutionApi
|
||||||
|
|
||||||
|
All URIs are relative to _http://localhost_
|
||||||
|
|
||||||
|
| Method | HTTP request | Description |
|
||||||
|
| --------------------------------------------------------------- | --------------------------- | ------------------- |
|
||||||
|
| [**get_all_resolutions**](ResolutionApi.md#get_all_resolutions) | **GET** /api/v1/resolutions | Get All Resolutions |
|
||||||
|
|
||||||
|
# **get_all_resolutions**
|
||||||
|
|
||||||
|
> List[Resolution] get_all_resolutions(skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get All Resolutions
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.resolution import Resolution
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.ResolutionApi(api_client)
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get All Resolutions
|
||||||
|
api_response = api_instance.get_all_resolutions(skip=skip, limit=limit)
|
||||||
|
print("The response of ResolutionApi->get_all_resolutions:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling ResolutionApi->get_all_resolutions: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List[Resolution]**](Resolution.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
34
pkgs/clan-cli/tests/openapi_client/docs/Service.md
Normal file
34
pkgs/clan-cli/tests/openapi_client/docs/Service.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Service
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ---------------- | ----------------------- | ----------- | ----- |
|
||||||
|
| **uuid** | **str** | |
|
||||||
|
| **service_name** | **str** | |
|
||||||
|
| **service_type** | **str** | |
|
||||||
|
| **endpoint_url** | **str** | |
|
||||||
|
| **status** | **str** | |
|
||||||
|
| **other** | **object** | |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
| **entity** | [**Entity**](Entity.md) | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of Service from a JSON string
|
||||||
|
service_instance = Service.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print Service.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
service_dict = service_instance.to_dict()
|
||||||
|
# create an instance of Service from a dict
|
||||||
|
service_form_dict = service.from_dict(service_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
33
pkgs/clan-cli/tests/openapi_client/docs/ServiceCreate.md
Normal file
33
pkgs/clan-cli/tests/openapi_client/docs/ServiceCreate.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# ServiceCreate
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ---------------- | ---------- | ----------- | ----- |
|
||||||
|
| **uuid** | **str** | |
|
||||||
|
| **service_name** | **str** | |
|
||||||
|
| **service_type** | **str** | |
|
||||||
|
| **endpoint_url** | **str** | |
|
||||||
|
| **status** | **str** | |
|
||||||
|
| **other** | **object** | |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.service_create import ServiceCreate
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of ServiceCreate from a JSON string
|
||||||
|
service_create_instance = ServiceCreate.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print ServiceCreate.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
service_create_dict = service_create_instance.to_dict()
|
||||||
|
# create an instance of ServiceCreate from a dict
|
||||||
|
service_create_form_dict = service_create.from_dict(service_create_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
351
pkgs/clan-cli/tests/openapi_client/docs/ServicesApi.md
Normal file
351
pkgs/clan-cli/tests/openapi_client/docs/ServicesApi.md
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
# openapi_client.ServicesApi
|
||||||
|
|
||||||
|
All URIs are relative to _http://localhost_
|
||||||
|
|
||||||
|
| Method | HTTP request | Description |
|
||||||
|
| --------------------------------------------------------------- | --------------------------------------- | -------------------- |
|
||||||
|
| [**create_service**](ServicesApi.md#create_service) | **POST** /api/v1/service | Create Service |
|
||||||
|
| [**delete_service**](ServicesApi.md#delete_service) | **DELETE** /api/v1/{entity_did}/service | Delete Service |
|
||||||
|
| [**get_all_services**](ServicesApi.md#get_all_services) | **GET** /api/v1/services | Get All Services |
|
||||||
|
| [**get_service_by_did**](ServicesApi.md#get_service_by_did) | **GET** /api/v1/{entity_did}/service | Get Service By Did |
|
||||||
|
| [**get_services_by_name**](ServicesApi.md#get_services_by_name) | **GET** /api/v1/services_by_entity_name | Get Services By Name |
|
||||||
|
|
||||||
|
# **create_service**
|
||||||
|
|
||||||
|
> Service create_service(service_create)
|
||||||
|
|
||||||
|
Create Service
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.models.service_create import ServiceCreate
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.ServicesApi(api_client)
|
||||||
|
service_create = openapi_client.ServiceCreate() # ServiceCreate |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Create Service
|
||||||
|
api_response = api_instance.create_service(service_create)
|
||||||
|
print("The response of ServicesApi->create_service:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling ServicesApi->create_service: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ------------------ | ------------------------------------- | ----------- | ----- |
|
||||||
|
| **service_create** | [**ServiceCreate**](ServiceCreate.md) | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Service**](Service.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **delete_service**
|
||||||
|
|
||||||
|
> Dict[str, str] delete_service(entity_did)
|
||||||
|
|
||||||
|
Delete Service
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.ServicesApi(api_client)
|
||||||
|
entity_did = 'entity_did_example' # str |
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Delete Service
|
||||||
|
api_response = api_instance.delete_service(entity_did)
|
||||||
|
print("The response of ServicesApi->delete_service:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling ServicesApi->delete_service: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------------- | ------- | ----------- | ----- |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
**Dict[str, str]**
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_all_services**
|
||||||
|
|
||||||
|
> List[Service] get_all_services(skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get All Services
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.ServicesApi(api_client)
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get All Services
|
||||||
|
api_response = api_instance.get_all_services(skip=skip, limit=limit)
|
||||||
|
print("The response of ServicesApi->get_all_services:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling ServicesApi->get_all_services: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List[Service]**](Service.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_service_by_did**
|
||||||
|
|
||||||
|
> List[Service] get_service_by_did(entity_did, skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get Service By Did
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.ServicesApi(api_client)
|
||||||
|
entity_did = 'entity_did_example' # str |
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get Service By Did
|
||||||
|
api_response = api_instance.get_service_by_did(entity_did, skip=skip, limit=limit)
|
||||||
|
print("The response of ServicesApi->get_service_by_did:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling ServicesApi->get_service_by_did: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **entity_did** | **str** | |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List[Service]**](Service.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **get_services_by_name**
|
||||||
|
|
||||||
|
> ServicesByName get_services_by_name(entity_name, skip=skip, limit=limit)
|
||||||
|
|
||||||
|
Get Services By Name
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
import openapi_client
|
||||||
|
from openapi_client.models.services_by_name import ServicesByName
|
||||||
|
from openapi_client.rest import ApiException
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
|
# Defining the host is optional and defaults to http://localhost
|
||||||
|
# See configuration.py for a list of all supported configuration parameters.
|
||||||
|
configuration = openapi_client.Configuration(
|
||||||
|
host = "http://localhost"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Enter a context with an instance of the API client
|
||||||
|
with openapi_client.ApiClient(configuration) as api_client:
|
||||||
|
# Create an instance of the API class
|
||||||
|
api_instance = openapi_client.ServicesApi(api_client)
|
||||||
|
entity_name = 'entity_name_example' # str |
|
||||||
|
skip = 0 # int | (optional) (default to 0)
|
||||||
|
limit = 100 # int | (optional) (default to 100)
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Get Services By Name
|
||||||
|
api_response = api_instance.get_services_by_name(entity_name, skip=skip, limit=limit)
|
||||||
|
print("The response of ServicesApi->get_services_by_name:\n")
|
||||||
|
pprint(api_response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Exception when calling ServicesApi->get_services_by_name: %s\n" % e)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| --------------- | ------- | ----------- | --------------------------- |
|
||||||
|
| **entity_name** | **str** | |
|
||||||
|
| **skip** | **int** | | [optional] [default to 0] |
|
||||||
|
| **limit** | **int** | | [optional] [default to 100] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**ServicesByName**](ServicesByName.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
### HTTP response details
|
||||||
|
|
||||||
|
| Status code | Description | Response headers |
|
||||||
|
| ----------- | ------------------- | ---------------- |
|
||||||
|
| **200** | Successful Response | - |
|
||||||
|
| **422** | Validation Error | - |
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
28
pkgs/clan-cli/tests/openapi_client/docs/ServicesByName.md
Normal file
28
pkgs/clan-cli/tests/openapi_client/docs/ServicesByName.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# ServicesByName
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ------------ | ------------------------------- | ----------- | ----- |
|
||||||
|
| **entity** | [**Entity**](Entity.md) | |
|
||||||
|
| **services** | [**List[Service]**](Service.md) | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.services_by_name import ServicesByName
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of ServicesByName from a JSON string
|
||||||
|
services_by_name_instance = ServicesByName.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print ServicesByName.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
services_by_name_dict = services_by_name_instance.to_dict()
|
||||||
|
# create an instance of ServicesByName from a dict
|
||||||
|
services_by_name_form_dict = services_by_name.from_dict(services_by_name_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
10
pkgs/clan-cli/tests/openapi_client/docs/Status.md
Normal file
10
pkgs/clan-cli/tests/openapi_client/docs/Status.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Status
|
||||||
|
|
||||||
|
An enumeration.
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ---- | ---- | ----------- | ----- |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
29
pkgs/clan-cli/tests/openapi_client/docs/ValidationError.md
Normal file
29
pkgs/clan-cli/tests/openapi_client/docs/ValidationError.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# ValidationError
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| -------- | --------------------------------------------------------------- | ----------- | ----- |
|
||||||
|
| **loc** | [**List[ValidationErrorLocInner]**](ValidationErrorLocInner.md) | |
|
||||||
|
| **msg** | **str** | |
|
||||||
|
| **type** | **str** | |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.validation_error import ValidationError
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of ValidationError from a JSON string
|
||||||
|
validation_error_instance = ValidationError.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print ValidationError.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
validation_error_dict = validation_error_instance.to_dict()
|
||||||
|
# create an instance of ValidationError from a dict
|
||||||
|
validation_error_form_dict = validation_error.from_dict(validation_error_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# ValidationErrorLocInner
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Name | Type | Description | Notes |
|
||||||
|
| ---- | ---- | ----------- | ----- |
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```python
|
||||||
|
from openapi_client.models.validation_error_loc_inner import ValidationErrorLocInner
|
||||||
|
|
||||||
|
# TODO update the JSON string below
|
||||||
|
json = "{}"
|
||||||
|
# create an instance of ValidationErrorLocInner from a JSON string
|
||||||
|
validation_error_loc_inner_instance = ValidationErrorLocInner.from_json(json)
|
||||||
|
# print the JSON string representation of the object
|
||||||
|
print ValidationErrorLocInner.to_json()
|
||||||
|
|
||||||
|
# convert the object into a dict
|
||||||
|
validation_error_loc_inner_dict = validation_error_loc_inner_instance.to_dict()
|
||||||
|
# create an instance of ValidationErrorLocInner from a dict
|
||||||
|
validation_error_loc_inner_form_dict = validation_error_loc_inner.from_dict(validation_error_loc_inner_dict)
|
||||||
|
```
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
166
pkgs/clan-cli/tests/openapi_client/exceptions.py
Normal file
166
pkgs/clan-cli/tests/openapi_client/exceptions.py
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
class OpenApiException(Exception):
|
||||||
|
"""The base exception class for all OpenAPIExceptions"""
|
||||||
|
|
||||||
|
|
||||||
|
class ApiTypeError(OpenApiException, TypeError):
|
||||||
|
def __init__(self, msg, path_to_item=None, valid_classes=None,
|
||||||
|
key_type=None) -> None:
|
||||||
|
""" Raises an exception for TypeErrors
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg (str): the exception message
|
||||||
|
|
||||||
|
Keyword Args:
|
||||||
|
path_to_item (list): a list of keys an indices to get to the
|
||||||
|
current_item
|
||||||
|
None if unset
|
||||||
|
valid_classes (tuple): the primitive classes that current item
|
||||||
|
should be an instance of
|
||||||
|
None if unset
|
||||||
|
key_type (bool): False if our value is a value in a dict
|
||||||
|
True if it is a key in a dict
|
||||||
|
False if our item is an item in a list
|
||||||
|
None if unset
|
||||||
|
"""
|
||||||
|
self.path_to_item = path_to_item
|
||||||
|
self.valid_classes = valid_classes
|
||||||
|
self.key_type = key_type
|
||||||
|
full_msg = msg
|
||||||
|
if path_to_item:
|
||||||
|
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
||||||
|
super(ApiTypeError, self).__init__(full_msg)
|
||||||
|
|
||||||
|
|
||||||
|
class ApiValueError(OpenApiException, ValueError):
|
||||||
|
def __init__(self, msg, path_to_item=None) -> None:
|
||||||
|
"""
|
||||||
|
Args:
|
||||||
|
msg (str): the exception message
|
||||||
|
|
||||||
|
Keyword Args:
|
||||||
|
path_to_item (list) the path to the exception in the
|
||||||
|
received_data dict. None if unset
|
||||||
|
"""
|
||||||
|
|
||||||
|
self.path_to_item = path_to_item
|
||||||
|
full_msg = msg
|
||||||
|
if path_to_item:
|
||||||
|
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
||||||
|
super(ApiValueError, self).__init__(full_msg)
|
||||||
|
|
||||||
|
|
||||||
|
class ApiAttributeError(OpenApiException, AttributeError):
|
||||||
|
def __init__(self, msg, path_to_item=None) -> None:
|
||||||
|
"""
|
||||||
|
Raised when an attribute reference or assignment fails.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg (str): the exception message
|
||||||
|
|
||||||
|
Keyword Args:
|
||||||
|
path_to_item (None/list) the path to the exception in the
|
||||||
|
received_data dict
|
||||||
|
"""
|
||||||
|
self.path_to_item = path_to_item
|
||||||
|
full_msg = msg
|
||||||
|
if path_to_item:
|
||||||
|
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
||||||
|
super(ApiAttributeError, self).__init__(full_msg)
|
||||||
|
|
||||||
|
|
||||||
|
class ApiKeyError(OpenApiException, KeyError):
|
||||||
|
def __init__(self, msg, path_to_item=None) -> None:
|
||||||
|
"""
|
||||||
|
Args:
|
||||||
|
msg (str): the exception message
|
||||||
|
|
||||||
|
Keyword Args:
|
||||||
|
path_to_item (None/list) the path to the exception in the
|
||||||
|
received_data dict
|
||||||
|
"""
|
||||||
|
self.path_to_item = path_to_item
|
||||||
|
full_msg = msg
|
||||||
|
if path_to_item:
|
||||||
|
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
||||||
|
super(ApiKeyError, self).__init__(full_msg)
|
||||||
|
|
||||||
|
|
||||||
|
class ApiException(OpenApiException):
|
||||||
|
|
||||||
|
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
||||||
|
if http_resp:
|
||||||
|
self.status = http_resp.status
|
||||||
|
self.reason = http_resp.reason
|
||||||
|
self.body = http_resp.data
|
||||||
|
self.headers = http_resp.getheaders()
|
||||||
|
else:
|
||||||
|
self.status = status
|
||||||
|
self.reason = reason
|
||||||
|
self.body = None
|
||||||
|
self.headers = None
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
"""Custom error messages for exception"""
|
||||||
|
error_message = "({0})\n"\
|
||||||
|
"Reason: {1}\n".format(self.status, self.reason)
|
||||||
|
if self.headers:
|
||||||
|
error_message += "HTTP response headers: {0}\n".format(
|
||||||
|
self.headers)
|
||||||
|
|
||||||
|
if self.body:
|
||||||
|
error_message += "HTTP response body: {0}\n".format(self.body)
|
||||||
|
|
||||||
|
return error_message
|
||||||
|
|
||||||
|
class BadRequestException(ApiException):
|
||||||
|
|
||||||
|
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
||||||
|
super(BadRequestException, self).__init__(status, reason, http_resp)
|
||||||
|
|
||||||
|
class NotFoundException(ApiException):
|
||||||
|
|
||||||
|
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
||||||
|
super(NotFoundException, self).__init__(status, reason, http_resp)
|
||||||
|
|
||||||
|
|
||||||
|
class UnauthorizedException(ApiException):
|
||||||
|
|
||||||
|
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
||||||
|
super(UnauthorizedException, self).__init__(status, reason, http_resp)
|
||||||
|
|
||||||
|
|
||||||
|
class ForbiddenException(ApiException):
|
||||||
|
|
||||||
|
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
||||||
|
super(ForbiddenException, self).__init__(status, reason, http_resp)
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceException(ApiException):
|
||||||
|
|
||||||
|
def __init__(self, status=None, reason=None, http_resp=None) -> None:
|
||||||
|
super(ServiceException, self).__init__(status, reason, http_resp)
|
||||||
|
|
||||||
|
|
||||||
|
def render_path(path_to_item):
|
||||||
|
"""Returns a string representation of a path"""
|
||||||
|
result = ""
|
||||||
|
for pth in path_to_item:
|
||||||
|
if isinstance(pth, int):
|
||||||
|
result += "[{0}]".format(pth)
|
||||||
|
else:
|
||||||
|
result += "['{0}']".format(pth)
|
||||||
|
return result
|
||||||
27
pkgs/clan-cli/tests/openapi_client/models/__init__.py
Normal file
27
pkgs/clan-cli/tests/openapi_client/models/__init__.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
# flake8: noqa
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
# import models into model package
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.models.entity_create import EntityCreate
|
||||||
|
from openapi_client.models.http_validation_error import HTTPValidationError
|
||||||
|
from openapi_client.models.machine import Machine
|
||||||
|
from openapi_client.models.resolution import Resolution
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
from openapi_client.models.service_create import ServiceCreate
|
||||||
|
from openapi_client.models.services_by_name import ServicesByName
|
||||||
|
from openapi_client.models.status import Status
|
||||||
|
from openapi_client.models.validation_error import ValidationError
|
||||||
|
from openapi_client.models.validation_error_loc_inner import ValidationErrorLocInner
|
||||||
81
pkgs/clan-cli/tests/openapi_client/models/entity.py
Normal file
81
pkgs/clan-cli/tests/openapi_client/models/entity.py
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import Any, Dict
|
||||||
|
from pydantic import BaseModel, Field, StrictBool, StrictStr
|
||||||
|
|
||||||
|
class Entity(BaseModel):
|
||||||
|
"""
|
||||||
|
Entity
|
||||||
|
"""
|
||||||
|
did: StrictStr = Field(...)
|
||||||
|
name: StrictStr = Field(...)
|
||||||
|
ip: StrictStr = Field(...)
|
||||||
|
visible: StrictBool = Field(...)
|
||||||
|
other: Dict[str, Any] = Field(...)
|
||||||
|
attached: StrictBool = Field(...)
|
||||||
|
__properties = ["did", "name", "ip", "visible", "other", "attached"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> Entity:
|
||||||
|
"""Create an instance of Entity from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> Entity:
|
||||||
|
"""Create an instance of Entity from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return Entity.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = Entity.parse_obj({
|
||||||
|
"did": obj.get("did"),
|
||||||
|
"name": obj.get("name"),
|
||||||
|
"ip": obj.get("ip"),
|
||||||
|
"visible": obj.get("visible"),
|
||||||
|
"other": obj.get("other"),
|
||||||
|
"attached": obj.get("attached")
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
79
pkgs/clan-cli/tests/openapi_client/models/entity_create.py
Normal file
79
pkgs/clan-cli/tests/openapi_client/models/entity_create.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import Any, Dict
|
||||||
|
from pydantic import BaseModel, Field, StrictBool, StrictStr
|
||||||
|
|
||||||
|
class EntityCreate(BaseModel):
|
||||||
|
"""
|
||||||
|
EntityCreate
|
||||||
|
"""
|
||||||
|
did: StrictStr = Field(...)
|
||||||
|
name: StrictStr = Field(...)
|
||||||
|
ip: StrictStr = Field(...)
|
||||||
|
visible: StrictBool = Field(...)
|
||||||
|
other: Dict[str, Any] = Field(...)
|
||||||
|
__properties = ["did", "name", "ip", "visible", "other"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> EntityCreate:
|
||||||
|
"""Create an instance of EntityCreate from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> EntityCreate:
|
||||||
|
"""Create an instance of EntityCreate from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return EntityCreate.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = EntityCreate.parse_obj({
|
||||||
|
"did": obj.get("did"),
|
||||||
|
"name": obj.get("name"),
|
||||||
|
"ip": obj.get("ip"),
|
||||||
|
"visible": obj.get("visible"),
|
||||||
|
"other": obj.get("other")
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import List, Optional
|
||||||
|
from pydantic import BaseModel, conlist
|
||||||
|
from openapi_client.models.validation_error import ValidationError
|
||||||
|
|
||||||
|
class HTTPValidationError(BaseModel):
|
||||||
|
"""
|
||||||
|
HTTPValidationError
|
||||||
|
"""
|
||||||
|
detail: Optional[conlist(ValidationError)] = None
|
||||||
|
__properties = ["detail"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> HTTPValidationError:
|
||||||
|
"""Create an instance of HTTPValidationError from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
# override the default output from pydantic by calling `to_dict()` of each item in detail (list)
|
||||||
|
_items = []
|
||||||
|
if self.detail:
|
||||||
|
for _item in self.detail:
|
||||||
|
if _item:
|
||||||
|
_items.append(_item.to_dict())
|
||||||
|
_dict['detail'] = _items
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> HTTPValidationError:
|
||||||
|
"""Create an instance of HTTPValidationError from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return HTTPValidationError.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = HTTPValidationError.parse_obj({
|
||||||
|
"detail": [ValidationError.from_dict(_item) for _item in obj.get("detail")] if obj.get("detail") is not None else None
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
74
pkgs/clan-cli/tests/openapi_client/models/machine.py
Normal file
74
pkgs/clan-cli/tests/openapi_client/models/machine.py
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
from pydantic import BaseModel, Field, StrictStr
|
||||||
|
from openapi_client.models.status import Status
|
||||||
|
|
||||||
|
class Machine(BaseModel):
|
||||||
|
"""
|
||||||
|
Machine
|
||||||
|
"""
|
||||||
|
name: StrictStr = Field(...)
|
||||||
|
status: Status = Field(...)
|
||||||
|
__properties = ["name", "status"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> Machine:
|
||||||
|
"""Create an instance of Machine from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> Machine:
|
||||||
|
"""Create an instance of Machine from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return Machine.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = Machine.parse_obj({
|
||||||
|
"name": obj.get("name"),
|
||||||
|
"status": obj.get("status")
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
81
pkgs/clan-cli/tests/openapi_client/models/resolution.py
Normal file
81
pkgs/clan-cli/tests/openapi_client/models/resolution.py
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import Any, Dict
|
||||||
|
from pydantic import BaseModel, Field, StrictInt, StrictStr
|
||||||
|
|
||||||
|
class Resolution(BaseModel):
|
||||||
|
"""
|
||||||
|
Resolution
|
||||||
|
"""
|
||||||
|
requester_name: StrictStr = Field(...)
|
||||||
|
requester_did: StrictStr = Field(...)
|
||||||
|
resolved_did: StrictStr = Field(...)
|
||||||
|
other: Dict[str, Any] = Field(...)
|
||||||
|
timestamp: datetime = Field(...)
|
||||||
|
id: StrictInt = Field(...)
|
||||||
|
__properties = ["requester_name", "requester_did", "resolved_did", "other", "timestamp", "id"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> Resolution:
|
||||||
|
"""Create an instance of Resolution from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> Resolution:
|
||||||
|
"""Create an instance of Resolution from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return Resolution.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = Resolution.parse_obj({
|
||||||
|
"requester_name": obj.get("requester_name"),
|
||||||
|
"requester_did": obj.get("requester_did"),
|
||||||
|
"resolved_did": obj.get("resolved_did"),
|
||||||
|
"other": obj.get("other"),
|
||||||
|
"timestamp": obj.get("timestamp"),
|
||||||
|
"id": obj.get("id")
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
89
pkgs/clan-cli/tests/openapi_client/models/service.py
Normal file
89
pkgs/clan-cli/tests/openapi_client/models/service.py
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import Any, Dict
|
||||||
|
from pydantic import BaseModel, Field, StrictStr
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
|
||||||
|
class Service(BaseModel):
|
||||||
|
"""
|
||||||
|
Service
|
||||||
|
"""
|
||||||
|
uuid: StrictStr = Field(...)
|
||||||
|
service_name: StrictStr = Field(...)
|
||||||
|
service_type: StrictStr = Field(...)
|
||||||
|
endpoint_url: StrictStr = Field(...)
|
||||||
|
status: StrictStr = Field(...)
|
||||||
|
other: Dict[str, Any] = Field(...)
|
||||||
|
entity_did: StrictStr = Field(...)
|
||||||
|
entity: Entity = Field(...)
|
||||||
|
__properties = ["uuid", "service_name", "service_type", "endpoint_url", "status", "other", "entity_did", "entity"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> Service:
|
||||||
|
"""Create an instance of Service from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
# override the default output from pydantic by calling `to_dict()` of entity
|
||||||
|
if self.entity:
|
||||||
|
_dict['entity'] = self.entity.to_dict()
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> Service:
|
||||||
|
"""Create an instance of Service from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return Service.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = Service.parse_obj({
|
||||||
|
"uuid": obj.get("uuid"),
|
||||||
|
"service_name": obj.get("service_name"),
|
||||||
|
"service_type": obj.get("service_type"),
|
||||||
|
"endpoint_url": obj.get("endpoint_url"),
|
||||||
|
"status": obj.get("status"),
|
||||||
|
"other": obj.get("other"),
|
||||||
|
"entity_did": obj.get("entity_did"),
|
||||||
|
"entity": Entity.from_dict(obj.get("entity")) if obj.get("entity") is not None else None
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
83
pkgs/clan-cli/tests/openapi_client/models/service_create.py
Normal file
83
pkgs/clan-cli/tests/openapi_client/models/service_create.py
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import Any, Dict
|
||||||
|
from pydantic import BaseModel, Field, StrictStr
|
||||||
|
|
||||||
|
class ServiceCreate(BaseModel):
|
||||||
|
"""
|
||||||
|
ServiceCreate
|
||||||
|
"""
|
||||||
|
uuid: StrictStr = Field(...)
|
||||||
|
service_name: StrictStr = Field(...)
|
||||||
|
service_type: StrictStr = Field(...)
|
||||||
|
endpoint_url: StrictStr = Field(...)
|
||||||
|
status: StrictStr = Field(...)
|
||||||
|
other: Dict[str, Any] = Field(...)
|
||||||
|
entity_did: StrictStr = Field(...)
|
||||||
|
__properties = ["uuid", "service_name", "service_type", "endpoint_url", "status", "other", "entity_did"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> ServiceCreate:
|
||||||
|
"""Create an instance of ServiceCreate from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> ServiceCreate:
|
||||||
|
"""Create an instance of ServiceCreate from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return ServiceCreate.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = ServiceCreate.parse_obj({
|
||||||
|
"uuid": obj.get("uuid"),
|
||||||
|
"service_name": obj.get("service_name"),
|
||||||
|
"service_type": obj.get("service_type"),
|
||||||
|
"endpoint_url": obj.get("endpoint_url"),
|
||||||
|
"status": obj.get("status"),
|
||||||
|
"other": obj.get("other"),
|
||||||
|
"entity_did": obj.get("entity_did")
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
from pydantic import BaseModel, Field, conlist
|
||||||
|
from openapi_client.models.entity import Entity
|
||||||
|
from openapi_client.models.service import Service
|
||||||
|
|
||||||
|
class ServicesByName(BaseModel):
|
||||||
|
"""
|
||||||
|
ServicesByName
|
||||||
|
"""
|
||||||
|
entity: Entity = Field(...)
|
||||||
|
services: conlist(Service) = Field(...)
|
||||||
|
__properties = ["entity", "services"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> ServicesByName:
|
||||||
|
"""Create an instance of ServicesByName from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
# override the default output from pydantic by calling `to_dict()` of entity
|
||||||
|
if self.entity:
|
||||||
|
_dict['entity'] = self.entity.to_dict()
|
||||||
|
# override the default output from pydantic by calling `to_dict()` of each item in services (list)
|
||||||
|
_items = []
|
||||||
|
if self.services:
|
||||||
|
for _item in self.services:
|
||||||
|
if _item:
|
||||||
|
_items.append(_item.to_dict())
|
||||||
|
_dict['services'] = _items
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> ServicesByName:
|
||||||
|
"""Create an instance of ServicesByName from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return ServicesByName.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = ServicesByName.parse_obj({
|
||||||
|
"entity": Entity.from_dict(obj.get("entity")) if obj.get("entity") is not None else None,
|
||||||
|
"services": [Service.from_dict(_item) for _item in obj.get("services")] if obj.get("services") is not None else None
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
41
pkgs/clan-cli/tests/openapi_client/models/status.py
Normal file
41
pkgs/clan-cli/tests/openapi_client/models/status.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
from aenum import Enum, no_arg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Status(str, Enum):
|
||||||
|
"""
|
||||||
|
An enumeration.
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
allowed enum values
|
||||||
|
"""
|
||||||
|
ONLINE = 'online'
|
||||||
|
OFFLINE = 'offline'
|
||||||
|
UNKNOWN = 'unknown'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> Status:
|
||||||
|
"""Create an instance of Status from a JSON string"""
|
||||||
|
return Status(json.loads(json_str))
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
from pydantic import BaseModel, Field, StrictStr, conlist
|
||||||
|
from openapi_client.models.validation_error_loc_inner import ValidationErrorLocInner
|
||||||
|
|
||||||
|
class ValidationError(BaseModel):
|
||||||
|
"""
|
||||||
|
ValidationError
|
||||||
|
"""
|
||||||
|
loc: conlist(ValidationErrorLocInner) = Field(...)
|
||||||
|
msg: StrictStr = Field(...)
|
||||||
|
type: StrictStr = Field(...)
|
||||||
|
__properties = ["loc", "msg", "type"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
"""Pydantic configuration"""
|
||||||
|
allow_population_by_field_name = True
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the model using alias"""
|
||||||
|
return pprint.pformat(self.dict(by_alias=True))
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the model using alias"""
|
||||||
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> ValidationError:
|
||||||
|
"""Create an instance of ValidationError from a JSON string"""
|
||||||
|
return cls.from_dict(json.loads(json_str))
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
"""Returns the dictionary representation of the model using alias"""
|
||||||
|
_dict = self.dict(by_alias=True,
|
||||||
|
exclude={
|
||||||
|
},
|
||||||
|
exclude_none=True)
|
||||||
|
# override the default output from pydantic by calling `to_dict()` of each item in loc (list)
|
||||||
|
_items = []
|
||||||
|
if self.loc:
|
||||||
|
for _item in self.loc:
|
||||||
|
if _item:
|
||||||
|
_items.append(_item.to_dict())
|
||||||
|
_dict['loc'] = _items
|
||||||
|
return _dict
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> ValidationError:
|
||||||
|
"""Create an instance of ValidationError from a dict"""
|
||||||
|
if obj is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if not isinstance(obj, dict):
|
||||||
|
return ValidationError.parse_obj(obj)
|
||||||
|
|
||||||
|
_obj = ValidationError.parse_obj({
|
||||||
|
"loc": [ValidationErrorLocInner.from_dict(_item) for _item in obj.get("loc")] if obj.get("loc") is not None else None,
|
||||||
|
"msg": obj.get("msg"),
|
||||||
|
"type": obj.get("type")
|
||||||
|
})
|
||||||
|
return _obj
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
from inspect import getfullargspec
|
||||||
|
import json
|
||||||
|
import pprint
|
||||||
|
import re # noqa: F401
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
from pydantic import BaseModel, Field, StrictInt, StrictStr, ValidationError, validator
|
||||||
|
from typing import Union, Any, List, TYPE_CHECKING
|
||||||
|
from pydantic import StrictStr, Field
|
||||||
|
|
||||||
|
VALIDATIONERRORLOCINNER_ANY_OF_SCHEMAS = ["int", "str"]
|
||||||
|
|
||||||
|
class ValidationErrorLocInner(BaseModel):
|
||||||
|
"""
|
||||||
|
ValidationErrorLocInner
|
||||||
|
"""
|
||||||
|
|
||||||
|
# data type: str
|
||||||
|
anyof_schema_1_validator: Optional[StrictStr] = None
|
||||||
|
# data type: int
|
||||||
|
anyof_schema_2_validator: Optional[StrictInt] = None
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
actual_instance: Union[int, str]
|
||||||
|
else:
|
||||||
|
actual_instance: Any
|
||||||
|
any_of_schemas: List[str] = Field(VALIDATIONERRORLOCINNER_ANY_OF_SCHEMAS, const=True)
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
validate_assignment = True
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs) -> None:
|
||||||
|
if args:
|
||||||
|
if len(args) > 1:
|
||||||
|
raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`")
|
||||||
|
if kwargs:
|
||||||
|
raise ValueError("If a position argument is used, keyword arguments cannot be used.")
|
||||||
|
super().__init__(actual_instance=args[0])
|
||||||
|
else:
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
@validator('actual_instance')
|
||||||
|
def actual_instance_must_validate_anyof(cls, v):
|
||||||
|
instance = ValidationErrorLocInner.construct()
|
||||||
|
error_messages = []
|
||||||
|
# validate data type: str
|
||||||
|
try:
|
||||||
|
instance.anyof_schema_1_validator = v
|
||||||
|
return v
|
||||||
|
except (ValidationError, ValueError) as e:
|
||||||
|
error_messages.append(str(e))
|
||||||
|
# validate data type: int
|
||||||
|
try:
|
||||||
|
instance.anyof_schema_2_validator = v
|
||||||
|
return v
|
||||||
|
except (ValidationError, ValueError) as e:
|
||||||
|
error_messages.append(str(e))
|
||||||
|
if error_messages:
|
||||||
|
# no match
|
||||||
|
raise ValueError("No match found when setting the actual_instance in ValidationErrorLocInner with anyOf schemas: int, str. Details: " + ", ".join(error_messages))
|
||||||
|
else:
|
||||||
|
return v
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_dict(cls, obj: dict) -> ValidationErrorLocInner:
|
||||||
|
return cls.from_json(json.dumps(obj))
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_json(cls, json_str: str) -> ValidationErrorLocInner:
|
||||||
|
"""Returns the object represented by the json string"""
|
||||||
|
instance = ValidationErrorLocInner.construct()
|
||||||
|
error_messages = []
|
||||||
|
# deserialize data into str
|
||||||
|
try:
|
||||||
|
# validation
|
||||||
|
instance.anyof_schema_1_validator = json.loads(json_str)
|
||||||
|
# assign value to actual_instance
|
||||||
|
instance.actual_instance = instance.anyof_schema_1_validator
|
||||||
|
return instance
|
||||||
|
except (ValidationError, ValueError) as e:
|
||||||
|
error_messages.append(str(e))
|
||||||
|
# deserialize data into int
|
||||||
|
try:
|
||||||
|
# validation
|
||||||
|
instance.anyof_schema_2_validator = json.loads(json_str)
|
||||||
|
# assign value to actual_instance
|
||||||
|
instance.actual_instance = instance.anyof_schema_2_validator
|
||||||
|
return instance
|
||||||
|
except (ValidationError, ValueError) as e:
|
||||||
|
error_messages.append(str(e))
|
||||||
|
|
||||||
|
if error_messages:
|
||||||
|
# no match
|
||||||
|
raise ValueError("No match found when deserializing the JSON string into ValidationErrorLocInner with anyOf schemas: int, str. Details: " + ", ".join(error_messages))
|
||||||
|
else:
|
||||||
|
return instance
|
||||||
|
|
||||||
|
def to_json(self) -> str:
|
||||||
|
"""Returns the JSON representation of the actual instance"""
|
||||||
|
if self.actual_instance is None:
|
||||||
|
return "null"
|
||||||
|
|
||||||
|
to_json = getattr(self.actual_instance, "to_json", None)
|
||||||
|
if callable(to_json):
|
||||||
|
return self.actual_instance.to_json()
|
||||||
|
else:
|
||||||
|
return json.dumps(self.actual_instance)
|
||||||
|
|
||||||
|
def to_dict(self) -> dict:
|
||||||
|
"""Returns the dict representation of the actual instance"""
|
||||||
|
if self.actual_instance is None:
|
||||||
|
return "null"
|
||||||
|
|
||||||
|
to_json = getattr(self.actual_instance, "to_json", None)
|
||||||
|
if callable(to_json):
|
||||||
|
return self.actual_instance.to_dict()
|
||||||
|
else:
|
||||||
|
return json.dumps(self.actual_instance)
|
||||||
|
|
||||||
|
def to_str(self) -> str:
|
||||||
|
"""Returns the string representation of the actual instance"""
|
||||||
|
return pprint.pformat(self.dict())
|
||||||
|
|
||||||
|
|
||||||
303
pkgs/clan-cli/tests/openapi_client/rest.py
Normal file
303
pkgs/clan-cli/tests/openapi_client/rest.py
Normal file
@@ -0,0 +1,303 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import io
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
import re
|
||||||
|
import ssl
|
||||||
|
|
||||||
|
from urllib.parse import urlencode, quote_plus
|
||||||
|
import urllib3
|
||||||
|
|
||||||
|
from openapi_client.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError, BadRequestException
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class RESTResponse(io.IOBase):
|
||||||
|
|
||||||
|
def __init__(self, resp) -> None:
|
||||||
|
self.urllib3_response = resp
|
||||||
|
self.status = resp.status
|
||||||
|
self.reason = resp.reason
|
||||||
|
self.data = resp.data
|
||||||
|
|
||||||
|
def getheaders(self):
|
||||||
|
"""Returns a dictionary of the response headers."""
|
||||||
|
return self.urllib3_response.headers
|
||||||
|
|
||||||
|
def getheader(self, name, default=None):
|
||||||
|
"""Returns a given response header."""
|
||||||
|
return self.urllib3_response.headers.get(name, default)
|
||||||
|
|
||||||
|
|
||||||
|
class RESTClientObject:
|
||||||
|
|
||||||
|
def __init__(self, configuration, pools_size=4, maxsize=None) -> None:
|
||||||
|
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
||||||
|
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
||||||
|
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
||||||
|
# maxsize is the number of requests to host that are allowed in parallel # noqa: E501
|
||||||
|
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
||||||
|
|
||||||
|
# cert_reqs
|
||||||
|
if configuration.verify_ssl:
|
||||||
|
cert_reqs = ssl.CERT_REQUIRED
|
||||||
|
else:
|
||||||
|
cert_reqs = ssl.CERT_NONE
|
||||||
|
|
||||||
|
addition_pool_args = {}
|
||||||
|
if configuration.assert_hostname is not None:
|
||||||
|
addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501
|
||||||
|
|
||||||
|
if configuration.retries is not None:
|
||||||
|
addition_pool_args['retries'] = configuration.retries
|
||||||
|
|
||||||
|
if configuration.tls_server_name:
|
||||||
|
addition_pool_args['server_hostname'] = configuration.tls_server_name
|
||||||
|
|
||||||
|
|
||||||
|
if configuration.socket_options is not None:
|
||||||
|
addition_pool_args['socket_options'] = configuration.socket_options
|
||||||
|
|
||||||
|
if maxsize is None:
|
||||||
|
if configuration.connection_pool_maxsize is not None:
|
||||||
|
maxsize = configuration.connection_pool_maxsize
|
||||||
|
else:
|
||||||
|
maxsize = 4
|
||||||
|
|
||||||
|
# https pool manager
|
||||||
|
if configuration.proxy:
|
||||||
|
self.pool_manager = urllib3.ProxyManager(
|
||||||
|
num_pools=pools_size,
|
||||||
|
maxsize=maxsize,
|
||||||
|
cert_reqs=cert_reqs,
|
||||||
|
ca_certs=configuration.ssl_ca_cert,
|
||||||
|
cert_file=configuration.cert_file,
|
||||||
|
key_file=configuration.key_file,
|
||||||
|
proxy_url=configuration.proxy,
|
||||||
|
proxy_headers=configuration.proxy_headers,
|
||||||
|
**addition_pool_args
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.pool_manager = urllib3.PoolManager(
|
||||||
|
num_pools=pools_size,
|
||||||
|
maxsize=maxsize,
|
||||||
|
cert_reqs=cert_reqs,
|
||||||
|
ca_certs=configuration.ssl_ca_cert,
|
||||||
|
cert_file=configuration.cert_file,
|
||||||
|
key_file=configuration.key_file,
|
||||||
|
**addition_pool_args
|
||||||
|
)
|
||||||
|
|
||||||
|
def request(self, method, url, query_params=None, headers=None,
|
||||||
|
body=None, post_params=None, _preload_content=True,
|
||||||
|
_request_timeout=None):
|
||||||
|
"""Perform requests.
|
||||||
|
|
||||||
|
:param method: http request method
|
||||||
|
:param url: http request url
|
||||||
|
:param query_params: query parameters in the url
|
||||||
|
:param headers: http request headers
|
||||||
|
:param body: request json body, for `application/json`
|
||||||
|
:param post_params: request post parameters,
|
||||||
|
`application/x-www-form-urlencoded`
|
||||||
|
and `multipart/form-data`
|
||||||
|
:param _preload_content: if False, the urllib3.HTTPResponse object will
|
||||||
|
be returned without reading/decoding response
|
||||||
|
data. Default is True.
|
||||||
|
:param _request_timeout: timeout setting for this request. If one
|
||||||
|
number provided, it will be total request
|
||||||
|
timeout. It can also be a pair (tuple) of
|
||||||
|
(connection, read) timeouts.
|
||||||
|
"""
|
||||||
|
method = method.upper()
|
||||||
|
assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
|
||||||
|
'PATCH', 'OPTIONS']
|
||||||
|
|
||||||
|
if post_params and body:
|
||||||
|
raise ApiValueError(
|
||||||
|
"body parameter cannot be used with post_params parameter."
|
||||||
|
)
|
||||||
|
|
||||||
|
post_params = post_params or {}
|
||||||
|
headers = headers or {}
|
||||||
|
# url already contains the URL query string
|
||||||
|
# so reset query_params to empty dict
|
||||||
|
query_params = {}
|
||||||
|
|
||||||
|
timeout = None
|
||||||
|
if _request_timeout:
|
||||||
|
if isinstance(_request_timeout, (int,float)): # noqa: E501,F821
|
||||||
|
timeout = urllib3.Timeout(total=_request_timeout)
|
||||||
|
elif (isinstance(_request_timeout, tuple) and
|
||||||
|
len(_request_timeout) == 2):
|
||||||
|
timeout = urllib3.Timeout(
|
||||||
|
connect=_request_timeout[0], read=_request_timeout[1])
|
||||||
|
|
||||||
|
try:
|
||||||
|
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
||||||
|
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
||||||
|
|
||||||
|
# no content type provided or payload is json
|
||||||
|
if not headers.get('Content-Type') or re.search('json', headers['Content-Type'], re.IGNORECASE):
|
||||||
|
request_body = None
|
||||||
|
if body is not None:
|
||||||
|
request_body = json.dumps(body)
|
||||||
|
r = self.pool_manager.request(
|
||||||
|
method, url,
|
||||||
|
body=request_body,
|
||||||
|
preload_content=_preload_content,
|
||||||
|
timeout=timeout,
|
||||||
|
headers=headers)
|
||||||
|
elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
|
||||||
|
r = self.pool_manager.request(
|
||||||
|
method, url,
|
||||||
|
fields=post_params,
|
||||||
|
encode_multipart=False,
|
||||||
|
preload_content=_preload_content,
|
||||||
|
timeout=timeout,
|
||||||
|
headers=headers)
|
||||||
|
elif headers['Content-Type'] == 'multipart/form-data':
|
||||||
|
# must del headers['Content-Type'], or the correct
|
||||||
|
# Content-Type which generated by urllib3 will be
|
||||||
|
# overwritten.
|
||||||
|
del headers['Content-Type']
|
||||||
|
r = self.pool_manager.request(
|
||||||
|
method, url,
|
||||||
|
fields=post_params,
|
||||||
|
encode_multipart=True,
|
||||||
|
preload_content=_preload_content,
|
||||||
|
timeout=timeout,
|
||||||
|
headers=headers)
|
||||||
|
# Pass a `string` parameter directly in the body to support
|
||||||
|
# other content types than Json when `body` argument is
|
||||||
|
# provided in serialized form
|
||||||
|
elif isinstance(body, str) or isinstance(body, bytes):
|
||||||
|
request_body = body
|
||||||
|
r = self.pool_manager.request(
|
||||||
|
method, url,
|
||||||
|
body=request_body,
|
||||||
|
preload_content=_preload_content,
|
||||||
|
timeout=timeout,
|
||||||
|
headers=headers)
|
||||||
|
else:
|
||||||
|
# Cannot generate the request from given parameters
|
||||||
|
msg = """Cannot prepare a request message for provided
|
||||||
|
arguments. Please check that your arguments match
|
||||||
|
declared content type."""
|
||||||
|
raise ApiException(status=0, reason=msg)
|
||||||
|
# For `GET`, `HEAD`
|
||||||
|
else:
|
||||||
|
r = self.pool_manager.request(method, url,
|
||||||
|
fields={},
|
||||||
|
preload_content=_preload_content,
|
||||||
|
timeout=timeout,
|
||||||
|
headers=headers)
|
||||||
|
except urllib3.exceptions.SSLError as e:
|
||||||
|
msg = "{0}\n{1}".format(type(e).__name__, str(e))
|
||||||
|
raise ApiException(status=0, reason=msg)
|
||||||
|
|
||||||
|
if _preload_content:
|
||||||
|
r = RESTResponse(r)
|
||||||
|
|
||||||
|
# log response body
|
||||||
|
logger.debug("response body: %s", r.data)
|
||||||
|
|
||||||
|
if not 200 <= r.status <= 299:
|
||||||
|
if r.status == 400:
|
||||||
|
raise BadRequestException(http_resp=r)
|
||||||
|
|
||||||
|
if r.status == 401:
|
||||||
|
raise UnauthorizedException(http_resp=r)
|
||||||
|
|
||||||
|
if r.status == 403:
|
||||||
|
raise ForbiddenException(http_resp=r)
|
||||||
|
|
||||||
|
if r.status == 404:
|
||||||
|
raise NotFoundException(http_resp=r)
|
||||||
|
|
||||||
|
if 500 <= r.status <= 599:
|
||||||
|
raise ServiceException(http_resp=r)
|
||||||
|
|
||||||
|
raise ApiException(http_resp=r)
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
def get_request(self, url, headers=None, query_params=None, _preload_content=True,
|
||||||
|
_request_timeout=None):
|
||||||
|
return self.request("GET", url,
|
||||||
|
headers=headers,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
query_params=query_params)
|
||||||
|
|
||||||
|
def head_request(self, url, headers=None, query_params=None, _preload_content=True,
|
||||||
|
_request_timeout=None):
|
||||||
|
return self.request("HEAD", url,
|
||||||
|
headers=headers,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
query_params=query_params)
|
||||||
|
|
||||||
|
def options_request(self, url, headers=None, query_params=None, post_params=None,
|
||||||
|
body=None, _preload_content=True, _request_timeout=None):
|
||||||
|
return self.request("OPTIONS", url,
|
||||||
|
headers=headers,
|
||||||
|
query_params=query_params,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
|
||||||
|
def delete_request(self, url, headers=None, query_params=None, body=None,
|
||||||
|
_preload_content=True, _request_timeout=None):
|
||||||
|
return self.request("DELETE", url,
|
||||||
|
headers=headers,
|
||||||
|
query_params=query_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
|
||||||
|
def post_request(self, url, headers=None, query_params=None, post_params=None,
|
||||||
|
body=None, _preload_content=True, _request_timeout=None):
|
||||||
|
return self.request("POST", url,
|
||||||
|
headers=headers,
|
||||||
|
query_params=query_params,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
|
||||||
|
def put_request(self, url, headers=None, query_params=None, post_params=None,
|
||||||
|
body=None, _preload_content=True, _request_timeout=None):
|
||||||
|
return self.request("PUT", url,
|
||||||
|
headers=headers,
|
||||||
|
query_params=query_params,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
|
|
||||||
|
def patch_request(self, url, headers=None, query_params=None, post_params=None,
|
||||||
|
body=None, _preload_content=True, _request_timeout=None):
|
||||||
|
return self.request("PATCH", url,
|
||||||
|
headers=headers,
|
||||||
|
query_params=query_params,
|
||||||
|
post_params=post_params,
|
||||||
|
_preload_content=_preload_content,
|
||||||
|
_request_timeout=_request_timeout,
|
||||||
|
body=body)
|
||||||
0
pkgs/clan-cli/tests/openapi_client/test/__init__.py
Normal file
0
pkgs/clan-cli/tests/openapi_client/test/__init__.py
Normal file
52
pkgs/clan-cli/tests/openapi_client/test/test_default_api.py
Normal file
52
pkgs/clan-cli/tests/openapi_client/test/test_default_api.py
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from openapi_client.api.default_api import DefaultApi # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
class TestDefaultApi(unittest.TestCase):
|
||||||
|
"""DefaultApi unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self) -> None:
|
||||||
|
self.api = DefaultApi() # noqa: E501
|
||||||
|
|
||||||
|
def tearDown(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get(self) -> None:
|
||||||
|
"""Test case for get
|
||||||
|
|
||||||
|
Get # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_health(self) -> None:
|
||||||
|
"""Test case for health
|
||||||
|
|
||||||
|
Health # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_root(self) -> None:
|
||||||
|
"""Test case for root
|
||||||
|
|
||||||
|
Root # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
87
pkgs/clan-cli/tests/openapi_client/test/test_entities_api.py
Normal file
87
pkgs/clan-cli/tests/openapi_client/test/test_entities_api.py
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from openapi_client.api.entities_api import EntitiesApi # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
class TestEntitiesApi(unittest.TestCase):
|
||||||
|
"""EntitiesApi unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self) -> None:
|
||||||
|
self.api = EntitiesApi() # noqa: E501
|
||||||
|
|
||||||
|
def tearDown(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_attach_entity(self) -> None:
|
||||||
|
"""Test case for attach_entity
|
||||||
|
|
||||||
|
Attach Entity # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_create_entity(self) -> None:
|
||||||
|
"""Test case for create_entity
|
||||||
|
|
||||||
|
Create Entity # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_delete_entity(self) -> None:
|
||||||
|
"""Test case for delete_entity
|
||||||
|
|
||||||
|
Delete Entity # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_detach_entity(self) -> None:
|
||||||
|
"""Test case for detach_entity
|
||||||
|
|
||||||
|
Detach Entity # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_all_entities(self) -> None:
|
||||||
|
"""Test case for get_all_entities
|
||||||
|
|
||||||
|
Get All Entities # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_attached_entities(self) -> None:
|
||||||
|
"""Test case for get_attached_entities
|
||||||
|
|
||||||
|
Get Attached Entities # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_entity_by_did(self) -> None:
|
||||||
|
"""Test case for get_entity_by_did
|
||||||
|
|
||||||
|
Get Entity By Did # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_entity_by_name(self) -> None:
|
||||||
|
"""Test case for get_entity_by_name
|
||||||
|
|
||||||
|
Get Entity By Name # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
63
pkgs/clan-cli/tests/openapi_client/test/test_entity.py
Normal file
63
pkgs/clan-cli/tests/openapi_client/test/test_entity.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.entity import Entity # noqa: E501
|
||||||
|
|
||||||
|
class TestEntity(unittest.TestCase):
|
||||||
|
"""Entity unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> Entity:
|
||||||
|
"""Test Entity
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `Entity`
|
||||||
|
"""
|
||||||
|
model = Entity() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True,
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testEntity(self):
|
||||||
|
"""Test Entity"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.entity_create import EntityCreate # noqa: E501
|
||||||
|
|
||||||
|
class TestEntityCreate(unittest.TestCase):
|
||||||
|
"""EntityCreate unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> EntityCreate:
|
||||||
|
"""Test EntityCreate
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `EntityCreate`
|
||||||
|
"""
|
||||||
|
model = EntityCreate() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return EntityCreate(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return EntityCreate(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testEntityCreate(self):
|
||||||
|
"""Test EntityCreate"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.http_validation_error import HTTPValidationError # noqa: E501
|
||||||
|
|
||||||
|
class TestHTTPValidationError(unittest.TestCase):
|
||||||
|
"""HTTPValidationError unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> HTTPValidationError:
|
||||||
|
"""Test HTTPValidationError
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `HTTPValidationError`
|
||||||
|
"""
|
||||||
|
model = HTTPValidationError() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return HTTPValidationError(
|
||||||
|
detail = [
|
||||||
|
openapi_client.models.validation_error.ValidationError(
|
||||||
|
loc = [
|
||||||
|
null
|
||||||
|
],
|
||||||
|
msg = '',
|
||||||
|
type = '', )
|
||||||
|
]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return HTTPValidationError(
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testHTTPValidationError(self):
|
||||||
|
"""Test HTTPValidationError"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
55
pkgs/clan-cli/tests/openapi_client/test/test_machine.py
Normal file
55
pkgs/clan-cli/tests/openapi_client/test/test_machine.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.machine import Machine # noqa: E501
|
||||||
|
|
||||||
|
class TestMachine(unittest.TestCase):
|
||||||
|
"""Machine unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> Machine:
|
||||||
|
"""Test Machine
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `Machine`
|
||||||
|
"""
|
||||||
|
model = Machine() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return Machine(
|
||||||
|
name = '',
|
||||||
|
status = 'online'
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return Machine(
|
||||||
|
name = '',
|
||||||
|
status = 'online',
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testMachine(self):
|
||||||
|
"""Test Machine"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from openapi_client.api.repositories_api import RepositoriesApi # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
class TestRepositoriesApi(unittest.TestCase):
|
||||||
|
"""RepositoriesApi unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self) -> None:
|
||||||
|
self.api = RepositoriesApi() # noqa: E501
|
||||||
|
|
||||||
|
def tearDown(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_all_repositories(self) -> None:
|
||||||
|
"""Test case for get_all_repositories
|
||||||
|
|
||||||
|
Get All Repositories # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
63
pkgs/clan-cli/tests/openapi_client/test/test_resolution.py
Normal file
63
pkgs/clan-cli/tests/openapi_client/test/test_resolution.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.resolution import Resolution # noqa: E501
|
||||||
|
|
||||||
|
class TestResolution(unittest.TestCase):
|
||||||
|
"""Resolution unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> Resolution:
|
||||||
|
"""Test Resolution
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `Resolution`
|
||||||
|
"""
|
||||||
|
model = Resolution() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return Resolution(
|
||||||
|
requester_name = 'C1',
|
||||||
|
requester_did = 'did:sov:test:1122',
|
||||||
|
resolved_did = 'did:sov:test:1234',
|
||||||
|
other = {test=test},
|
||||||
|
timestamp = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
|
||||||
|
id = 56
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return Resolution(
|
||||||
|
requester_name = 'C1',
|
||||||
|
requester_did = 'did:sov:test:1122',
|
||||||
|
resolved_did = 'did:sov:test:1234',
|
||||||
|
other = {test=test},
|
||||||
|
timestamp = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'),
|
||||||
|
id = 56,
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testResolution(self):
|
||||||
|
"""Test Resolution"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from openapi_client.api.resolution_api import ResolutionApi # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
class TestResolutionApi(unittest.TestCase):
|
||||||
|
"""ResolutionApi unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self) -> None:
|
||||||
|
self.api = ResolutionApi() # noqa: E501
|
||||||
|
|
||||||
|
def tearDown(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_all_resolutions(self) -> None:
|
||||||
|
"""Test case for get_all_resolutions
|
||||||
|
|
||||||
|
Get All Resolutions # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
79
pkgs/clan-cli/tests/openapi_client/test/test_service.py
Normal file
79
pkgs/clan-cli/tests/openapi_client/test/test_service.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.service import Service # noqa: E501
|
||||||
|
|
||||||
|
class TestService(unittest.TestCase):
|
||||||
|
"""Service unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> Service:
|
||||||
|
"""Test Service
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `Service`
|
||||||
|
"""
|
||||||
|
model = Service() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return Service(
|
||||||
|
uuid = '8e285c0c-4e40-430a-a477-26b3b81e30df',
|
||||||
|
service_name = 'Carlos Printing',
|
||||||
|
service_type = '3D Printing',
|
||||||
|
endpoint_url = 'http://127.0.0.1:8000',
|
||||||
|
status = 'unknown',
|
||||||
|
other = {action=[register, deregister, delete, create]},
|
||||||
|
entity_did = 'did:sov:test:1234',
|
||||||
|
entity = openapi_client.models.entity.Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True, )
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return Service(
|
||||||
|
uuid = '8e285c0c-4e40-430a-a477-26b3b81e30df',
|
||||||
|
service_name = 'Carlos Printing',
|
||||||
|
service_type = '3D Printing',
|
||||||
|
endpoint_url = 'http://127.0.0.1:8000',
|
||||||
|
status = 'unknown',
|
||||||
|
other = {action=[register, deregister, delete, create]},
|
||||||
|
entity_did = 'did:sov:test:1234',
|
||||||
|
entity = openapi_client.models.entity.Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True, ),
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testService(self):
|
||||||
|
"""Test Service"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.service_create import ServiceCreate # noqa: E501
|
||||||
|
|
||||||
|
class TestServiceCreate(unittest.TestCase):
|
||||||
|
"""ServiceCreate unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> ServiceCreate:
|
||||||
|
"""Test ServiceCreate
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `ServiceCreate`
|
||||||
|
"""
|
||||||
|
model = ServiceCreate() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return ServiceCreate(
|
||||||
|
uuid = '8e285c0c-4e40-430a-a477-26b3b81e30df',
|
||||||
|
service_name = 'Carlos Printing',
|
||||||
|
service_type = '3D Printing',
|
||||||
|
endpoint_url = 'http://127.0.0.1:8000',
|
||||||
|
status = 'unknown',
|
||||||
|
other = {action=[register, deregister, delete, create]},
|
||||||
|
entity_did = 'did:sov:test:1234'
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ServiceCreate(
|
||||||
|
uuid = '8e285c0c-4e40-430a-a477-26b3b81e30df',
|
||||||
|
service_name = 'Carlos Printing',
|
||||||
|
service_type = '3D Printing',
|
||||||
|
endpoint_url = 'http://127.0.0.1:8000',
|
||||||
|
status = 'unknown',
|
||||||
|
other = {action=[register, deregister, delete, create]},
|
||||||
|
entity_did = 'did:sov:test:1234',
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testServiceCreate(self):
|
||||||
|
"""Test ServiceCreate"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
66
pkgs/clan-cli/tests/openapi_client/test/test_services_api.py
Normal file
66
pkgs/clan-cli/tests/openapi_client/test/test_services_api.py
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from openapi_client.api.services_api import ServicesApi # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
class TestServicesApi(unittest.TestCase):
|
||||||
|
"""ServicesApi unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self) -> None:
|
||||||
|
self.api = ServicesApi() # noqa: E501
|
||||||
|
|
||||||
|
def tearDown(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_create_service(self) -> None:
|
||||||
|
"""Test case for create_service
|
||||||
|
|
||||||
|
Create Service # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_delete_service(self) -> None:
|
||||||
|
"""Test case for delete_service
|
||||||
|
|
||||||
|
Delete Service # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_all_services(self) -> None:
|
||||||
|
"""Test case for get_all_services
|
||||||
|
|
||||||
|
Get All Services # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_service_by_did(self) -> None:
|
||||||
|
"""Test case for get_service_by_did
|
||||||
|
|
||||||
|
Get Service By Did # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_get_services_by_name(self) -> None:
|
||||||
|
"""Test case for get_services_by_name
|
||||||
|
|
||||||
|
Get Services By Name # noqa: E501
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.services_by_name import ServicesByName # noqa: E501
|
||||||
|
|
||||||
|
class TestServicesByName(unittest.TestCase):
|
||||||
|
"""ServicesByName unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> ServicesByName:
|
||||||
|
"""Test ServicesByName
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `ServicesByName`
|
||||||
|
"""
|
||||||
|
model = ServicesByName() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return ServicesByName(
|
||||||
|
entity = openapi_client.models.entity.Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True, ),
|
||||||
|
services = [
|
||||||
|
openapi_client.models.service.Service(
|
||||||
|
uuid = '8e285c0c-4e40-430a-a477-26b3b81e30df',
|
||||||
|
service_name = 'Carlos Printing',
|
||||||
|
service_type = '3D Printing',
|
||||||
|
endpoint_url = 'http://127.0.0.1:8000',
|
||||||
|
status = 'unknown',
|
||||||
|
other = {action=[register, deregister, delete, create]},
|
||||||
|
entity_did = 'did:sov:test:1234',
|
||||||
|
entity = openapi_client.models.entity.Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True, ), )
|
||||||
|
]
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ServicesByName(
|
||||||
|
entity = openapi_client.models.entity.Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True, ),
|
||||||
|
services = [
|
||||||
|
openapi_client.models.service.Service(
|
||||||
|
uuid = '8e285c0c-4e40-430a-a477-26b3b81e30df',
|
||||||
|
service_name = 'Carlos Printing',
|
||||||
|
service_type = '3D Printing',
|
||||||
|
endpoint_url = 'http://127.0.0.1:8000',
|
||||||
|
status = 'unknown',
|
||||||
|
other = {action=[register, deregister, delete, create]},
|
||||||
|
entity_did = 'did:sov:test:1234',
|
||||||
|
entity = openapi_client.models.entity.Entity(
|
||||||
|
did = 'did:sov:test:1234',
|
||||||
|
name = 'C1',
|
||||||
|
ip = '127.0.0.1',
|
||||||
|
visible = True,
|
||||||
|
other = {network=Carlos Home Network, roles=[service repository, service prosumer]},
|
||||||
|
attached = True, ), )
|
||||||
|
],
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testServicesByName(self):
|
||||||
|
"""Test ServicesByName"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
34
pkgs/clan-cli/tests/openapi_client/test/test_status.py
Normal file
34
pkgs/clan-cli/tests/openapi_client/test/test_status.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.status import Status # noqa: E501
|
||||||
|
|
||||||
|
class TestStatus(unittest.TestCase):
|
||||||
|
"""Status unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def testStatus(self):
|
||||||
|
"""Test Status"""
|
||||||
|
# inst = Status()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.validation_error import ValidationError # noqa: E501
|
||||||
|
|
||||||
|
class TestValidationError(unittest.TestCase):
|
||||||
|
"""ValidationError unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> ValidationError:
|
||||||
|
"""Test ValidationError
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `ValidationError`
|
||||||
|
"""
|
||||||
|
model = ValidationError() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return ValidationError(
|
||||||
|
loc = [
|
||||||
|
null
|
||||||
|
],
|
||||||
|
msg = '',
|
||||||
|
type = ''
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ValidationError(
|
||||||
|
loc = [
|
||||||
|
null
|
||||||
|
],
|
||||||
|
msg = '',
|
||||||
|
type = '',
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testValidationError(self):
|
||||||
|
"""Test ValidationError"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
"""
|
||||||
|
FastAPI
|
||||||
|
|
||||||
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
|
||||||
|
The version of the OpenAPI document: 0.1.0
|
||||||
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||||
|
|
||||||
|
Do not edit the class manually.
|
||||||
|
""" # noqa: E501
|
||||||
|
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from openapi_client.models.validation_error_loc_inner import ValidationErrorLocInner # noqa: E501
|
||||||
|
|
||||||
|
class TestValidationErrorLocInner(unittest.TestCase):
|
||||||
|
"""ValidationErrorLocInner unit test stubs"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def make_instance(self, include_optional) -> ValidationErrorLocInner:
|
||||||
|
"""Test ValidationErrorLocInner
|
||||||
|
include_option is a boolean, when False only required
|
||||||
|
params are included, when True both required and
|
||||||
|
optional params are included """
|
||||||
|
# uncomment below to create an instance of `ValidationErrorLocInner`
|
||||||
|
"""
|
||||||
|
model = ValidationErrorLocInner() # noqa: E501
|
||||||
|
if include_optional:
|
||||||
|
return ValidationErrorLocInner(
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return ValidationErrorLocInner(
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def testValidationErrorLocInner(self):
|
||||||
|
"""Test ValidationErrorLocInner"""
|
||||||
|
# inst_req_only = self.make_instance(include_optional=False)
|
||||||
|
# inst_req_and_optional = self.make_instance(include_optional=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
@@ -1,337 +1,78 @@
|
|||||||
import urllib.parse as url
|
import random
|
||||||
from typing import Any
|
import uuid
|
||||||
|
|
||||||
from api import TestClient
|
from openapi_client import ApiClient
|
||||||
|
from openapi_client.api import DefaultApi
|
||||||
|
from openapi_client.api.entities_api import EntitiesApi
|
||||||
|
from openapi_client.api.services_api import ServicesApi
|
||||||
|
from openapi_client.models import (
|
||||||
|
Entity,
|
||||||
|
EntityCreate,
|
||||||
|
Machine,
|
||||||
|
ServiceCreate,
|
||||||
|
Status,
|
||||||
|
)
|
||||||
|
|
||||||
default_entity_did_url = "entity_did=did%3Asov%3Atest%3A1234"
|
random.seed(42)
|
||||||
default_entity_did = "did:sov:test:1234"
|
|
||||||
default_entity_did2 = "did:sov:test:1235"
|
|
||||||
default_entity_did3 = "did:sov:test:1236"
|
|
||||||
default_entity_did4 = "did:sov:test:1237"
|
|
||||||
default_entity_did5 = "did:sov:test:1238"
|
|
||||||
|
|
||||||
|
|
||||||
def assert_extra_info(
|
num_uuids = 100
|
||||||
infos: list[str],
|
uuids = [str(uuid.UUID(int=random.getrandbits(128))) for i in range(num_uuids)]
|
||||||
request_body: dict[str, Any],
|
|
||||||
response: dict[str, str],
|
|
||||||
) -> None:
|
|
||||||
# print(type())
|
|
||||||
for info in infos:
|
|
||||||
assert info in response.keys()
|
|
||||||
# TODO maybe check the content of the extra info ...
|
|
||||||
response.pop(info)
|
|
||||||
assert response == request_body
|
|
||||||
|
|
||||||
|
|
||||||
def make_test_post_and_get(
|
def test_health(api_client: ApiClient) -> None:
|
||||||
api: TestClient,
|
default = DefaultApi(api_client=api_client)
|
||||||
request_body: dict[str, Any],
|
res: Machine = default.health()
|
||||||
paramter: str,
|
assert res.status == Status.ONLINE
|
||||||
get_request: str = default_entity_did_url,
|
|
||||||
apiversion: str = "v1",
|
|
||||||
) -> None:
|
|
||||||
# test post
|
|
||||||
response = api.post(
|
|
||||||
f"/api/{apiversion}/create_{paramter}",
|
|
||||||
json=request_body,
|
|
||||||
headers={"Content-Type": "application/json"},
|
|
||||||
)
|
|
||||||
assert response.status_code == 200
|
|
||||||
|
|
||||||
if paramter == "repository":
|
|
||||||
assert_extra_info(["time_created"], request_body, response.json())
|
def test_entities_empty(api_client: ApiClient) -> None:
|
||||||
elif paramter == "resolution":
|
entity = EntitiesApi(api_client=api_client)
|
||||||
assert_extra_info(["timestamp", "id"], request_body, response.json())
|
res = entity.get_all_entities()
|
||||||
elif paramter == "consumer":
|
assert res == []
|
||||||
assert_extra_info(["id"], request_body, response.json())
|
|
||||||
elif paramter == "entity":
|
|
||||||
assert_extra_info(
|
def create_entities(num: int = 10) -> list[EntityCreate]:
|
||||||
["consumers", "producers", "repository"], request_body, response.json()
|
res = []
|
||||||
|
for i in range(num):
|
||||||
|
en = EntityCreate(
|
||||||
|
did=f"did:sov:test:12{i}",
|
||||||
|
name=f"C{i}",
|
||||||
|
ip=f"127.0.0.1:{7000+i}",
|
||||||
|
visible=True,
|
||||||
|
other={},
|
||||||
)
|
)
|
||||||
else:
|
res.append(en)
|
||||||
assert response.json() == request_body
|
return res
|
||||||
# test get
|
|
||||||
response = api.get(
|
|
||||||
f"api/{apiversion}/get_{paramter}?{get_request}&skip=0&limit=100"
|
def create_service(idx: int, entity: Entity) -> ServiceCreate:
|
||||||
|
se = ServiceCreate(
|
||||||
|
uuid=uuids[idx],
|
||||||
|
service_name=f"Carlos Printing{idx}",
|
||||||
|
service_type="3D Printing",
|
||||||
|
endpoint_url=f"{entity.ip}/v1/print_daemon{idx}",
|
||||||
|
status="unknown",
|
||||||
|
other={"action": ["register", "deregister", "delete", "create"]},
|
||||||
|
entity_did=entity.did,
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
|
||||||
if paramter == "repository":
|
return se
|
||||||
assert_extra_info(["time_created"], request_body, response.json()[0])
|
|
||||||
elif paramter == "resolution":
|
|
||||||
assert_extra_info(["timestamp", "id"], request_body, response.json()[0])
|
|
||||||
elif paramter == "consumer":
|
|
||||||
assert_extra_info(["id"], request_body, response.json()[0])
|
|
||||||
elif paramter == "entity":
|
|
||||||
assert_extra_info(
|
|
||||||
["consumers", "producers", "repository"], request_body, response.json()
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
assert response.json() == [request_body]
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
def test_create_entities(api_client: ApiClient) -> None:
|
||||||
# #
|
api = EntitiesApi(api_client=api_client)
|
||||||
# Producer #
|
for own_entity in create_entities():
|
||||||
# #
|
res: Entity = api.create_entity(own_entity)
|
||||||
#########################
|
assert res.did == own_entity.did
|
||||||
def test_producer(api: TestClient) -> None:
|
assert res.attached is False
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df",
|
|
||||||
"service_name": "Carlo'''s Printing",
|
|
||||||
"service_type": "3D Printing",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8000",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"action": ["register", "deregister", "delete", "create"]},
|
|
||||||
"entity_did": default_entity_did,
|
|
||||||
}
|
|
||||||
paramter = "producer"
|
|
||||||
# get_request = "entity_did=did%3Asov%3Atest%3A1234"
|
|
||||||
make_test_post_and_get(api, request_body, paramter)
|
|
||||||
|
|
||||||
|
|
||||||
def test_producer2(api: TestClient) -> None:
|
def test_create_services(api_client: ApiClient) -> None:
|
||||||
request_body = {
|
sapi = ServicesApi(api_client=api_client)
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d1",
|
eapi = EntitiesApi(api_client=api_client)
|
||||||
"service_name": "Luis'''s Fax",
|
for midx, entity in enumerate(eapi.get_all_entities()):
|
||||||
"service_type": "Fax",
|
for idx in range(4):
|
||||||
"endpoint_url": "http://127.0.0.1:8001",
|
service_obj = create_service(idx + 4 * midx, entity)
|
||||||
"status": "unknown",
|
service = sapi.create_service(service_obj)
|
||||||
"other": {"action": ["register", "deregister", "delete", "create"]},
|
assert service.uuid == service_obj.uuid
|
||||||
"entity_did": default_entity_did2,
|
|
||||||
}
|
|
||||||
paramter = "producer"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did2)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_producer3(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d2",
|
|
||||||
"service_name": "Erdem'''s VR-Stream",
|
|
||||||
"service_type": "VR-Stream",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8002",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"action": ["register", "deregister", "delete", "create"]},
|
|
||||||
"entity_did": default_entity_did3,
|
|
||||||
}
|
|
||||||
paramter = "producer"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did3)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_producer4(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d3",
|
|
||||||
"service_name": "Onur'''s gallary",
|
|
||||||
"service_type": "gallary",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8003",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"action": ["register", "deregister", "delete", "create"]},
|
|
||||||
"entity_did": default_entity_did4,
|
|
||||||
}
|
|
||||||
paramter = "producer"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did4)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_producer5(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4",
|
|
||||||
"service_name": "Sara'''s Game-Shop",
|
|
||||||
"service_type": "Game-Shop",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8004",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"action": ["register", "deregister", "delete", "create"]},
|
|
||||||
"entity_did": default_entity_did5,
|
|
||||||
}
|
|
||||||
paramter = "producer"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did5)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Consumer #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
def test_consumer(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"entity_did": default_entity_did,
|
|
||||||
"producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df",
|
|
||||||
"other": {"test": "test"},
|
|
||||||
}
|
|
||||||
paramter = "consumer"
|
|
||||||
# get_request = "entity_did=did%3Asov%3Atest%3A1234"
|
|
||||||
make_test_post_and_get(api, request_body, paramter)
|
|
||||||
|
|
||||||
|
|
||||||
def test_consumer2(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"entity_did": default_entity_did2,
|
|
||||||
"producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4",
|
|
||||||
"other": {"war": "games"},
|
|
||||||
}
|
|
||||||
paramter = "consumer"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did2)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# REPOSITORY #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
def test_repository(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df",
|
|
||||||
"service_name": "Carlo'''s Printing",
|
|
||||||
"service_type": "3D Printing",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8000",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"test": "test"},
|
|
||||||
"entity_did": default_entity_did,
|
|
||||||
}
|
|
||||||
paramter = "repository"
|
|
||||||
# get_request = "entity_did=did%3Asov%3Atest%3A1234"
|
|
||||||
make_test_post_and_get(api, request_body, paramter)
|
|
||||||
|
|
||||||
|
|
||||||
def test_repository2(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d1",
|
|
||||||
"service_name": "Luis'''s Fax",
|
|
||||||
"service_type": "Fax",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8001",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"faxen": "dicke"},
|
|
||||||
"entity_did": default_entity_did2,
|
|
||||||
}
|
|
||||||
paramter = "repository"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did2)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_repository3(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d2",
|
|
||||||
"service_name": "Erdem'''s VR-Stream",
|
|
||||||
"service_type": "VR-Stream",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8002",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"oculos": "rift"},
|
|
||||||
"entity_did": default_entity_did3,
|
|
||||||
}
|
|
||||||
paramter = "repository"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did3)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_repository4(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d3",
|
|
||||||
"service_name": "Onur'''s gallary",
|
|
||||||
"service_type": "gallary",
|
|
||||||
"endpoint_url": "http://127.0.0.1:8003",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"nice": "pics"},
|
|
||||||
"entity_did": default_entity_did4,
|
|
||||||
}
|
|
||||||
paramter = "repository"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did4)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_repository5(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4",
|
|
||||||
"service_name": "Sara'''s Game-Shop",
|
|
||||||
"service_type": "Game-Shop",
|
|
||||||
"endpoint_url": "http://127.0.0.2:8004",
|
|
||||||
"status": "unknown",
|
|
||||||
"other": {"war": "games"},
|
|
||||||
"entity_did": default_entity_did5,
|
|
||||||
}
|
|
||||||
paramter = "repository"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did5)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Entity #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
def test_entity(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"did": default_entity_did,
|
|
||||||
"name": "C1",
|
|
||||||
"ip": "127.0.0.1:5555",
|
|
||||||
"attached": False,
|
|
||||||
"visible": True,
|
|
||||||
"other": {
|
|
||||||
"network": "Carlo1's Home Network",
|
|
||||||
"roles": ["service repository", "service consumer"],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
paramter = "entity"
|
|
||||||
# get_request = "entity_did=did%3Asov%3Atest%3A1234"
|
|
||||||
make_test_post_and_get(api, request_body, paramter)
|
|
||||||
|
|
||||||
|
|
||||||
def test_entity2(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"did": default_entity_did2,
|
|
||||||
"name": "C2",
|
|
||||||
"ip": "127.0.0.1:5555",
|
|
||||||
"attached": False,
|
|
||||||
"visible": True,
|
|
||||||
"other": {
|
|
||||||
"network": "Carlo2's Home Network",
|
|
||||||
"roles": ["service repository", "service prosumer"],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
paramter = "entity"
|
|
||||||
get_request = "entity_did=" + url.quote(default_entity_did2)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
# #
|
|
||||||
# Resolution #
|
|
||||||
# #
|
|
||||||
#########################
|
|
||||||
def test_resolution(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"requester_did": default_entity_did2,
|
|
||||||
"requester_name": "C2",
|
|
||||||
"resolved_did": default_entity_did,
|
|
||||||
"other": {"test": "test"},
|
|
||||||
}
|
|
||||||
paramter = "resolution"
|
|
||||||
get_request = "requester_did=" + url.quote(default_entity_did2)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_resolution2(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"requester_did": default_entity_did3,
|
|
||||||
"requester_name": "C3",
|
|
||||||
"resolved_did": default_entity_did,
|
|
||||||
"other": {"test": "test"},
|
|
||||||
}
|
|
||||||
paramter = "resolution"
|
|
||||||
get_request = "requester_did=" + url.quote(default_entity_did3)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|
||||||
|
|
||||||
def test_resolution3(api: TestClient) -> None:
|
|
||||||
request_body = {
|
|
||||||
"requester_did": default_entity_did4,
|
|
||||||
"requester_name": "C4",
|
|
||||||
"resolved_did": default_entity_did,
|
|
||||||
"other": {"test": "test"},
|
|
||||||
}
|
|
||||||
paramter = "resolution"
|
|
||||||
get_request = "requester_did=" + url.quote(default_entity_did4)
|
|
||||||
make_test_post_and_get(api, request_body, paramter, get_request)
|
|
||||||
|
|||||||
@@ -25,3 +25,5 @@ Than run this command:
|
|||||||
```
|
```
|
||||||
GITEA_TOKEN=<YOUR_TOKEN> nix run .#update-ui-assets
|
GITEA_TOKEN=<YOUR_TOKEN> nix run .#update-ui-assets
|
||||||
```
|
```
|
||||||
|
|
||||||
|
.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ fetchzip }:
|
{ fetchzip }:
|
||||||
fetchzip {
|
fetchzip {
|
||||||
url = "https://gitea.gchq.icu/api/packages/IoSL/generic/IoSL-service-aware-frontend/15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8/assets.tar.gz";
|
url = "https://gitea.gchq.icu/api/packages/IoSL/generic/IoSL-service-aware-frontend/15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8/assets.tar.gz";
|
||||||
sha256 = "15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8";
|
sha256 = "sha256-SKPgZERfbdcFuPMHNnPb+9DXhLFQ7huFzzxDKYLNopU=";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ pkgs.mkShell {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
ln -sf ${pkgs.roboto}/share/fonts ./src
|
ln -sf ${pkgs.roboto}/share/fonts ./src
|
||||||
|
|
||||||
export PATH="$PATH:$(realpath ./node_modules)/.bin"
|
export PATH="$PATH:$(realpath ./node_modules)/.bin"
|
||||||
|
|
||||||
|
|
||||||
# re-generate the api code
|
# re-generate the api code
|
||||||
rm -rf src/api openapi.json
|
rm -rf src/api openapi.json
|
||||||
cp ${clanPkgs.clan-openapi}/openapi.json .
|
cp ${clanPkgs.clan-openapi}/openapi.json .
|
||||||
orval
|
orval
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import { mutate } from "swr";
|
import { mutate } from "swr";
|
||||||
import { useGetAttachedEntities } from "@/api/entities/entities";
|
import { useGetAttachedEntities } from "@/api/entities/entities";
|
||||||
import { useGetRepositories } from "@/api/repositories/repositories";
|
import { useGetAllRepositories } from "@/api/repositories/repositories";
|
||||||
import SummaryDetails from "@/components/summary_card";
|
import SummaryDetails from "@/components/summary_card";
|
||||||
import CustomTable from "@/components/table";
|
import CustomTable from "@/components/table";
|
||||||
import {
|
import {
|
||||||
@@ -22,7 +22,7 @@ export default function AccessPoint() {
|
|||||||
data: APRepositories,
|
data: APRepositories,
|
||||||
isLoading: laodingRepositories,
|
isLoading: laodingRepositories,
|
||||||
swrKey: repositoriesKeyFunc,
|
swrKey: repositoriesKeyFunc,
|
||||||
} = useGetRepositories();
|
} = useGetAllRepositories();
|
||||||
|
|
||||||
const onRefresh = () => {
|
const onRefresh = () => {
|
||||||
const attachedEntitiesKey =
|
const attachedEntitiesKey =
|
||||||
@@ -65,6 +65,7 @@ export default function AccessPoint() {
|
|||||||
loading={loadingAttachements}
|
loading={loadingAttachements}
|
||||||
data={APAttachementData?.data}
|
data={APAttachementData?.data}
|
||||||
configuration={APAttachmentsTableConfig}
|
configuration={APAttachmentsTableConfig}
|
||||||
|
tkey="attachment-table"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@@ -73,6 +74,7 @@ export default function AccessPoint() {
|
|||||||
loading={laodingRepositories}
|
loading={laodingRepositories}
|
||||||
data={APRepositories?.data}
|
data={APRepositories?.data}
|
||||||
configuration={APServiceRepositoryTableConfig}
|
configuration={APServiceRepositoryTableConfig}
|
||||||
|
tkey="service-repository-table"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,168 +0,0 @@
|
|||||||
"use client";
|
|
||||||
import { useEffect, useRef, useState } from "react";
|
|
||||||
import {
|
|
||||||
Client1ConsumerTableConfig,
|
|
||||||
Client1ProducerTableConfig,
|
|
||||||
} from "@/config/client_1";
|
|
||||||
import CustomTable from "@/components/table";
|
|
||||||
import useGetEntityByName from "@/components/hooks/useGetEntityById";
|
|
||||||
import {
|
|
||||||
Alert,
|
|
||||||
Button,
|
|
||||||
Card,
|
|
||||||
CardContent,
|
|
||||||
CardHeader,
|
|
||||||
Skeleton,
|
|
||||||
Snackbar,
|
|
||||||
Typography,
|
|
||||||
} from "@mui/material";
|
|
||||||
import CopyToClipboard from "@/components/copy_to_clipboard";
|
|
||||||
import { mutate } from "swr";
|
|
||||||
import { useGetEntity } from "@/api/entities/entities";
|
|
||||||
import { BASE_URL } from "@/constants";
|
|
||||||
import axios from "axios";
|
|
||||||
|
|
||||||
export default function Client1() {
|
|
||||||
const { entity } = useGetEntityByName("C1");
|
|
||||||
const {
|
|
||||||
data: client1,
|
|
||||||
isLoading,
|
|
||||||
swrKey: entityKeyFunc,
|
|
||||||
} = useGetEntity({ entity_did: entity?.did });
|
|
||||||
const cardContentRef = useRef(null);
|
|
||||||
const [isAttached, setIsAttached] = useState(entity?.attached || false);
|
|
||||||
const [snackbarOpen, setSnackbarOpen] = useState(false);
|
|
||||||
const [snackbarMessage, setSnackbarMessage] = useState("");
|
|
||||||
|
|
||||||
const closeSnackBar = () => {
|
|
||||||
setSnackbarMessage("");
|
|
||||||
setSnackbarOpen(false);
|
|
||||||
};
|
|
||||||
|
|
||||||
const onAttachEntity = async () => {
|
|
||||||
try {
|
|
||||||
const response = await axios.post(`${BASE_URL}/attach`, {
|
|
||||||
entity_did: entity?.did,
|
|
||||||
});
|
|
||||||
setSnackbarMessage(response.data.message);
|
|
||||||
setSnackbarOpen(true);
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
} finally {
|
|
||||||
setIsAttached(true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onDetachEntity = async () => {
|
|
||||||
try {
|
|
||||||
const response = await axios.post(`${BASE_URL}/detach`, {
|
|
||||||
entity_did: entity?.did,
|
|
||||||
});
|
|
||||||
console.log(response);
|
|
||||||
setSnackbarMessage("Entity detached successfully.");
|
|
||||||
setSnackbarOpen(true);
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
} finally {
|
|
||||||
setIsAttached(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onRefresh = () => {
|
|
||||||
const entityKey =
|
|
||||||
typeof entityKeyFunc === "function" ? entityKeyFunc() : entityKeyFunc;
|
|
||||||
if (entityKey) mutate(entityKey);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const interval = setInterval(() => {
|
|
||||||
onRefresh();
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
return () => clearInterval(interval);
|
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
if (isLoading) return <Skeleton height={500} />;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className="m-10">
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
display: "flex",
|
|
||||||
alignItems: "center",
|
|
||||||
justifyContent: "space-between",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<h2>Client 1</h2>
|
|
||||||
<div>
|
|
||||||
{isAttached === false ? (
|
|
||||||
<Button
|
|
||||||
onClick={onAttachEntity}
|
|
||||||
className="mr-6"
|
|
||||||
variant="contained"
|
|
||||||
>
|
|
||||||
Attach
|
|
||||||
</Button>
|
|
||||||
) : (
|
|
||||||
<Button
|
|
||||||
onClick={onDetachEntity}
|
|
||||||
className="mr-6"
|
|
||||||
variant="contained"
|
|
||||||
>
|
|
||||||
Detach
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Button onClick={onRefresh} variant="contained">
|
|
||||||
Refresh
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Card variant="outlined">
|
|
||||||
<CardHeader
|
|
||||||
subheader="Summary"
|
|
||||||
action={<CopyToClipboard contentRef={cardContentRef} />}
|
|
||||||
/>
|
|
||||||
<CardContent ref={cardContentRef}>
|
|
||||||
<Typography color="text.primary" gutterBottom>
|
|
||||||
DID: <code>{client1?.data?.did}</code>
|
|
||||||
</Typography>
|
|
||||||
<Typography color="text.primary" gutterBottom>
|
|
||||||
IP: <code>{client1?.data?.ip}</code>
|
|
||||||
</Typography>
|
|
||||||
<Typography color="text.primary" gutterBottom>
|
|
||||||
Network: <code>{client1?.data?.other?.network}</code>
|
|
||||||
</Typography>
|
|
||||||
</CardContent>
|
|
||||||
</Card>
|
|
||||||
<div>
|
|
||||||
<h4>Consumer View</h4>
|
|
||||||
<CustomTable
|
|
||||||
loading={isLoading}
|
|
||||||
data={client1?.data?.producers}
|
|
||||||
configuration={Client1ConsumerTableConfig}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<h4>Producer View</h4>
|
|
||||||
<CustomTable
|
|
||||||
loading={isLoading}
|
|
||||||
data={client1?.data?.producers}
|
|
||||||
configuration={Client1ProducerTableConfig}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<Snackbar
|
|
||||||
onClose={closeSnackBar}
|
|
||||||
anchorOrigin={{ vertical: "top", horizontal: "center" }}
|
|
||||||
open={snackbarOpen}
|
|
||||||
autoHideDuration={1000}
|
|
||||||
>
|
|
||||||
<Alert severity="success" sx={{ width: "100%" }}>
|
|
||||||
{snackbarMessage}
|
|
||||||
</Alert>
|
|
||||||
</Snackbar>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,70 +1,47 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { useEffect, useRef, useState } from "react";
|
import { useEffect, useMemo, useRef, useState } from "react";
|
||||||
import {
|
import { ClientTableConfig, ServiceTableConfig } from "@/config/client_1";
|
||||||
Client2ConsumerTableConfig,
|
|
||||||
Client2ProducerTableConfig,
|
|
||||||
} from "@/config/client_2";
|
|
||||||
import CustomTable from "@/components/table";
|
import CustomTable from "@/components/table";
|
||||||
import useGetEntityByName from "@/components/hooks/useGetEntityById";
|
|
||||||
import {
|
import {
|
||||||
|
Alert,
|
||||||
Button,
|
Button,
|
||||||
Card,
|
Card,
|
||||||
CardContent,
|
CardContent,
|
||||||
CardHeader,
|
CardHeader,
|
||||||
Skeleton,
|
|
||||||
Typography,
|
|
||||||
Snackbar,
|
Snackbar,
|
||||||
Alert,
|
Typography,
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import CopyToClipboard from "@/components/copy_to_clipboard";
|
import CopyToClipboard from "@/components/copy_to_clipboard";
|
||||||
import { useGetEntity } from "@/api/entities/entities";
|
import { useGetServicesByName } from "@/api/services/services";
|
||||||
|
import { attachEntity, detachEntity } from "@/api/entities/entities";
|
||||||
import { mutate } from "swr";
|
import { mutate } from "swr";
|
||||||
import axios from "axios";
|
import { Skeleton } from "@mui/material";
|
||||||
import { BASE_URL } from "@/constants";
|
import { Service } from "@/api/model";
|
||||||
|
|
||||||
|
export default function Client({
|
||||||
|
params,
|
||||||
|
}: {
|
||||||
|
params: { client_name: string };
|
||||||
|
}) {
|
||||||
|
const { client_name } = params;
|
||||||
|
|
||||||
export default function Client2() {
|
|
||||||
const { entity } = useGetEntityByName("C2");
|
|
||||||
const {
|
const {
|
||||||
data: client2,
|
data: services,
|
||||||
isLoading,
|
isLoading: services_loading,
|
||||||
swrKey: entityKeyFunc,
|
swrKey: entityKeyFunc,
|
||||||
} = useGetEntity({ entity_did: entity?.did });
|
} = useGetServicesByName({
|
||||||
const cardContentRef = useRef(null);
|
entity_name: client_name,
|
||||||
const [isAttached, setIsAttached] = useState(entity?.attached);
|
});
|
||||||
const [snackbarOpen, setSnackbarOpen] = useState(false);
|
|
||||||
const [snackbarMessage, setSnackbarMessage] = useState("");
|
|
||||||
|
|
||||||
const closeSnackBar = () => {
|
const entity = services?.data?.entity;
|
||||||
setSnackbarMessage("");
|
const clients: Service[] = useMemo(() => {
|
||||||
setSnackbarOpen(false);
|
if (services?.data?.services) {
|
||||||
};
|
return services.data.services.filter((service) => {
|
||||||
|
if (service.entity_did !== entity?.did) return true;
|
||||||
const onAttachEntity = async () => {
|
|
||||||
try {
|
|
||||||
const response = await axios.post(`${BASE_URL}/attach`, {
|
|
||||||
entity_did: entity?.did,
|
|
||||||
});
|
});
|
||||||
alert(response.data.message);
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
} finally {
|
|
||||||
setIsAttached(true);
|
|
||||||
}
|
}
|
||||||
};
|
return [];
|
||||||
|
}, [services, entity?.did]);
|
||||||
const onDetachEntity = async () => {
|
|
||||||
try {
|
|
||||||
const response = await axios.post(`${BASE_URL}/detach`, {
|
|
||||||
entity_did: entity?.did,
|
|
||||||
});
|
|
||||||
console.log("detach", response);
|
|
||||||
alert("Entity Detached Successfully.");
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
} finally {
|
|
||||||
setIsAttached(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const onRefresh = () => {
|
const onRefresh = () => {
|
||||||
const entityKey =
|
const entityKey =
|
||||||
@@ -75,13 +52,57 @@ export default function Client2() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const interval = setInterval(() => {
|
const interval = setInterval(() => {
|
||||||
onRefresh();
|
onRefresh();
|
||||||
}, 1000);
|
}, 5000);
|
||||||
|
|
||||||
return () => clearInterval(interval);
|
return () => clearInterval(interval);
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
if (isLoading) return <Skeleton height={500} />;
|
const cardContentRef = useRef(null);
|
||||||
|
const [snackbarOpen, setSnackbarOpen] = useState(false);
|
||||||
|
const [snackbarMessage, setSnackbarMessage] = useState("");
|
||||||
|
const [isAttached, setIsAttached] = useState(entity?.attached);
|
||||||
|
|
||||||
|
const closeSnackBar = () => {
|
||||||
|
setSnackbarMessage("");
|
||||||
|
setSnackbarOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const onAttachEntity = async () => {
|
||||||
|
try {
|
||||||
|
if (entity) {
|
||||||
|
const response = await attachEntity(entity.did);
|
||||||
|
setSnackbarMessage(response.data.message);
|
||||||
|
setSnackbarOpen(true);
|
||||||
|
} else {
|
||||||
|
console.error("no entity");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
} finally {
|
||||||
|
setIsAttached(true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onDetachEntity = async () => {
|
||||||
|
try {
|
||||||
|
if (entity) {
|
||||||
|
const response = await detachEntity(entity.did);
|
||||||
|
console.log(response);
|
||||||
|
setSnackbarMessage("Entity detached successfully.");
|
||||||
|
setSnackbarOpen(true);
|
||||||
|
} else {
|
||||||
|
console.error("no entity");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
} finally {
|
||||||
|
setIsAttached(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (services_loading) return <Skeleton height={500} />;
|
||||||
|
if (!services) return <Alert severity="error">Client not found</Alert>;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="m-10">
|
<div className="m-10">
|
||||||
@@ -92,7 +113,7 @@ export default function Client2() {
|
|||||||
justifyContent: "space-between",
|
justifyContent: "space-between",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<h2>Client 2</h2>
|
<h2>Client 1</h2>
|
||||||
<div>
|
<div>
|
||||||
{isAttached === false ? (
|
{isAttached === false ? (
|
||||||
<Button
|
<Button
|
||||||
@@ -111,6 +132,7 @@ export default function Client2() {
|
|||||||
Detach
|
Detach
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Button onClick={onRefresh} variant="contained">
|
<Button onClick={onRefresh} variant="contained">
|
||||||
Refresh
|
Refresh
|
||||||
</Button>
|
</Button>
|
||||||
@@ -124,30 +146,32 @@ export default function Client2() {
|
|||||||
/>
|
/>
|
||||||
<CardContent ref={cardContentRef}>
|
<CardContent ref={cardContentRef}>
|
||||||
<Typography color="text.primary" gutterBottom>
|
<Typography color="text.primary" gutterBottom>
|
||||||
DID: <code>{client2?.data?.did}</code>
|
DID: <code>{entity?.did}</code>
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography color="text.primary" gutterBottom>
|
<Typography color="text.primary" gutterBottom>
|
||||||
IP: <code>{client2?.data?.ip}</code>
|
IP: <code>{entity?.ip}</code>
|
||||||
</Typography>
|
</Typography>
|
||||||
<Typography color="text.primary" gutterBottom>
|
<Typography color="text.primary" gutterBottom>
|
||||||
Network: <code>{client2?.data?.other?.network}</code>
|
Network: <code>{entity?.other?.network}</code>
|
||||||
</Typography>
|
</Typography>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
<div>
|
<div>
|
||||||
<h4>Consumer View</h4>
|
<h4>Client View</h4>
|
||||||
<CustomTable
|
<CustomTable
|
||||||
loading={isLoading}
|
loading={services_loading}
|
||||||
data={client2?.data?.producers}
|
data={clients}
|
||||||
configuration={Client2ConsumerTableConfig}
|
configuration={ClientTableConfig}
|
||||||
|
tkey="client-table"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h4>Producer View</h4>
|
<h4>Service View</h4>
|
||||||
<CustomTable
|
<CustomTable
|
||||||
loading={isLoading}
|
loading={services_loading}
|
||||||
data={client2?.data?.producers}
|
data={services?.data?.services}
|
||||||
configuration={Client2ProducerTableConfig}
|
configuration={ServiceTableConfig}
|
||||||
|
tkey="service-table"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<Snackbar
|
<Snackbar
|
||||||
@@ -43,6 +43,7 @@ export default function DLG() {
|
|||||||
loading={loadingResolutions}
|
loading={loadingResolutions}
|
||||||
data={resolutionData}
|
data={resolutionData}
|
||||||
configuration={DLGResolutionTableConfig}
|
configuration={DLGResolutionTableConfig}
|
||||||
|
tkey="resolution_table"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export default function Home() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const interval = setInterval(() => {
|
const interval = setInterval(() => {
|
||||||
onRefresh();
|
onRefresh();
|
||||||
}, 500);
|
}, 5000);
|
||||||
|
|
||||||
return () => clearInterval(interval);
|
return () => clearInterval(interval);
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
@@ -45,6 +45,7 @@ export default function Home() {
|
|||||||
loading={data.loadingEntities}
|
loading={data.loadingEntities}
|
||||||
data={data?.allEntities}
|
data={data?.allEntities}
|
||||||
configuration={HomeTableConfig}
|
configuration={HomeTableConfig}
|
||||||
|
tkey="home_table"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useGetEntities } from "@/api/entities/entities";
|
import { useGetAllEntities } from "@/api/entities/entities";
|
||||||
import { Entity } from "@/api/model";
|
import { Entity } from "@/api/model";
|
||||||
import { AxiosError } from "axios";
|
import { AxiosError } from "axios";
|
||||||
import React, {
|
import React, {
|
||||||
@@ -33,7 +33,7 @@ interface AppContextProviderProps {
|
|||||||
export const WithAppState = (props: AppContextProviderProps) => {
|
export const WithAppState = (props: AppContextProviderProps) => {
|
||||||
const { children } = props;
|
const { children } = props;
|
||||||
|
|
||||||
const { data: entityData, swrKey: entitiesKeyFunc } = useGetEntities();
|
const { data: entityData, swrKey: entitiesKeyFunc } = useGetAllEntities();
|
||||||
|
|
||||||
const isLoading = false;
|
const isLoading = false;
|
||||||
const error = undefined;
|
const error = undefined;
|
||||||
|
|||||||
@@ -35,13 +35,13 @@ const menuEntityEntries: MenuEntry[] = [
|
|||||||
{
|
{
|
||||||
icon: <PersonIcon />,
|
icon: <PersonIcon />,
|
||||||
label: "C1",
|
label: "C1",
|
||||||
to: "/client-1",
|
to: "/client/C1",
|
||||||
disabled: false,
|
disabled: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <PersonIcon />,
|
icon: <PersonIcon />,
|
||||||
label: "C2",
|
label: "C2",
|
||||||
to: "/client-2",
|
to: "/client/C2",
|
||||||
disabled: false,
|
disabled: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { StyledTableCell, StyledTableRow } from "./style";
|
|||||||
import { ICustomTable, CustomTableConfiguration } from "@/types";
|
import { ICustomTable, CustomTableConfiguration } from "@/types";
|
||||||
import { Checkbox, Skeleton } from "@mui/material";
|
import { Checkbox, Skeleton } from "@mui/material";
|
||||||
|
|
||||||
const CustomTable = ({ configuration, data, loading }: ICustomTable) => {
|
const CustomTable = ({ configuration, data, loading, tkey }: ICustomTable) => {
|
||||||
if (loading)
|
if (loading)
|
||||||
return <Skeleton variant="rectangular" animation="wave" height={200} />;
|
return <Skeleton variant="rectangular" animation="wave" height={200} />;
|
||||||
|
|
||||||
@@ -36,6 +36,7 @@ const CustomTable = ({ configuration, data, loading }: ICustomTable) => {
|
|||||||
// cover use case if we want to render a component
|
// cover use case if we want to render a component
|
||||||
if (render) renderedValue = render(value);
|
if (render) renderedValue = render(value);
|
||||||
|
|
||||||
|
console.log("renderTableCell key", cellKey);
|
||||||
return (
|
return (
|
||||||
<StyledTableCell key={cellKey} align="left">
|
<StyledTableCell key={cellKey} align="left">
|
||||||
{renderedValue}
|
{renderedValue}
|
||||||
@@ -56,12 +57,18 @@ const CustomTable = ({ configuration, data, loading }: ICustomTable) => {
|
|||||||
<TableBody>
|
<TableBody>
|
||||||
{data.map((data: any, rowIndex: number) => (
|
{data.map((data: any, rowIndex: number) => (
|
||||||
<StyledTableRow key={rowIndex}>
|
<StyledTableRow key={rowIndex}>
|
||||||
{configuration.map((column: CustomTableConfiguration) => {
|
{configuration.map(
|
||||||
const cellValue: any = data[column.key];
|
(column: CustomTableConfiguration, columnIndex: number) => {
|
||||||
const cellKey = column.key;
|
const cellValue: any = data[column.key];
|
||||||
const renderComponent = column?.render;
|
const cellKey = tkey + ":" + column.key + ":" + rowIndex;
|
||||||
return renderTableCell(cellValue, cellKey, renderComponent);
|
const renderComponent = column?.render;
|
||||||
})}
|
return renderTableCell(
|
||||||
|
cellValue,
|
||||||
|
cellKey + ":" + columnIndex,
|
||||||
|
renderComponent,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
)}
|
||||||
</StyledTableRow>
|
</StyledTableRow>
|
||||||
))}
|
))}
|
||||||
</TableBody>
|
</TableBody>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Button } from "@mui/material";
|
import { Button } from "@mui/material";
|
||||||
|
|
||||||
export const Client1ConsumerTableConfig = [
|
export const ClientTableConfig = [
|
||||||
{
|
{
|
||||||
key: "service_name",
|
key: "service_name",
|
||||||
label: "Service name",
|
label: "Service name",
|
||||||
@@ -34,7 +34,7 @@ export const Client1ConsumerTableConfig = [
|
|||||||
// },
|
// },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const Client1ProducerTableConfig = [
|
export const ServiceTableConfig = [
|
||||||
{
|
{
|
||||||
key: "service_name",
|
key: "service_name",
|
||||||
label: "Service name",
|
label: "Service name",
|
||||||
@@ -71,6 +71,7 @@ export const Client1ProducerTableConfig = [
|
|||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
console.log("render", renderedValue);
|
||||||
return renderedValue;
|
return renderedValue;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export const HomeTableConfig = [
|
|||||||
label: "Entity DID",
|
label: "Entity DID",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "other",
|
key: "network",
|
||||||
label: "Network",
|
label: "Network",
|
||||||
render: (value: any) => {
|
render: (value: any) => {
|
||||||
const renderedValue = typeof value === "object" ? value?.network : "-";
|
const renderedValue = typeof value === "object" ? value?.network : "-";
|
||||||
@@ -20,7 +20,7 @@ export const HomeTableConfig = [
|
|||||||
label: "IP address",
|
label: "IP address",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "other",
|
key: "roles",
|
||||||
label: "Roles",
|
label: "Roles",
|
||||||
render: (value: any) => {
|
render: (value: any) => {
|
||||||
const renderedValue =
|
const renderedValue =
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export interface ICustomTable {
|
|||||||
configuration: CustomTableConfiguration[];
|
configuration: CustomTableConfiguration[];
|
||||||
data: any;
|
data: any;
|
||||||
loading?: boolean;
|
loading?: boolean;
|
||||||
|
tkey: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EntityDetails {
|
export interface EntityDetails {
|
||||||
|
|||||||
Reference in New Issue
Block a user