295 lines
9.3 KiB
Lua
295 lines
9.3 KiB
Lua
-- Siehe http://befator.befatorinc.de:8932/index.php/Steamcoin_API_Documentation für weitere Informationen
|
|
local API = {}
|
|
|
|
-- Erstellt eine Websocket Verbindung und speichert sie in API.ws für weitere Benutzung
|
|
-- url: Volle URL des Servers z.B. "ws://befator.befatorinc.de:5000/banking"
|
|
API.createWebsocket = function(url)
|
|
API.ws = http.websocket(url)
|
|
end
|
|
|
|
-- Gibt den aktuell in API.ws gespeicherten Websocket zurück
|
|
API.getWebsocket = function()
|
|
return API.ws
|
|
end
|
|
|
|
-- Gibt die aktuell in API.username und API.password gespeicherten Credentials im format username, password zurück
|
|
API.getCredentials = function()
|
|
return API.username, API.password
|
|
end
|
|
|
|
-- Sendet eine Nachricht an den Server
|
|
-- Message: Table das zu JSON serialisiert wird
|
|
API.sendMessage = function(message)
|
|
API.sendMessageRaw(API.ws, message)
|
|
|
|
end
|
|
|
|
API.sendMessageRaw = function(ws, message)
|
|
local jsonMessage = textutils.serialiseJSON(message)
|
|
ws.send(jsonMessage)
|
|
end
|
|
|
|
-- Wartet auf eine Nachricht vom Server
|
|
-- Timeout: Zeit die auf eine Nachricht geantwortet wird
|
|
-- Return: success (boolean), message (Table mit dem Inhalt der Message z.B. message.value1)
|
|
-- Wichtig: Die message.id muss überprüft werden
|
|
API.getMessage = function(timeout)
|
|
return API.getMessageRaw(API.ws, timeout)
|
|
end
|
|
|
|
API.getMessageRaw = function(ws, timeout)
|
|
local message = ws.receive(timeout)
|
|
if not message then
|
|
return false
|
|
end
|
|
return API.decodeMessage(message)
|
|
end
|
|
|
|
-- Decoded eine Nachricht vom Server indem erst das JSON entserialisiert wird und dann in ein Table gespeichert wird
|
|
-- Return: success (boolean), message (Table mit dem Inhalt der Message z.B. message.value1)
|
|
API.decodeMessage = function(message)
|
|
local success, decoded = pcall(textutils.unserialiseJSON, message)
|
|
|
|
if success then
|
|
local messageObj = setmetatable(decoded, {
|
|
__index = function(t, k)
|
|
return rawget(t, k)
|
|
end
|
|
})
|
|
|
|
return success, messageObj
|
|
end
|
|
|
|
return success
|
|
end
|
|
|
|
-- Setzt die standart Credentials für die Authentifizierung in API.username und API.password
|
|
API.setCredentials = function(username, password)
|
|
API.username = username
|
|
API.password = password
|
|
end
|
|
|
|
-- Wird benutzt um Benutzer mit dem server zu Authentifizieren (Credentials müssen vorher mit setCredentials gesetzt werden)
|
|
-- Response: "displayMessage" mit "auth.success" (Erfolg) oder "auth.fail" (Kein Erfolg) in value2
|
|
API.login = function()
|
|
API.loginRaw(API.ws, os.getComputerID(), API.username, API.password)
|
|
end
|
|
|
|
API.loginRaw = function(ws, id, username, password)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "authenticate",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
-- Wird benutzt um einen Benutzer account anzulegen (Credentials müssen vorher mit setCredentials gesetzt werden)
|
|
-- Response: Sendet "displayMessage" mit "register.success" (Erfolg) oder "register.fail.usernameTaken" (Kein Erfolg weil Benutzername besetzt) in value2
|
|
API.register = function()
|
|
API.registerRaw(API.ws, os.getComputerID(), API.username, API.password)
|
|
end
|
|
|
|
API.registerRaw = function(ws, id, username, password)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "register",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
-- Wird benutzt um den Benutzer auszuloggen
|
|
-- Response: Keine
|
|
API.logout = function()
|
|
API.logoutRaw(API.ws, os.getComputerID(), API.username, API.password)
|
|
end
|
|
|
|
API.logoutRaw = function(ws, id, username, password)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "logout",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
-- Wird benutzt um Währung (STEAMCOIN) an einen anderen, bereits existierenden account zu überweisen.
|
|
-- Response: Sendet "displayMessage" mit einer der unteren IDs in value2
|
|
--[[
|
|
pay.success: Zahlung Erfolgreich
|
|
pay.fail.negative_amount: Zahlung fehlgeschlagen, überweisungsmenge Negativ (Illegal)
|
|
pay.fail.orig_user_unknown: Zahlung fehlgeschlagen, ursprungsbenutzer unbekannt
|
|
pay.fail.unknown_dest: Zahlung fehlgeschlagen, Ziel der Zahlung inexistent
|
|
pay.fail.credentials: Zahlung fehlgeschlagen, Zahlung konnte nicht Authentifiziert werden
|
|
pay.fail.not_enough_money: Zahlung fehlgeschlagen, Benutzer hat nicht genügend geld (Pleite)
|
|
pay.fail.unknown_error: Unbekannter fehler aufgetreten, bitte Administration kontaktieren!
|
|
|
|
pay.received: Wird empfangen vom Ziel benutzer wenn die Zahlung erfolgreich war
|
|
]]--
|
|
API.pay = function(destination, amount)
|
|
API.payRaw(API.ws, os.getComputerID(), API.username, API.password, destination, amount)
|
|
end
|
|
|
|
API.payRaw = function(ws, id, username, password, destination, amount)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "pay",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = destination,
|
|
["value4"] = amount,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
|
|
-- Wird benutzt, um die anzahl an Nachichten in der Inbox abzufragen
|
|
-- Response: Sendet "displayMessage" mit value2: "message_count", value3: count (Int) zurück wobei count die Anzahl der Nachrichten ist
|
|
API.sendGetInboxPointer = function()
|
|
API.sendGetInboxPointerRaw(API.ws, os.getComputerID(), API.username, API.password)
|
|
end
|
|
|
|
API.sendGetInboxPointerRaw = function(ws, id, username, password)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "get_inbox",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = "cnt",
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
|
|
-- Wird benutzt um eine Nachicht aus der Inbox zu bekommen
|
|
-- Response: Sendet "inbox" mit value1: <INTEGER, messageId>; value2: <STRING, Message> zurück
|
|
API.sendGetInboxMessage = function(messageId)
|
|
API.sendGetInboxMessageRaw(API.ws, os.getComputerID(), API.username, API.password, messageId)
|
|
end
|
|
|
|
API.sendGetInboxMessageRaw = function(ws, id, username, password, messageId)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "get_inbox",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = messageId,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
|
|
-- Wird benutzt um eine nachicht in der Inbox als gelesen zu markieren und so zu Löschen
|
|
-- Response: Keine
|
|
API.markRead = function(messageId)
|
|
API.markReadRaw(API.ws, os.getComputerID(), API.username, API.password, messageId)
|
|
end
|
|
|
|
API.markReadRaw = function(ws, id, username, password, messageId)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "read_inbox",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = messageId,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
---PRIVATE MESSAGES START
|
|
|
|
API.sendGetPmInboxPointer = function()
|
|
API.sendGetPmInboxPointerRaw(API.ws, os.getComputerID(), API.username, API.password)
|
|
end
|
|
|
|
API.sendGetPmInboxPointerRaw = function(ws, id, username, password)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "get_pm_inbox",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = "cnt",
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
|
|
-- Wird benutzt um eine Nachicht aus der Inbox zu bekommen
|
|
-- Response: Sendet "inbox" mit value1: <INTEGER, messageId>; value2: <STRING, Message> zurück
|
|
API.sendGetPmInboxMessage = function(messageId)
|
|
API.sendGetPmInboxMessageRaw(API.ws, os.getComputerID(), API.username, API.password, messageId)
|
|
end
|
|
|
|
API.sendGetPmInboxMessageRaw = function(ws, id, username, password, messageId)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "get_pm_inbox",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = messageId,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
|
|
-- Wird benutzt um eine nachicht in der Inbox als gelesen zu markieren und so zu Löschen
|
|
-- Response: Keine
|
|
API.markPmRead = function(messageId)
|
|
API.markPmReadRaw(API.ws, os.getComputerID(), API.username, API.password, messageId)
|
|
end
|
|
|
|
API.markPmReadRaw = function(ws, id, username, password, messageId)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "read_pm_inbox",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = messageId,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
API.sendPmMessage = function(destination, message)
|
|
API.sendPmMessageRaw(API.ws, os.getComputerID(), API.username, API.password, destination, message)
|
|
end
|
|
|
|
API.sendPmMessageRaw = function(ws, id, username, password, destination, message)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "send_pm",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["value3"] = destination,
|
|
["value4"] = message,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
|
|
---PRIVATE MESSAGES END
|
|
|
|
|
|
|
|
|
|
-- Wird benutzt um den Aktuellen kontostand des Benutzers herauszufinden,
|
|
-- Response: Sendet "displayMessage" mit value1: <STRING, "You currently have {balance} Steam Coins in your Account!">, value2: "balance.sucess" oder "balance.fail.credentials" und value3: <INTEGER, balance> zurück
|
|
API.sendGetBalance = function()
|
|
API.sendGetBalanceRaw(API.ws, os.getComputerID(), API.username, API.password)
|
|
end
|
|
|
|
API.sendGetBalanceRaw = function(ws, id, username, password)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "get_balance",
|
|
["value1"] = username,
|
|
["value2"] = password,
|
|
["id"] = id
|
|
})
|
|
end
|
|
|
|
API.sendGetMOTD = function()
|
|
API.sendGetMOTDRaw(API.ws)
|
|
end
|
|
|
|
-- Wird benutzt um die Aktuelle MOTD anzufragen
|
|
-- Response: Sendet "motd" mit value1: <STRING, motd> zurück
|
|
API.sendGetMOTDRaw = function(ws)
|
|
API.sendMessageRaw(ws, {
|
|
["action"] = "motd"
|
|
})
|
|
end
|
|
|
|
|
|
return API |