aboutsummaryrefslogtreecommitdiff
path: root/app/account.lisp
blob: 7d4b749c17c9fe66a2d19d5490d340215610f104 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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)))