-- 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: ; value2: 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: ; value2: 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: , value2: "balance.sucess" oder "balance.fail.credentials" und value3: 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: zurück API.sendGetMOTDRaw = function(ws) API.sendMessageRaw(ws, { ["action"] = "motd" }) end return API