Files
IRC-kosmi-relay/cmd/extract-queries/main.go
cottongin d314193540 Fix stale cmd/ scripts, export LoginWithChromedp, clean up vet warnings
Update 5 cmd/ test utilities that referenced APIs that drifted after
bridge refactors (NewBrowserAuthManager, bridge.NewConfig, changed
function signatures). Rewrite test-kosmi and test-native to use
NewGraphQLWSClient directly. Export LoginWithChromedp for use by cmd
scripts. Fix redundant-newline vet warnings across 5 cmd/ files.
Remove unreachable code and replace deprecated ioutil calls in
bridge/helper/lottie_convert.go.

Made-with: Cursor
2026-04-05 05:49:26 -04:00

75 lines
1.6 KiB
Go

package main
import (
"encoding/json"
"fmt"
"os"
"strings"
)
type HAR struct {
Log struct {
Entries []struct {
WebSocketMessages []struct {
Type string `json:"type"`
Data string `json:"data"`
} `json:"_webSocketMessages"`
} `json:"entries"`
} `json:"log"`
}
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: extract-queries <har-file>")
os.Exit(1)
}
data, err := os.ReadFile(os.Args[1])
if err != nil {
fmt.Printf("Failed to read file: %v\n", err)
os.Exit(1)
}
var har HAR
if err := json.Unmarshal(data, &har); err != nil {
fmt.Printf("Failed to parse HAR: %v\n", err)
os.Exit(1)
}
fmt.Println("\n=== WebSocket Messages ===")
for _, entry := range har.Log.Entries {
for i, msg := range entry.WebSocketMessages {
if msg.Type == "send" {
var payload map[string]interface{}
if err := json.Unmarshal([]byte(msg.Data), &payload); err != nil {
continue
}
msgType, _ := payload["type"].(string)
fmt.Printf("[%d] Type: %s\n", i, msgType)
if msgType == "subscribe" {
if p, ok := payload["payload"].(map[string]interface{}); ok {
if opName, ok := p["operationName"].(string); ok {
fmt.Printf(" Operation: %s\n", opName)
}
if query, ok := p["query"].(string); ok {
// Pretty print the query
query = strings.ReplaceAll(query, "\\n", "\n")
if len(query) > 500 {
fmt.Printf(" Query:\n%s\n [...truncated...]\n\n", query[:500])
} else {
fmt.Printf(" Query:\n%s\n\n", query)
}
}
}
} else {
fmt.Println()
}
}
}
}
}