diff options
-rw-r--r-- | build-app.lisp | 2 | ||||
-rw-r--r-- | src/lib.lisp | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/build-app.lisp b/build-app.lisp index bd51d54..c2f79ba 100644 --- a/build-app.lisp +++ b/build-app.lisp @@ -102,6 +102,8 @@ than the users." ((getopt :long-name "login") (destructuring-bind (user pass) arguments (cli::login user pass))) + ((getopt :long-name "invite") + (cli::request-invite-code)) (arguments ;; when the first argument is a number, try run a oneliner (a:when-let (hist-number (parse-integer (first arguments) :junk-allowed t)) diff --git a/src/lib.lisp b/src/lib.lisp index 720ff85..a54cf7f 100644 --- a/src/lib.lisp +++ b/src/lib.lisp @@ -63,8 +63,28 @@ (when (uiop:file-exists-p (last-search-file)) (nth n (uiop:read-file-form (last-search-file))))) +(defun make-cookie-from-api-token () + (a:when-let (token (api-token)) + (let ((cookies (cl-cookie:make-cookie-jar))) + (cl-cookie:merge-cookies + cookies + (list + (cl-cookie:make-cookie + :name "olauthtoken" + :value token + :path "/" + :domain "localhost"))) + cookies))) + ;;; API REQUEST FUNCTIONS +(defun request-invite-code () + (ensure-config) + (api:request-with + (:host (host) + :cookies (make-cookie-from-api-token)) + (format t "Invite Code: ~a~%" (getf (jonathan:parse (api:post--make-invite)) :code)))) + (defun login (user pass) (ensure-config) (a:when-let (response (jonathan:parse |