scene and function
This commit is contained in:
143
askirepository.lua
Normal file
143
askirepository.lua
Normal file
@@ -0,0 +1,143 @@
|
||||
-----------------------------------------------------------------------------------------
|
||||
--
|
||||
-- askirepository.lua
|
||||
-- ASKI Portal API Repository
|
||||
--
|
||||
-----------------------------------------------------------------------------------------
|
||||
|
||||
local json = require("json")
|
||||
|
||||
local AskiRepository = {}
|
||||
|
||||
-- Cookie-Authentifizierungsfunktion
|
||||
function AskiRepository.getPostCookieAuth(url, email, password, code, callback)
|
||||
-- Erstelle den Request Body
|
||||
local requestBody = json.encode({
|
||||
email = email,
|
||||
password = password,
|
||||
code = code
|
||||
})
|
||||
|
||||
-- Callback-Funktion für die Antwort
|
||||
local function networkListener(event)
|
||||
if event.isError then
|
||||
print("Netzwerkfehler: " .. tostring(event.response))
|
||||
if callback then
|
||||
callback(false, nil, "Netzwerkfehler: " .. tostring(event.response))
|
||||
end
|
||||
else
|
||||
print("Status Code: " .. event.status)
|
||||
--print("Response: " .. event.response)
|
||||
|
||||
-- Extrahiere Cookie aus den Headers
|
||||
if event.responseHeaders then
|
||||
local cookie = event.responseHeaders["Set-Cookie"] or
|
||||
event.responseHeaders["set-cookie"]
|
||||
|
||||
if cookie then
|
||||
--print("Cookie: " .. cookie)
|
||||
if callback then
|
||||
callback(true, cookie, event.response)
|
||||
end
|
||||
else
|
||||
print("Kein Cookie in der Antwort gefunden")
|
||||
if callback then
|
||||
callback(false, nil, "Kein Cookie gefunden")
|
||||
end
|
||||
end
|
||||
else
|
||||
if callback then
|
||||
callback(false, nil, "Keine Headers in der Antwort")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- POST Request Parameter
|
||||
local params = {
|
||||
headers = {
|
||||
["Content-Type"] = "application/json",
|
||||
["Content-Length"] = tostring(#requestBody)
|
||||
},
|
||||
body = requestBody
|
||||
}
|
||||
|
||||
-- Führe den POST Request aus
|
||||
network.request(url, "POST", networkListener, params)
|
||||
end
|
||||
|
||||
-- Post Pv Data
|
||||
function AskiRepository.getPostHistoricData(url, deviceId, fromDate, toDate, cookie, callback)
|
||||
-- Erstelle den Request Body
|
||||
local requestBody = json.encode({
|
||||
meters = {
|
||||
{
|
||||
deviceId = deviceId,
|
||||
meterId = 40,
|
||||
meterSubId = 0
|
||||
}
|
||||
},
|
||||
sumTariffs = true,
|
||||
type = 1,
|
||||
tariff = 0,
|
||||
from = fromDate,
|
||||
to = toDate
|
||||
})
|
||||
|
||||
-- Callback-Funktion für die Antwort
|
||||
local function networkListener(event)
|
||||
if event.isError then
|
||||
print("Netzwerkfehler: " .. tostring(event.response))
|
||||
if callback then
|
||||
callback(false, nil, "Netzwerkfehler: " .. tostring(event.response))
|
||||
end
|
||||
else
|
||||
print("Status Code: " .. event.status)
|
||||
print("Response: " .. event.response)
|
||||
|
||||
-- Prüfe ob Status Code erfolgreich ist (200-299)
|
||||
if event.status >= 200 and event.status < 300 then
|
||||
-- Parse die JSON Response
|
||||
if event.response and event.response ~= "" then
|
||||
local dataSet = json.decode(event.response)
|
||||
if dataSet then
|
||||
print("DataSet erfolgreich empfangen")
|
||||
if callback then
|
||||
callback(true, dataSet, event.response)
|
||||
end
|
||||
else
|
||||
print("Fehler beim Parsen der Response")
|
||||
if callback then
|
||||
callback(false, nil, "JSON Parse Fehler")
|
||||
end
|
||||
end
|
||||
else
|
||||
print("Leere Response erhalten")
|
||||
if callback then
|
||||
callback(false, nil, "Leere Response")
|
||||
end
|
||||
end
|
||||
else
|
||||
print("HTTP Fehler: " .. event.status)
|
||||
if callback then
|
||||
callback(false, nil, "HTTP Fehler " .. event.status .. ": " .. tostring(event.response))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- POST Request Parameter
|
||||
local params = {
|
||||
headers = {
|
||||
["Content-Type"] = "application/json",
|
||||
["Content-Length"] = tostring(#requestBody),
|
||||
["Cookie"] = cookie
|
||||
},
|
||||
body = requestBody
|
||||
}
|
||||
|
||||
-- Führe den POST Request aus
|
||||
network.request(url, "POST", networkListener, params)
|
||||
end
|
||||
|
||||
return AskiRepository
|
||||
Reference in New Issue
Block a user