Browse Source

[tinkoff] minor fixes

Innocenty Enikeew 8 years ago
parent
commit
674c67f673
1 changed files with 31 additions and 28 deletions
  1. 31 28
      plugins/tinkoff.lisp

+ 31 - 28
plugins/tinkoff.lisp

@@ -35,33 +35,34 @@
                (format stream "Tinkoff api error ~A: ~A" code message)))))
 
 (defun request (method &key params content retry)
-  (let* ((params (loop for (k . v) in (append (default-params) params) when v
-                    collect (cons (princ-to-string k) (princ-to-string v))))
-         (r (json-request (api-url method) :method (if content :POST :GET)
-                          :parameters params
-                          :content content)))
-    (if (string= "OK" (agets r "resultCode"))
-        (agets r "payload")
-        (let ((code (agets r "resultCode"))
-              (message (agets r "errorMessage")))
-          (if (and (not retry)
-                   *credentials-provider*
-                   (string-equal code "INSUFFICIENT_PRIVILEGES"))
-              (progn
-                (funcall *credentials-provider*
-                         (lambda (login password)
-                           (api/login login password)))
-                (request method :params params :content content :retry t))
-              (error 'api-error :code code :message message))))))
-
-(defun api/login (username password)
-  (let ((new-session (request "session")))
-    (prog1
-        (let* ((*session-id* new-session))
-          (request "sign_up" :params `(("username" . ,username)
-                                       ("password" . ,password)))
-          (request "level_up"))
-      (setf *session-id* new-session))))
+  (flet ((api/login (username password)
+           (let ((new-session (request "session")))
+             (prog1
+                 (let* ((*session-id* new-session))
+                   (request "sign_up" :params `(("username" . ,username)
+                                                ("password" . ,password)))
+                   (request "level_up"))
+               (setf *session-id* new-session)))))
+    (let* ((params (loop for (k . v) in (append (default-params) params) when v
+                      collect (cons (princ-to-string k) (princ-to-string v))))
+           (r (json-request (api-url method) :method (if content :POST :GET)
+                            :parameters params
+                            :content content)))
+      (if (string= "OK" (agets r "resultCode"))
+          (agets r "payload")
+          (let ((code (agets r "resultCode"))
+                (message (agets r "errorMessage")))
+            (if (and (not retry)
+                     *credentials-provider*
+                     (string-equal code "INSUFFICIENT_PRIVILEGES"))
+                (progn
+                  (funcall *credentials-provider*
+                           (lambda (login password)
+                             (api/login login password)))
+                  (request method :params params :content content :retry t))
+                (error 'api-error :code code :message message)))))))
+
+
 
 (defun api/accounts ()
   (request "accounts_flat"))
@@ -195,6 +196,7 @@
 
 (defun format-accounts (accounts)
   (with-output-to-string (s)
+    (princ "```" s)
     (loop for a in accounts
        when (agets a "moneyAmount" "value")
        do (format s "; balance ~A ~A = ~A~A ~A~%"
@@ -204,7 +206,8 @@
                   (if (equal "Credit" (agets a "accountType"))
                       (agets a "debtAmount" "value")
                       (agets a "moneyAmount" "value"))
-                  (agets a "moneyAmount" "currency" "name")))))
+                  (agets a "moneyAmount" "currency" "name")))
+        (princ "```" s)))
 
 (defcron process-tinkoff (:minute '(member 0 5 10 15 20 25 30 35 40 45 50 55))
   (dolist (chat-id (lists-get :tinkoff))