diff options
Diffstat (limited to 'internal/store/store.go')
| -rw-r--r-- | internal/store/store.go | 91 |
1 files changed, 47 insertions, 44 deletions
diff --git a/internal/store/store.go b/internal/store/store.go index ecc3854..8e9ab2b 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -159,66 +159,69 @@ func (s *Store) Close() error { return s.db.Close() } -// Entry is one captured request/response pair. +// Entry is one captured request/response pair. Never itself put on the +// IPC wire (see EntryDetail, which is) - tagged anyway for consistency +// with the rest of this package's now-uniformly-snake_case convention, +// and in case that ever changes. type Entry struct { - ID int64 - StartedAt time.Time - Duration time.Duration - Method string - Scheme string - Host string - Path string - StatusCode int // 0 if no response was received - RequestRaw []byte - ResponseRaw []byte // nil if no response was received - RequestExact bool // true if RequestRaw is wire-exact, false if reconstructed (e.g. HTTP/2) - ResponseExact bool + ID int64 `json:"id"` + StartedAt time.Time `json:"started_at"` + Duration time.Duration `json:"duration"` + Method string `json:"method"` + Scheme string `json:"scheme"` + Host string `json:"host"` + Path string `json:"path"` + StatusCode int `json:"status_code"` // 0 if no response was received + RequestRaw []byte `json:"request_raw"` + ResponseRaw []byte `json:"response_raw"` // nil if no response was received + RequestExact bool `json:"request_exact"` // true if RequestRaw is wire-exact, false if reconstructed (e.g. HTTP/2) + ResponseExact bool `json:"response_exact"` // Truncated is true when the corresponding *Raw field would have // been an exact capture but hit maxCaptureBytes and had bytes // dropped off the end - distinct from a false *Exact, which also // covers HTTP/2's inherently-reconstructed (never wire-exact to // begin with) captures. Only meaningful when the matching *Exact // field is false; a capture can't be both exact and truncated. - RequestTruncated bool - ResponseTruncated bool - Error string // network/transport error, if the request never got a response - Source string // "proxy" or "repeater" - Flagged bool + RequestTruncated bool `json:"request_truncated"` + ResponseTruncated bool `json:"response_truncated"` + Error string `json:"error"` // network/transport error, if the request never got a response + Source string `json:"source"` // "proxy" or "repeater" + Flagged bool `json:"flagged"` } // Summary is the lightweight metadata used for the history list view - // no request/response bodies. type Summary struct { - ID int64 - StartedAt time.Time - Duration time.Duration - Method string - Scheme string - Host string - Path string - StatusCode int - ReqSize int - RespSize int - Error string - Source string - Flagged bool + ID int64 `json:"id"` + StartedAt time.Time `json:"started_at"` + Duration time.Duration `json:"duration"` + Method string `json:"method"` + Scheme string `json:"scheme"` + Host string `json:"host"` + Path string `json:"path"` + StatusCode int `json:"status_code"` + ReqSize int `json:"req_size"` + RespSize int `json:"resp_size"` + Error string `json:"error"` + Source string `json:"source"` + Flagged bool `json:"flagged"` // Tags is every distinct plugin tag on this entry, comma-joined - // cheap enough to compute per row (a correlated subquery, see List/ // Search) that a plugin-tagged entry shows a badge in the history // list itself, not just in its detail view. - Tags string + Tags string `json:"tags"` } // EntryTag is one plugin-contributed marker on a history entry - see // the "tag_entry" IPC request and entry_tags' own schema comment for // what Plugin/Data mean. type EntryTag struct { - ID int64 - EntryID int64 - Plugin string - Tag string - Data string - CreatedAt time.Time + ID int64 `json:"id"` + EntryID int64 `json:"entry_id"` + Plugin string `json:"plugin"` + Tag string `json:"tag"` + Data string `json:"data"` + CreatedAt time.Time `json:"created_at"` } // AddEntryTag stores t and returns its assigned ID. @@ -785,12 +788,12 @@ func (s *Store) DeleteClientCert(id int64) error { // internal/proxy/websocket.go for why it's one row per frame rather than // per reassembled logical message. type WSMessage struct { - ID int64 - EntryID int64 - StartedAt time.Time - Direction string // "client_to_server" or "server_to_client" - Opcode int // RFC 6455 opcode: 1 text, 2 binary, 8 close, 9 ping, 10 pong - Payload []byte + ID int64 `json:"id"` + EntryID int64 `json:"entry_id"` + StartedAt time.Time `json:"started_at"` + Direction string `json:"direction"` // "client_to_server" or "server_to_client" + Opcode int `json:"opcode"` // RFC 6455 opcode: 1 text, 2 binary, 8 close, 9 ping, 10 pong + Payload []byte `json:"payload"` } // AddWSMessage stores one captured frame and returns its assigned ID. |