AAS HTTP Client Documentation
Loading...
Searching...
No Matches
pagination.py
Go to the documentation of this file.
1"""Pagination wrapper classes for AAS HTTP Client."""
2
3import logging
4
5from basyx.aas import model
6
7from aas_http_client.utilities.sdk_tools import convert_to_object
8
9_logger = logging.getLogger(__name__)
10
11
13 """Class representing pagination metadata."""
14
15 cursor: str
17 def __init__(self, cursor: str) -> None:
18 """Initialize a paging metadata object.
19
20 :param cursor: Cursor for the next page
21 """
22 self.cursorcursor = cursor
23
26 """Class representing paginated data for Asset Administration Shells."""
27
28 paging_metadata: PagingMetadata
29 results: list[model.AssetAdministrationShell]
30
31 def __init__(self, cursor: str, results: list[model.AssetAdministrationShell]) -> None:
32 """Initialize a paginated data object.
33
34 :param paging_metadata: Paging metadata
35 :param results: list of results
36 """
38 self.resultsresults = results
42 """Class representing paginated data for References."""
43
44 paging_metadata: PagingMetadata
45 results: list[model.ModelReference]
46
47 def __init__(self, cursor: str, results: list[model.ModelReference]) -> None:
48 """Initialize a paginated data object.
49
50 :param paging_metadata: Paging metadata
51 :param results: list of results
52 """
54 self.resultsresults = results
58 """Class representing paginated data for Submodels."""
59
60 paging_metadata: PagingMetadata
61 results: list[model.Submodel]
62
63 def __init__(self, cursor: str, results: list[model.Submodel]) -> None:
64 """Initialize a paginated data object.
65
66 :param paging_metadata: Paging metadata
67 :param results: list of results
68 """
70 self.resultsresults = results
74 """Class representing paginated data for Submodel Elements."""
75
76 paging_metadata: PagingMetadata
77 results: list[model.SubmodelElement]
78
79 def __init__(self, cursor: str, results: list[model.SubmodelElement]) -> None:
80 """Initialize a paginated data object.
81
82 :param paging_metadata: Paging metadata
83 :param results: list of results
84 """
86 self.resultsresults = results
90 """Class representing paginated data for Shell Descriptors."""
91
92 paging_metadata: PagingMetadata
93 results: list[model.SubmodelElement]
94
95 def __init__(self, cursor: str, results: list[model.SubmodelElement]) -> None:
96 """Initialize a paginated data object.
97
98 :param paging_metadata: Paging metadata
99 :param results: list of results
100 """
102 self.resultsresults = results
105def create_shell_paging_data(content: dict) -> ShellPaginatedData | None:
106 """Create a ShellPaginatedData object from a dictionary.
107
108 :param content: Dictionary containing paginated shell data
109 :return: ShellPaginatedData object
110 """
111 aas_list: list[model.AssetAdministrationShell] = []
112
113 results: list = content.get("result", [])
114 if not results or len(results) == 0:
115 _logger.warning("No shells found on server.")
116 return ShellPaginatedData(cursor="", results=[])
117
118 for result in results:
119 if not isinstance(result, dict):
120 _logger.error(f"Invalid shell data: {result}")
121 return None
122
123 aas = convert_to_object(result)
124
125 if aas:
126 aas_list.append(aas)
127
128 cursor = ""
129 paging_metadata_dict = content.get("paging_metadata", {})
130
131 if "cursor" in paging_metadata_dict:
132 cursor = paging_metadata_dict["cursor"]
133
134 return ShellPaginatedData(
135 cursor=cursor,
136 results=aas_list,
137 )
138
139
140def create_submodel_paging_data(content: dict) -> SubmodelPaginatedData | None:
141 """Create a SubmodelPaginatedData object from a dictionary.
142
143 :param content: Dictionary containing paginated submodel data
144 :return: SubmodelPaginatedData object
145 """
146 sm_list: list[model.Submodel] = []
147
148 results: list = content.get("result", [])
149 if not results or len(results) == 0:
150 _logger.warning("No shells found on server.")
151 return SubmodelPaginatedData(cursor="", results=[])
152
153 for result in results:
154 if not isinstance(result, dict):
155 _logger.error(f"Invalid shell data: {result}")
156 return None
157
158 sm = convert_to_object(result)
159
160 if sm:
161 sm_list.append(sm)
162
163 cursor = ""
164 paging_metadata_dict = content.get("paging_metadata", {})
165
166 if "cursor" in paging_metadata_dict:
167 cursor = paging_metadata_dict["cursor"]
168
170 cursor=cursor,
171 results=sm_list,
172 )
173
174
175def create_submodel_element_paging_data(content: dict) -> SubmodelElementPaginatedData | None:
176 """Create a SubmodelElementPaginatedData object from a dictionary.
177
178 :param content: Dictionary containing paginated submodel element data
179 :return: SubmodelElementPaginatedData object
180 """
181 sme_list: list[model.SubmodelElement] = []
182
183 results: list = content.get("result", [])
184 if not results or len(results) == 0:
185 _logger.warning("No shells found on server.")
186 return SubmodelElementPaginatedData(cursor="", results=[])
187
188 for result in results:
189 if not isinstance(result, dict):
190 _logger.error(f"Invalid shell data: {result}")
191 return None
192
193 sme = convert_to_object(result)
194
195 if sme:
196 sme_list.append(sme)
197
198 cursor = ""
199 paging_metadata_dict = content.get("paging_metadata", {})
200
201 if "cursor" in paging_metadata_dict:
202 cursor = paging_metadata_dict["cursor"]
203
205 cursor=cursor,
206 results=sme_list,
207 )
208
209
210def create_shell_descriptor_paging_data(content: dict) -> SubmodelElementPaginatedData | None:
211 """Create a SubmodelElementPaginatedData object from a dictionary.
212
213 :param content: Dictionary containing paginated submodel element data
214 :return: SubmodelElementPaginatedData object
215 """
216 sme_list: list[model.SubmodelElement] = []
217
218 results: list = content.get("result", [])
219 if not results or len(results) == 0:
220 _logger.warning("No shells found on server.")
221 return SubmodelElementPaginatedData(cursor="", results=[])
222
223 for result in results:
224 if not isinstance(result, dict):
225 _logger.error(f"Invalid shell data: {result}")
226 return None
227
228 sme = convert_to_object(result)
229
230 if sme:
231 sme_list.append(sme)
232
233 cursor = ""
234 paging_metadata_dict = content.get("paging_metadata", {})
235
236 if "cursor" in paging_metadata_dict:
237 cursor = paging_metadata_dict["cursor"]
238
240 cursor=cursor,
241 results=sme_list,
242 )
243
244
245def create_reference_paging_data(content: dict) -> ReferencePaginatedData | None:
246 """Create a ReferencePaginatedData object from a dictionary.
247
248 :param content: Dictionary containing paginated reference data
249 :return: ReferencePaginatedData object
250 """
251 ref_list: list[model.ModelReference] = []
252
253 results: list = content.get("result", [])
254 if not results or len(results) == 0:
255 _logger.warning("No shells found on server.")
256 return ReferencePaginatedData(cursor="", results=[])
257
258 for result in results:
259 if not isinstance(result, dict):
260 _logger.error(f"Invalid shell data: {result}")
261 return None
262
263 reference = convert_to_object(result)
264
265 if reference:
266 ref_list.append(reference)
267
268 cursor = ""
269 paging_metadata_dict = content.get("paging_metadata", {})
270
271 if "cursor" in paging_metadata_dict:
272 cursor = paging_metadata_dict["cursor"]
273
275 cursor=cursor,
276 results=ref_list,
277 )
Class representing pagination metadata.
Definition pagination.py:16
None __init__(self, str cursor)
Initialize a paging metadata object.
Definition pagination.py:24
Class representing paginated data for References.
Definition pagination.py:45
None __init__(self, str cursor, list[model.ModelReference] results)
Initialize a paginated data object.
Definition pagination.py:55
Class representing paginated data for Shell Descriptors.
Definition pagination.py:93
None __init__(self, str cursor, list[model.SubmodelElement] results)
Initialize a paginated data object.
Class representing paginated data for Asset Administration Shells.
Definition pagination.py:29
None __init__(self, str cursor, list[model.AssetAdministrationShell] results)
Initialize a paginated data object.
Definition pagination.py:39
PagingMetadata paging_metadata
Definition pagination.py:31
Class representing paginated data for Submodel Elements.
Definition pagination.py:77
None __init__(self, str cursor, list[model.SubmodelElement] results)
Initialize a paginated data object.
Definition pagination.py:87
Class representing paginated data for Submodels.
Definition pagination.py:61
None __init__(self, str cursor, list[model.Submodel] results)
Initialize a paginated data object.
Definition pagination.py:71
SubmodelElementPaginatedData|None create_shell_descriptor_paging_data(dict content)
Create a SubmodelElementPaginatedData object from a dictionary.