/gateways/*
This file describes the router for:
where, id
may be left out.
get_gateway(request, gateway_id)
async
GET /gateways/{gateway ID}
Return a single
GatewayResource
.
Source code in optimade_gateway/routers/gateways.py
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 | @ROUTER.get(
"/gateways/{gateway_id}",
response_model=GatewaysResponseSingle,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
response_model_exclude_unset=True,
tags=["Gateways"],
responses=ERROR_RESPONSES,
)
async def get_gateway(request: Request, gateway_id: str) -> GatewaysResponseSingle:
"""`GET /gateways/{gateway ID}`
Return a single
[`GatewayResource`][optimade_gateway.models.gateways.GatewayResource].
"""
collection = await collection_factory(CONFIG.gateways_collection)
result = await get_valid_resource(collection, gateway_id)
return GatewaysResponseSingle(
links=ToplevelLinks(next=None),
data=result,
meta=meta_values(
url=request.url,
data_returned=1,
data_available=await collection.acount(),
more_data_available=False,
schema=CONFIG.schema_url,
),
)
|
get_gateways(request, params)
async
GET /gateways
Return overview of all (active) gateways.
Source code in optimade_gateway/routers/gateways.py
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 | @ROUTER.get(
"/gateways",
response_model=GatewaysResponse,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
response_model_exclude_unset=True,
tags=["Gateways"],
responses=ERROR_RESPONSES,
)
async def get_gateways(
request: Request,
params: Annotated[EntryListingQueryParams, Depends()],
) -> GatewaysResponse:
"""`GET /gateways`
Return overview of all (active) gateways.
"""
return await get_entries(
collection=await collection_factory(CONFIG.gateways_collection),
response_cls=GatewaysResponse,
request=request,
params=params,
)
|
post_gateways(request, gateway)
async
POST /gateways
Create or return existing gateway according to gateway
.
Source code in optimade_gateway/routers/gateways.py
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 | @ROUTER.post(
"/gateways",
response_model=GatewaysResponseSingle,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
response_model_exclude_unset=True,
tags=["Gateways"],
responses=ERROR_RESPONSES,
)
async def post_gateways(
request: Request, gateway: GatewayCreate
) -> GatewaysResponseSingle:
"""`POST /gateways`
Create or return existing gateway according to `gateway`.
"""
if gateway.database_ids:
databases_collection = await collection_factory(CONFIG.databases_collection)
databases = await databases_collection.get_multiple(
filter={"id": {"$in": await clean_python_types(gateway.database_ids)}}
)
if not isinstance(gateway.databases, list):
gateway.databases = []
current_database_ids = [_.id for _ in gateway.databases]
gateway.databases.extend(
_ for _ in databases if _.id not in current_database_ids
)
result, created = await resource_factory(gateway)
collection = await collection_factory(CONFIG.gateways_collection)
return GatewaysResponseSingle(
links=ToplevelLinks(next=None),
data=result,
meta=meta_values(
url=request.url,
data_returned=1,
data_available=await collection.acount(),
more_data_available=False,
schema=CONFIG.schema_url,
**{f"_{CONFIG.provider.prefix}_created": created},
),
)
|