From 22f287f28705e240c1430b803a36306e59465087 Mon Sep 17 00:00:00 2001 From: Martin Puppe Date: Fri, 27 Oct 2017 14:35:33 +0200 Subject: [PATCH] First functioning version --- Uberspace.lua | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/Uberspace.lua b/Uberspace.lua index e69de29..92b4902 100644 --- a/Uberspace.lua +++ b/Uberspace.lua @@ -0,0 +1,90 @@ +WebBanking{version = 1.00, + url = 'https://uberspace.de/login', + services = {'Uberspace.de'}} + +function SupportsBank (protocol, bankCode) + return bankCode == 'Uberspace.de' and protocol == ProtocolWebBanking +end + +local usConnection = Connection() +local usUsername + +function InitializeSession (protocol, bankCode, username, username2, + password, username3) + -- Login. + usUsername = username + + html = HTML(usConnection:get('https://uberspace.de/login')) + html:xpath('//input[@name="login"]'):attr('value', username) + html:xpath('//input[@name="password"]'):attr('value', password) + + html = HTML( + usConnection:request(html:xpath('//input[@name="submit"]'):click())) + if html:xpath('//input[@name="login"]'):length() > 0 then + -- We are still at the login screen. + return "Failed to log in. Please check your user credentials." + end +end + +function ListAccounts (knownAccounts) + -- Return array of accounts. + local account = { + name = 'Uberspace ' .. usUsername, + accountNumber = '1', + portfolio = false, + currency = 'EUR', + type = AccountTypeSavings + } + return {account} +end + +function RefreshAccount (account, since) + function ParseAmount (amountString) + local pattern = '(%-?%d+),(%d%d)' + local euro, cent = amountString:match(pattern) + euro = tonumber(euro) + cent = tonumber(cent) / 100 + if euro < 0 then + return euro - cent + else + return euro + cent + end + end + + html = HTML(usConnection:get( + 'https://uberspace.de/dashboard/accounting')) + tableRows = html:xpath( + '//*[@id="transactions"]//tr[count(td)=3][position()