Add CHATHISTORY LATEST support
This patch adds a bit more compliance to the chathistory IRCv3 specification.
This commit is contained in:
parent
cec335ee9c
commit
4831b61186
@ -2380,7 +2380,7 @@ func (dc *downstreamConn) handleMessageRegistered(ctx context.Context, msg *irc.
|
||||
var target, limitStr string
|
||||
var boundsStr [2]string
|
||||
switch subcommand {
|
||||
case "AFTER", "BEFORE":
|
||||
case "AFTER", "BEFORE", "LATEST":
|
||||
if err := parseMessageParams(msg, nil, &target, &boundsStr[0], &limitStr); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -2399,7 +2399,7 @@ func (dc *downstreamConn) handleMessageRegistered(ctx context.Context, msg *irc.
|
||||
return err
|
||||
}
|
||||
default:
|
||||
// TODO: support LATEST, AROUND
|
||||
// TODO: support AROUND
|
||||
return ircError{&irc.Message{
|
||||
Command: "FAIL",
|
||||
Params: []string{"CHATHISTORY", "INVALID_PARAMS", subcommand, "Unknown command"},
|
||||
@ -2429,7 +2429,9 @@ func (dc *downstreamConn) handleMessageRegistered(ctx context.Context, msg *irc.
|
||||
// TODO: support msgid criteria
|
||||
var bounds [2]time.Time
|
||||
bounds[0] = parseChatHistoryBound(boundsStr[0])
|
||||
if bounds[0].IsZero() {
|
||||
if subcommand == "LATEST" && boundsStr[0] == "*" {
|
||||
bounds[0] = time.Now();
|
||||
} else if bounds[0].IsZero() {
|
||||
return ircError{&irc.Message{
|
||||
Command: "FAIL",
|
||||
Params: []string{"CHATHISTORY", "INVALID_PARAMS", subcommand, boundsStr[0], "Invalid first bound"},
|
||||
@ -2458,7 +2460,7 @@ func (dc *downstreamConn) handleMessageRegistered(ctx context.Context, msg *irc.
|
||||
|
||||
var history []*irc.Message
|
||||
switch subcommand {
|
||||
case "BEFORE":
|
||||
case "BEFORE", "LATEST":
|
||||
history, err = store.LoadBeforeTime(ctx, &network.Network, entity, bounds[0], time.Time{}, limit, eventPlayback)
|
||||
case "AFTER":
|
||||
history, err = store.LoadAfterTime(ctx, &network.Network, entity, bounds[0], time.Now(), limit, eventPlayback)
|
||||
|
Loading…
Reference in New Issue
Block a user