[bknr-cvs] hans changed trunk/projects/poll-postbank.lisp/

BKNR Commits bknr at bknr.net
Thu Apr 16 06:25:47 UTC 2009


Revision: 4380
Author: hans
URL: http://bknr.net/trac/changeset/4380

Send bank account updates through SMS

A   trunk/projects/poll-postbank.lisp/
A   trunk/projects/poll-postbank.lisp/poll-postbank.lisp

Added: trunk/projects/poll-postbank.lisp/poll-postbank.lisp
===================================================================
--- trunk/projects/poll-postbank.lisp/poll-postbank.lisp	                        (rev 0)
+++ trunk/projects/poll-postbank.lisp/poll-postbank.lisp	2009-04-16 06:25:46 UTC (rev 4380)
@@ -0,0 +1,35 @@
+
+(defun poll-postbank (kontonummer password)
+  (let ((headers (nth-value 2
+                            (drakma:http-request "https://banking.postbank.de/app/login.do"
+                                                 :method :post
+                                                 :parameters (list (cons "accountNumber" kontonummer)
+                                                                   (cons "pinNumber" password))))))
+    (cl-ppcre:register-groups-bind (jsessionid) (".*jsessionid=([^;]*)"
+                                                 (or (cdr (assoc :location headers))
+                                                     (error "no Location header found in response")))
+      (flexi-streams:octets-to-string
+       (drakma:http-request (format nil "https://banking.postbank.de/app/kontoumsatz.umsatz.init.do;jsessionid=~A?~
+                                         action=download&cache=true&konto=~A"
+                                    jsessionid kontonummer))))))
+
+(defun umsatz-xml (kontonummer password)
+  (cxml:with-xml-output (cxml:make-character-stream-sink *standard-output*)
+    (cxml:with-element "Kontostatus"
+      (let ((in-header t))
+        (cl-ppcre:do-matches-as-strings (line ".*(?>\\r?\\n)" (poll-postbank kontonummer password))
+          (cond
+            (in-header
+             (cond
+               ((cl-ppcre:scan "^Datum" line)
+                (setf in-header nil))))
+            (t
+             (cxml:with-element "Umsatz"
+               (loop
+                  for name in '("Datum" "Wertstellung" "Art" "Buchungshinweis" "Auftraggeber" "Empfaenger" "Betrag" "Saldo")
+                  for value in (cl-ppcre:split "\\t" line)
+                  do (cxml:with-element name
+                       (cxml:text value)))))))))))
+
+(defun umsatz-plist (kontonummer password)
+  )
\ No newline at end of file





More information about the Bknr-cvs mailing list