mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 02:00:11 -08:00
update metadata corresponding to spec edits (#2282)
* spec update: metadata keys are lowercase * add batch parameter to metadata batches * fix: connecting clients receive METADATA, not RPL_KEYVALUE * spec update: send RPL_METADATASUBS in a metadata-subs batch * move some helpers * bump irctest to forked hash This is https://github.com/progval/irctest/pull/314 but I don't want to couple the merges * fix: empty value is valid * fix: deleting a nonexistent key gets a FAIL
This commit is contained in:
parent
cca400de73
commit
8798676ae9
6 changed files with 43 additions and 26 deletions
|
|
@ -3195,14 +3195,15 @@ func metadataRegisteredHandler(client *Client, config *Config, subcommand string
|
|||
// echo the value to the client whether or not there was a real update
|
||||
rb.Add(nil, server.name, RPL_KEYVALUE, client.Nick(), target, key, "*", value)
|
||||
if updated {
|
||||
notifySubscribers(server, rb.session, targetObj, target, key, value)
|
||||
notifySubscribers(server, rb.session, targetObj, target, key, value, true)
|
||||
}
|
||||
} else {
|
||||
if updated := targetObj.DeleteMetadata(key); updated {
|
||||
notifySubscribers(server, rb.session, targetObj, target, key, "")
|
||||
notifySubscribers(server, rb.session, targetObj, target, key, "", false)
|
||||
rb.Add(nil, server.name, RPL_KEYNOTSET, client.Nick(), target, key, client.t("Key deleted"))
|
||||
} else {
|
||||
rb.Add(nil, server.name, "FAIL", "METADATA", "KEY_NOT_SET", utils.SafeErrorParam(key), client.t("Metadata key not set"))
|
||||
}
|
||||
// acknowledge to the client whether or not there was a real update
|
||||
rb.Add(nil, server.name, RPL_KEYNOTSET, client.Nick(), target, key, client.t("Key deleted"))
|
||||
}
|
||||
|
||||
case "get":
|
||||
|
|
@ -3211,7 +3212,7 @@ func metadataRegisteredHandler(client *Client, config *Config, subcommand string
|
|||
return
|
||||
}
|
||||
|
||||
batchId := rb.StartNestedBatch("metadata")
|
||||
batchId := rb.StartNestedBatch("metadata", target)
|
||||
defer rb.EndNestedBatch(batchId)
|
||||
|
||||
for _, key := range params[2:] {
|
||||
|
|
@ -3355,6 +3356,9 @@ func metadataSubsHandler(client *Client, subcommand string, params []string, rb
|
|||
|
||||
subs := rb.session.MetadataSubscriptions()
|
||||
|
||||
batchID := rb.StartNestedBatch("metadata-subs")
|
||||
defer rb.EndNestedBatch(batchID)
|
||||
|
||||
chunked := utils.ChunkifyParams(maps.Keys(subs), lineLength)
|
||||
for _, line := range chunked {
|
||||
params := append([]string{client.Nick()}, line...)
|
||||
|
|
@ -3364,16 +3368,6 @@ func metadataSubsHandler(client *Client, subcommand string, params []string, rb
|
|||
return false
|
||||
}
|
||||
|
||||
func playMetadataList(rb *ResponseBuffer, nick, target string, values map[string]string) {
|
||||
batchId := rb.StartNestedBatch("metadata")
|
||||
defer rb.EndNestedBatch(batchId)
|
||||
|
||||
for key, val := range values {
|
||||
visibility := "*"
|
||||
rb.Add(nil, rb.session.client.server.name, RPL_KEYVALUE, nick, target, key, visibility, val)
|
||||
}
|
||||
}
|
||||
|
||||
// REHASH
|
||||
func rehashHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
|
||||
nick := client.Nick()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue