From 71637c96bd277364306abebf4add4e34a93325ff Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Fri, 5 Aug 2022 12:45:51 -0500 Subject: [add] account interface, updated asd file --- app/account.lisp | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 app/account.lisp (limited to 'app/account.lisp') diff --git a/app/account.lisp b/app/account.lisp new file mode 100644 index 0000000..7d4b749 --- /dev/null +++ b/app/account.lisp @@ -0,0 +1,93 @@ +;;;; account.lisp + +(in-package :oneliners.cli.app ) + + +(defhandler account/login/handler (username password) + (ol:login username password)) + +(defun account/login/command () + (cli:make-command + :name "login" + :usage " " + :description "obtains an API access key and stores it locally" + :handler #'account/login/command)) + +(defun account/logout/handler (cmd) + (declare (ignore cmd)) + (ol:revoke-access)) + +(defun account/logout/command () + (cli:make-command + :name "logout" + :description "revokes access for the currently stored key" + :handler #'account/logout/command)) + +(defun account/signature/handler (cmd) + (declare (ignore cmd)) + (ol:change-signature)) + +(defun account/signature/command () + (cli:make-command + :name "signature" + :description "a signature is text users seen when they do `ol account whois `" + :handler #'account/signature/handler)) + +(defhandler account/password/handler (old new) + (ol:change-pw old new new)) + +(defun account/password/command () + (cli:make-command + :name "password" + :usage " " + :description "change your password" + :handler #'account/password/handler)) + +(defhandler account/whois/handler (nick) + (ol:show-contributor nick)) + +(defun account/whois/command () + (cli:make-command + :name "whois" + :description "View the user's signature, if they have one." + :handler #'account/whois/command)) + +(defun account/invite/handler (cmd) + (declare (ignore cmd)) + (ol:request-invite-code)) + +(defun account/invite/command () + (cli:make-command + :name "invite" + :description "request an invite token from the server" + :handler #'account/invite/handler)) + +(defhandler account/redeem/handler (token name password) + (ol:redeem-invite token name password)) + +(defun account/redeem/command () + (cli:make-command + :name "redeem" + :usage " " + :handler #'account/redeem/handler + :description "redeem an invite token to create a new contributor account")) + +(defun account/subcommands () + (list + (account/login/command) + (account/logout/command) + (account/signature/command) + (account/password/command) + (account/whois/command) + (account/invite/command) + (account/redeem/command))) + +(defun account/handler (cmd) + (cli:print-usage-and-exit cmd t)) + +(defun account/command () + (cli:make-command + :name "account" + :description "commands having to do with user accounts" + :handler #'account/handler + :sub-commands (account/subcommands))) -- cgit v1.2.3