Control socket: specify users by token hash
このコミットが含まれているのは:
コミット
50d03ba8d5
|
@ -62,11 +62,16 @@ class ArgsInt(Args):
|
||||||
return self.spec, 1, [n]
|
return self.spec, 1, [n]
|
||||||
|
|
||||||
class ArgsString(Args):
|
class ArgsString(Args):
|
||||||
|
def transform_string(self, string):
|
||||||
|
return string
|
||||||
|
|
||||||
def consume(self, words, index):
|
def consume(self, words, index):
|
||||||
try:
|
try:
|
||||||
string = words[index]
|
string = words[index]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
raise NoParse(f'incomplete: expected string')
|
raise NoParse(f'incomplete: expected string')
|
||||||
|
else:
|
||||||
|
string = self.transform_string(string)
|
||||||
return self.spec, 1, [string]
|
return self.spec, 1, [string]
|
||||||
|
|
||||||
class ArgsJson(Args):
|
class ArgsJson(Args):
|
||||||
|
|
|
@ -20,10 +20,19 @@ class ArgsJsonTokenUser(ArgsJsonString):
|
||||||
raise NoParse(f'no user with token {token!r}')
|
raise NoParse(f'no user with token {token!r}')
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
class ArgsJsonHashUser(ArgsString):
|
||||||
|
def transform_string(self, token_hash):
|
||||||
|
for user in USERS:
|
||||||
|
if user['token_hash'] == token_hash:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise NoParse(f'no user with token_hash {token_hash!r}')
|
||||||
|
return user
|
||||||
|
|
||||||
def ArgsUser(spec):
|
def ArgsUser(spec):
|
||||||
return Str({
|
return Str({
|
||||||
'token': ArgsJsonTokenUser(spec),
|
'token': ArgsJsonTokenUser(spec),
|
||||||
#'hash': ArgsJsonHashUser(spec),
|
'hash': ArgsJsonHashUser(spec),
|
||||||
})
|
})
|
||||||
|
|
||||||
async def cmd_user_help():
|
async def cmd_user_help():
|
||||||
|
@ -31,19 +40,18 @@ async def cmd_user_help():
|
||||||
response = (
|
response = (
|
||||||
'Usage: user [show | attr USER | get USER ATTR | set USER ATTR VALUE]\n'
|
'Usage: user [show | attr USER | get USER ATTR | set USER ATTR VALUE]\n'
|
||||||
'Commands:\n'
|
'Commands:\n'
|
||||||
' user [show].......................show all users\' tokens\n'
|
' user [show]...................show all users\' tokens\n'
|
||||||
' user attr USER....................show names of a user\'s attributes\n'
|
' user attr USER................show names of a user\'s attributes\n'
|
||||||
' user get USER ATTR................show an attribute of a user\n'
|
' user get USER ATTR............show an attribute of a user\n'
|
||||||
' user set USER ATTR................set an attribute of a user\n'
|
' user set USER ATTR............set an attribute of a user\n'
|
||||||
' user eyes USER [show].............show a user\'s active video responses\n'
|
' user eyes USER [show].........show a user\'s active video responses\n'
|
||||||
' user eyes USER delete EYES_ID.....end a video response to a user\n'
|
' user eyes USER delete EYES_ID.end a video response to a user\n'
|
||||||
'Definitions:\n'
|
'Definitions:\n'
|
||||||
#' USER..............................={token TOKEN | hash HASH}\n'
|
' USER..........................={token TOKEN | hash HASH}\n'
|
||||||
' USER..............................=token TOKEN\n'
|
' TOKEN.........................a token, json string\n'
|
||||||
' TOKEN..............................a token, json string\n'
|
' HASH..........................a token hash\n'
|
||||||
#' HASH..............................a token hash\n'
|
' ATTR..........................a user attribute, re:[a-z0-9_]+\n'
|
||||||
' ATTR...............................a user attribute, re:[a-z0-9_]+\n'
|
' EYES_ID.......................a user\'s eyes_id, base 10 integer\n'
|
||||||
' EYES_ID............................a user\'s eyes_id, base 10 integer\n'
|
|
||||||
)
|
)
|
||||||
return normal, response
|
return normal, response
|
||||||
|
|
||||||
|
|
読み込み中…
新しいイシューから参照