fix: implement source filter for /messages and /messages/new endpoints

The ?source= query parameter was documented but never implemented.
Both endpoints now properly filter by source when specified.
This commit is contained in:
James 2026-02-07 00:58:19 -05:00
parent 7cef0dee97
commit d8a99b5bd2
1 changed files with 20 additions and 0 deletions

20
main.go
View File

@ -279,6 +279,18 @@ func handleMessages(w http.ResponseWriter, r *http.Request) {
return return
} }
// Filter by source if specified
sourceFilter := r.URL.Query().Get("source")
if sourceFilter != "" {
var filtered []UnifiedMessage
for _, msg := range messages {
if msg.Source == sourceFilter {
filtered = append(filtered, msg)
}
}
messages = filtered
}
json.NewEncoder(w).Encode(messages) json.NewEncoder(w).Encode(messages)
} }
@ -294,9 +306,17 @@ func handleMessagesNew(w http.ResponseWriter, r *http.Request) {
return return
} }
// Filter by source if specified
sourceFilter := r.URL.Query().Get("source")
// Filter by orchestration state and record new messages // Filter by orchestration state and record new messages
var filtered []UnifiedMessage var filtered []UnifiedMessage
for _, msg := range messages { for _, msg := range messages {
// Skip if source filter is set and doesn't match
if sourceFilter != "" && msg.Source != sourceFilter {
continue
}
// Record that we've seen this message // Record that we've seen this message
source, sourceID, _ := parseMessageID(msg.ID) source, sourceID, _ := parseMessageID(msg.ID)
orch.RecordSeen(msg.ID, source, sourceID, "INBOX") orch.RecordSeen(msg.ID, source, sourceID, "INBOX")