diff options
| author | Dylan Bolger <dylan.bolger00@gmail.com> | 2023-10-15 11:34:02 -0500 |
|---|---|---|
| committer | Dylan Bolger <dylan.bolger00@gmail.com> | 2023-10-15 11:34:02 -0500 |
| commit | b5d1b9378adfd8337b3a949b3565b989e0f07db4 (patch) | |
| tree | 729f7e6ed4261a36c6576e7a9cad09da1fdee4e8 /energy_request.py | |
| download | city-utilities-restful-wrapper-b5d1b9378adfd8337b3a949b3565b989e0f07db4.tar.xz city-utilities-restful-wrapper-b5d1b9378adfd8337b3a949b3565b989e0f07db4.zip | |
Initial commit: RESTful API to grab energy usage
Diffstat (limited to 'energy_request.py')
| -rw-r--r-- | energy_request.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/energy_request.py b/energy_request.py new file mode 100644 index 0000000..9b8542a --- /dev/null +++ b/energy_request.py @@ -0,0 +1,78 @@ +import json +import requests +from constants import usageRequestCookies, genericRequestHeaders, electricUsageRequestJson, waterUsageRequestJson, waterRequestEndpoint, electricRequestEndpoint + +# Electric + +def dayElectricRequest(): + electricUsageRequestJson['Mode'] = 'D' + return performElectricRequest() + +def monthElectricRequest(): + electricUsageRequestJson['Mode'] = 'M' + return performElectricRequest() + +def performElectricRequest(): + electricUsageResponse = requests.post( + electricRequestEndpoint, + cookies=usageRequestCookies, + headers=genericRequestHeaders, + json=electricUsageRequestJson + ) + return parseResponse(electricUsageResponse) + +def requestElectric(): + return { + "day": dayElectricRequest(), + "month": monthElectricRequest() + } + +# Water + +def dayWaterRequest(): + waterUsageRequestJson['Mode'] = 'D' + return performWaterRequest() + +def monthWaterRequest(): + waterUsageRequestJson['Mode'] = 'M' + return performWaterRequest() + +def performWaterRequest(): + waterUsageResponse = requests.post( + waterRequestEndpoint, + cookies=usageRequestCookies, + headers=genericRequestHeaders, + json=waterUsageRequestJson + ) + return parseResponse(waterUsageResponse) + +def requestWater(): + return { + "day": dayWaterRequest(), + "month": monthWaterRequest() + } + +# Utility methods + +def parseResponse(response): + # such an icky response from an endpoint + # TODO: Remove unneeded JSON entries? + return json.loads(response.text.replace("\\\"", "\"").replace("\\\"", "\"").replace("\"{\"", "{\"").replace("}\"}", "}}"))['d']['objUsageGenerationResultSetTwo'] + +def setupRequestParameters(parameters): + # Setup cookies and csrftoken to perform requests + usageRequestCookies['ApplicationGatewayAffinityCORS'] = parameters['aga'] + usageRequestCookies['ApplicationGatewayAffinity'] = parameters['aga'] + usageRequestCookies['ASP.NET_SessionId'] = parameters['asi'] + usageRequestCookies['SCP'] = parameters['lt'] + genericRequestHeaders['csrftoken'] = parameters['ct'] + +# Service calling method + +def request(requestParameters): + setupRequestParameters(requestParameters) + return { + "electric": requestElectric(), + "water": requestWater() + } + |
