aboutsummaryrefslogtreecommitdiff
path: root/app/account.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'app/account.lisp')
-rw-r--r--app/account.lisp93
1 files changed, 93 insertions, 0 deletions
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 "<USERNAME> <PASSWORD>"
+ :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 <you>`"
+ :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 "<OLDPW> <NEWPW>"
+ :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 "<TOKEN> <NEW-USERNAME> <NEW-PASSWORD>"
+ :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)))