feat: add irc numerics package, deduplicate constants, fix dead code
All checks were successful
check / check (push) Successful in 1m5s

- Create internal/irc/ package with all IRC numeric reply codes (RFC 1459/2812)
  and command string constants as the single source of truth
- Replace all 69+ bare numeric string literals in api.go with named constants
  (e.g. irc.RplWelcome, irc.ErrNoSuchChannel)
- Add 'code' (int) and named 'command' (e.g. RPL_YOURHOST) fields to IRC
  message JSON replies via irc.Name() lookup in scanMessages
- Deduplicate command constants: remove local definitions from api.go,
  cmd/neoirc-cli/main.go, and cmd/neoirc-cli/api/client.go; all now import
  from internal/irc
- Fix dead code: remove handleListCmd/handleWhoCmd/handleWhoisCmd/
  sendWhoisNumerics that were unreachable due to dispatchCommand routing
  LIST/WHO/WHOIS to dispatchInfoCommand before dispatchQueryCommand.
  Route these commands to dispatchQueryCommand which has the improved
  implementations (e.g. ListAllChannelsWithCounts single-query vs N+1)
- Update enqueueNumeric and respondIRCError signatures from string to int
- Update test helper findNumeric to check the new 'code' JSON field

Closes #52
This commit is contained in:
clawbot
2026-03-09 15:49:29 -07:00
parent 5efb4b6949
commit 7bbd6de73a
7 changed files with 307 additions and 361 deletions

View File

@@ -12,6 +12,7 @@ import (
"net/http"
"net/http/httptest"
"path/filepath"
"strconv"
"strings"
"sync"
"testing"
@@ -467,8 +468,11 @@ func findNumeric(
msgs []map[string]any,
numeric string,
) bool {
want, _ := strconv.Atoi(numeric)
for _, msg := range msgs {
if msg[commandKey] == numeric {
code, ok := msg["code"].(float64)
if ok && int(code) == want {
return true
}
}