|
16 | 16 | from .error import KepError, KepHTTPError, KepURLError |
17 | 17 | import socket |
18 | 18 | import ssl |
19 | | -import sys |
20 | 19 |
|
21 | 20 | class KepServiceResponse: |
22 | 21 | '''A class to represent a return object when calling a "service" API of Kepware. This is |
@@ -82,7 +81,7 @@ class server: |
82 | 81 | Methods: |
83 | 82 |
|
84 | 83 | "reinitialize()" - reinitialize the Kepware server |
85 | | - "get_trans_log()" - retrieve the Configuration API transaction logs |
| 84 | + "get_transaction_log()" - retrieve the Configuration API transaction logs |
86 | 85 | "get_event_log()" - retrieve the Kepware Event Log |
87 | 86 | "get_project_properties()" - retrieve the Kepware Project Properties |
88 | 87 | "modify_project_properties()" - modify the Kepware Project Properties |
@@ -206,32 +205,38 @@ def reinitialize(self, job_ttl = None) -> KepServiceResponse: |
206 | 205 | except Exception as err: |
207 | 206 | raise err |
208 | 207 |
|
209 | | - def get_trans_log(self, start = None, end = None, limit = None) -> list: |
| 208 | + def get_transaction_log(self, limit: int = None, start: datetime.datetime = None, end: datetime.datetime = None) -> list: |
210 | 209 | ''' Get the Transaction Log from the Kepware instance. |
211 | 210 |
|
212 | | - "start" (optional) - datetime.datetime type and should be UTC |
| 211 | + limit (optional) - number of event log entries to request |
| 212 | + |
| 213 | + start (optional) - datetime.datetime type and should be UTC |
213 | 214 |
|
214 | | - "end" (optional) - datetime.datetime type and should be UTC |
| 215 | + end (optional) - datetime.datetime type and should be UTC |
215 | 216 |
|
216 | | - "limit" (optional) - number of event log entries to request |
217 | 217 | ''' |
218 | 218 | query = self.__create_query(start, end, limit) |
219 | | - url = self.url + self.__trans_log_url + '?' + parse.urlencode(query) |
220 | | - r = self._config_get(url) |
| 219 | + url = f'{self.url}{self.__trans_log_url}' |
| 220 | + r = self._config_get(url, params= query) |
221 | 221 | return r.payload |
222 | 222 |
|
223 | | - def get_event_log(self, limit = None, start = None, end = None) -> list: |
| 223 | + def get_event_log(self, limit: int = None, start: datetime.datetime = None, end: datetime.datetime = None, *, options: dict = None) -> list: |
224 | 224 | ''' Get the Event Log from the Kepware instance. |
225 | 225 |
|
226 | | - "start" (optional) - datetime.datetime type and should be UTC |
| 226 | + start (optional) - datetime.datetime type and should be UTC |
| 227 | +
|
| 228 | + end (optional) - datetime.datetime type and should be UTC |
227 | 229 |
|
228 | | - "end" (optional) - datetime.datetime type and should be UTC |
| 230 | + limit (optional) - number of event log entries to request |
229 | 231 |
|
230 | | - "limit" (optional) - number of event log entries to request |
| 232 | + options - (optional) Dict of parameters to filter, sort or pagenate the list of transactions. Options are 'event', |
| 233 | + 'sortOrder', 'sortProperty', 'pageNumber', and 'pageSize' |
231 | 234 | ''' |
232 | 235 | query = self.__create_query(start, end, limit) |
233 | | - url = self.url + self.__event_log_url + '?' + parse.urlencode(query) |
234 | | - r = self._config_get(url) |
| 236 | + if options is not None: |
| 237 | + query = {**query, **options} |
| 238 | + url = f'{self.url}{self.__event_log_url}' |
| 239 | + r = self._config_get(url, params= query) |
235 | 240 | return r.payload |
236 | 241 |
|
237 | 242 | def get_project_properties(self) -> dict: |
@@ -399,8 +404,15 @@ def _config_update(self, url, DATA = None): |
399 | 404 | return r |
400 | 405 |
|
401 | 406 | #Function used to Read an object from Kepware (HTTP GET) and return the JSON response |
402 | | - def _config_get(self, url): |
403 | | - '''Conducts an GET method at *url* to retrieve an objects properties in the Kepware Configuration.''' |
| 407 | + def _config_get(self, url, *, params = None): |
| 408 | + ''' |
| 409 | + Conducts an GET method at *url* to retrieve an objects properties with query parameters in |
| 410 | + the Kepware Configuration. |
| 411 | + ''' |
| 412 | + # Add parameters when necessary |
| 413 | + if params is not None and params != {}: |
| 414 | + qparams = parse.urlencode(params) |
| 415 | + url = f'{url}?{qparams}' |
404 | 416 | url_obj = self.__url_validate(url) |
405 | 417 | q = request.Request(url_obj, method='GET') |
406 | 418 | r = self.__connect(q) |
|
0 commit comments