refactor(backend):remove legacy message wrapping (#854)
* refactor(backend):remove legacy message wrapping & few backend-only messages
This commit is contained in:
parent
76296f65f6
commit
e861bd9641
20 changed files with 450 additions and 796 deletions
|
|
@ -62,7 +62,7 @@ func main() {
|
|||
messages.MsgUserID, messages.MsgUserAnonymousID, messages.MsgClickEvent,
|
||||
messages.MsgIntegrationEvent, messages.MsgPerformanceTrackAggr,
|
||||
messages.MsgJSException, messages.MsgResourceTiming,
|
||||
messages.MsgRawCustomEvent, messages.MsgCustomIssue, messages.MsgFetch, messages.MsgGraphQL,
|
||||
messages.MsgCustomEvent, messages.MsgCustomIssue, messages.MsgFetch, messages.MsgGraphQL,
|
||||
messages.MsgStateAction, messages.MsgSetInputTarget, messages.MsgSetInputValue, messages.MsgCreateDocument,
|
||||
messages.MsgMouseClick, messages.MsgSetPageLocation, messages.MsgPageLoadTiming, messages.MsgPageRenderTiming}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"openreplay/backend/pkg/messages"
|
||||
)
|
||||
|
||||
type FetchEventFTS struct {
|
||||
type FetchFTS struct {
|
||||
Method string `json:"method"`
|
||||
URL string `json:"url"`
|
||||
Request string `json:"request"`
|
||||
|
|
@ -36,7 +36,7 @@ type PageEventFTS struct {
|
|||
TimeToInteractive uint64 `json:"time_to_interactive"`
|
||||
}
|
||||
|
||||
type GraphQLEventFTS struct {
|
||||
type GraphQLFTS struct {
|
||||
OperationKind string `json:"operation_kind"`
|
||||
OperationName string `json:"operation_name"`
|
||||
Variables string `json:"variables"`
|
||||
|
|
@ -57,17 +57,7 @@ func (s *Saver) sendToFTS(msg messages.Message, sessionID uint64) {
|
|||
switch m := msg.(type) {
|
||||
// Common
|
||||
case *messages.Fetch:
|
||||
event, err = json.Marshal(FetchEventFTS{
|
||||
Method: m.Method,
|
||||
URL: m.URL,
|
||||
Request: m.Request,
|
||||
Response: m.Response,
|
||||
Status: m.Status,
|
||||
Timestamp: m.Timestamp,
|
||||
Duration: m.Duration,
|
||||
})
|
||||
case *messages.FetchEvent:
|
||||
event, err = json.Marshal(FetchEventFTS{
|
||||
event, err = json.Marshal(FetchFTS{
|
||||
Method: m.Method,
|
||||
URL: m.URL,
|
||||
Request: m.Request,
|
||||
|
|
@ -97,14 +87,7 @@ func (s *Saver) sendToFTS(msg messages.Message, sessionID uint64) {
|
|||
TimeToInteractive: m.TimeToInteractive,
|
||||
})
|
||||
case *messages.GraphQL:
|
||||
event, err = json.Marshal(GraphQLEventFTS{
|
||||
OperationKind: m.OperationKind,
|
||||
OperationName: m.OperationName,
|
||||
Variables: m.Variables,
|
||||
Response: m.Response,
|
||||
})
|
||||
case *messages.GraphQLEvent:
|
||||
event, err = json.Marshal(GraphQLEventFTS{
|
||||
event, err = json.Marshal(GraphQLFTS{
|
||||
OperationKind: m.OperationKind,
|
||||
OperationName: m.OperationName,
|
||||
Variables: m.Variables,
|
||||
|
|
|
|||
|
|
@ -38,12 +38,12 @@ func (mi *Saver) InsertMessage(msg Message) error {
|
|||
case *PageEvent:
|
||||
mi.sendToFTS(msg, sessionID)
|
||||
return mi.pg.InsertWebPageEvent(sessionID, m)
|
||||
case *FetchEvent:
|
||||
case *Fetch:
|
||||
mi.sendToFTS(msg, sessionID)
|
||||
return mi.pg.InsertWebFetchEvent(sessionID, m)
|
||||
case *GraphQLEvent:
|
||||
return mi.pg.InsertWebFetch(sessionID, m)
|
||||
case *GraphQL:
|
||||
mi.sendToFTS(msg, sessionID)
|
||||
return mi.pg.InsertWebGraphQLEvent(sessionID, m)
|
||||
return mi.pg.InsertWebGraphQL(sessionID, m)
|
||||
case *JSException:
|
||||
return mi.pg.InsertWebJSException(m)
|
||||
case *IntegrationEvent:
|
||||
|
|
|
|||
8
backend/pkg/db/cache/messages-web.go
vendored
8
backend/pkg/db/cache/messages-web.go
vendored
|
|
@ -99,7 +99,7 @@ func (c *PGCache) InsertSessionReferrer(sessionID uint64, referrer string) error
|
|||
return c.Conn.InsertSessionReferrer(sessionID, referrer)
|
||||
}
|
||||
|
||||
func (c *PGCache) InsertWebFetchEvent(sessionID uint64, e *FetchEvent) error {
|
||||
func (c *PGCache) InsertWebFetch(sessionID uint64, e *Fetch) error {
|
||||
session, err := c.Cache.GetSession(sessionID)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -108,10 +108,10 @@ func (c *PGCache) InsertWebFetchEvent(sessionID uint64, e *FetchEvent) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Conn.InsertWebFetchEvent(sessionID, session.ProjectID, project.SaveRequestPayloads, e)
|
||||
return c.Conn.InsertWebFetch(sessionID, session.ProjectID, project.SaveRequestPayloads, e)
|
||||
}
|
||||
|
||||
func (c *PGCache) InsertWebGraphQLEvent(sessionID uint64, e *GraphQLEvent) error {
|
||||
func (c *PGCache) InsertWebGraphQL(sessionID uint64, e *GraphQL) error {
|
||||
session, err := c.Cache.GetSession(sessionID)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -120,7 +120,7 @@ func (c *PGCache) InsertWebGraphQLEvent(sessionID uint64, e *GraphQLEvent) error
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return c.Conn.InsertWebGraphQLEvent(sessionID, session.ProjectID, project.SaveRequestPayloads, e)
|
||||
return c.Conn.InsertWebGraphQL(sessionID, session.ProjectID, project.SaveRequestPayloads, e)
|
||||
}
|
||||
|
||||
func (c *PGCache) InsertWebCustomEvent(sessionID uint64, e *CustomEvent) error {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ type Conn struct {
|
|||
customEvents Bulk
|
||||
webPageEvents Bulk
|
||||
webInputEvents Bulk
|
||||
webGraphQLEvents Bulk
|
||||
webGraphQL Bulk
|
||||
sessionUpdates map[uint64]*sessionUpdates
|
||||
batchQueueLimit int
|
||||
batchSizeLimit int
|
||||
|
|
@ -144,7 +144,7 @@ func (conn *Conn) initBulks() {
|
|||
if err != nil {
|
||||
log.Fatalf("can't create webPageEvents bulk")
|
||||
}
|
||||
conn.webGraphQLEvents, err = NewBulk(conn.c,
|
||||
conn.webGraphQL, err = NewBulk(conn.c,
|
||||
"events.graphql",
|
||||
"(session_id, timestamp, message_id, name, request_body, response_body)",
|
||||
"($%d, $%d, $%d, left($%d, 2700), $%d, $%d)",
|
||||
|
|
@ -214,8 +214,8 @@ func (conn *Conn) sendBulks() {
|
|||
if err := conn.webInputEvents.Send(); err != nil {
|
||||
log.Printf("webInputEvents bulk send err: %s", err)
|
||||
}
|
||||
if err := conn.webGraphQLEvents.Send(); err != nil {
|
||||
log.Printf("webGraphQLEvents bulk send err: %s", err)
|
||||
if err := conn.webGraphQL.Send(); err != nil {
|
||||
log.Printf("webGraphQL bulk send err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,9 +9,13 @@ import (
|
|||
)
|
||||
|
||||
func (conn *Conn) InsertWebCustomEvent(sessionID uint64, projectID uint32, e *CustomEvent) error {
|
||||
err := conn.InsertCustomEvent(sessionID, e.Timestamp,
|
||||
truncSqIdx(e.MessageID),
|
||||
e.Name, e.Payload)
|
||||
err := conn.InsertCustomEvent(
|
||||
sessionID,
|
||||
uint64(e.Meta().Timestamp),
|
||||
truncSqIdx(e.Meta().Index),
|
||||
e.Name,
|
||||
e.Payload,
|
||||
)
|
||||
if err == nil {
|
||||
conn.insertAutocompleteValue(sessionID, projectID, "CUSTOM", e.Name)
|
||||
}
|
||||
|
|
@ -144,7 +148,7 @@ func (conn *Conn) InsertWebErrorEvent(sessionID uint64, projectID uint32, e *typ
|
|||
return
|
||||
}
|
||||
|
||||
func (conn *Conn) InsertWebFetchEvent(sessionID uint64, projectID uint32, savePayload bool, e *FetchEvent) error {
|
||||
func (conn *Conn) InsertWebFetch(sessionID uint64, projectID uint32, savePayload bool, e *Fetch) error {
|
||||
var request, response *string
|
||||
if savePayload {
|
||||
request = &e.Request
|
||||
|
|
@ -169,7 +173,7 @@ func (conn *Conn) InsertWebFetchEvent(sessionID uint64, projectID uint32, savePa
|
|||
$12, $13
|
||||
) ON CONFLICT DO NOTHING`
|
||||
conn.batchQueue(sessionID, sqlRequest,
|
||||
sessionID, e.Timestamp, truncSqIdx(e.MessageID),
|
||||
sessionID, e.Meta().Timestamp, truncSqIdx(e.Meta().Index),
|
||||
e.URL, host, path, query,
|
||||
request, response, e.Status, url.EnsureMethod(e.Method),
|
||||
e.Duration, e.Status < 400,
|
||||
|
|
@ -181,13 +185,13 @@ func (conn *Conn) InsertWebFetchEvent(sessionID uint64, projectID uint32, savePa
|
|||
return nil
|
||||
}
|
||||
|
||||
func (conn *Conn) InsertWebGraphQLEvent(sessionID uint64, projectID uint32, savePayload bool, e *GraphQLEvent) error {
|
||||
func (conn *Conn) InsertWebGraphQL(sessionID uint64, projectID uint32, savePayload bool, e *GraphQL) error {
|
||||
var request, response *string
|
||||
if savePayload {
|
||||
request = &e.Variables
|
||||
response = &e.Response
|
||||
}
|
||||
if err := conn.webGraphQLEvents.Append(sessionID, e.Timestamp, truncSqIdx(e.MessageID), e.OperationName, request, response); err != nil {
|
||||
if err := conn.webGraphQL.Append(sessionID, e.Meta().Timestamp, truncSqIdx(e.Meta().Index), e.OperationName, request, response); err != nil {
|
||||
log.Printf("insert web graphQL event err: %s", err)
|
||||
}
|
||||
conn.insertAutocompleteValue(sessionID, projectID, "GRAPHQL", e.OperationName)
|
||||
|
|
|
|||
|
|
@ -69,13 +69,6 @@ func (b *EventMapper) Handle(message Message, messageID uint64, timestamp uint64
|
|||
Type: getResourceType(msg.Initiator, msg.URL),
|
||||
Success: msg.Duration != 0,
|
||||
}
|
||||
case *RawCustomEvent:
|
||||
return &CustomEvent{
|
||||
MessageID: messageID,
|
||||
Timestamp: timestamp,
|
||||
Name: msg.Name,
|
||||
Payload: msg.Payload,
|
||||
}
|
||||
case *CustomIssue:
|
||||
return &IssueEvent{
|
||||
Type: "custom",
|
||||
|
|
@ -84,32 +77,6 @@ func (b *EventMapper) Handle(message Message, messageID uint64, timestamp uint64
|
|||
ContextString: msg.Name,
|
||||
Payload: msg.Payload,
|
||||
}
|
||||
case *Fetch:
|
||||
return &FetchEvent{
|
||||
MessageID: messageID,
|
||||
Timestamp: msg.Timestamp,
|
||||
Method: msg.Method,
|
||||
URL: msg.URL,
|
||||
Request: msg.Request,
|
||||
Response: msg.Response,
|
||||
Status: msg.Status,
|
||||
Duration: msg.Duration,
|
||||
}
|
||||
case *GraphQL:
|
||||
return &GraphQLEvent{
|
||||
MessageID: messageID,
|
||||
Timestamp: timestamp,
|
||||
OperationKind: msg.OperationKind,
|
||||
OperationName: msg.OperationName,
|
||||
Variables: msg.Variables,
|
||||
Response: msg.Response,
|
||||
}
|
||||
case *StateAction:
|
||||
return &StateActionEvent{
|
||||
MessageID: messageID,
|
||||
Timestamp: timestamp,
|
||||
Type: msg.Type,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
package messages
|
||||
|
||||
func IsReplayerType(id int) bool {
|
||||
return 80 != id && 81 != id && 82 != id && 1 != id && 3 != id && 17 != id && 23 != id && 24 != id && 25 != id && 26 != id && 27 != id && 28 != id && 29 != id && 30 != id && 31 != id && 32 != id && 33 != id && 35 != id && 36 != id && 42 != id && 43 != id && 50 != id && 51 != id && 52 != id && 53 != id && 56 != id && 62 != id && 63 != id && 64 != id && 66 != id && 78 != id && 126 != id && 127 != id && 107 != id && 91 != id && 92 != id && 94 != id && 95 != id && 97 != id && 98 != id && 99 != id && 101 != id && 104 != id && 110 != id && 111 != id
|
||||
return 80 != id && 81 != id && 82 != id && 1 != id && 3 != id && 17 != id && 23 != id && 24 != id && 25 != id && 26 != id && 27 != id && 28 != id && 29 != id && 30 != id && 31 != id && 32 != id && 33 != id && 35 != id && 42 != id && 52 != id && 53 != id && 56 != id && 62 != id && 63 != id && 64 != id && 66 != id && 78 != id && 126 != id && 127 != id && 107 != id && 91 != id && 92 != id && 94 != id && 95 != id && 97 != id && 98 != id && 99 != id && 101 != id && 104 != id && 110 != id && 111 != id
|
||||
}
|
||||
|
||||
func IsIOSType(id int) bool {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -444,9 +444,9 @@ func DecodeIntegrationEvent(reader BytesReader) (Message, error) {
|
|||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeRawCustomEvent(reader BytesReader) (Message, error) {
|
||||
func DecodeCustomEvent(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &RawCustomEvent{}
|
||||
msg := &CustomEvent{}
|
||||
if msg.Name, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -627,24 +627,6 @@ func DecodeResourceEvent(reader BytesReader) (Message, error) {
|
|||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeCustomEvent(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &CustomEvent{}
|
||||
if msg.MessageID, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Timestamp, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Name, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Payload, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeCSSInsertRule(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &CSSInsertRule{}
|
||||
|
|
@ -738,21 +720,6 @@ func DecodeStateAction(reader BytesReader) (Message, error) {
|
|||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeStateActionEvent(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &StateActionEvent{}
|
||||
if msg.MessageID, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Timestamp, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Type, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeRedux(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &Redux{}
|
||||
|
|
@ -843,60 +810,6 @@ func DecodePerformanceTrack(reader BytesReader) (Message, error) {
|
|||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeGraphQLEvent(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &GraphQLEvent{}
|
||||
if msg.MessageID, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Timestamp, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.OperationKind, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.OperationName, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Variables, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Response, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeFetchEvent(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &FetchEvent{}
|
||||
if msg.MessageID, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Timestamp, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Method, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.URL, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Request, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Response, err = reader.ReadString(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Status, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if msg.Duration, err = reader.ReadUint(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return msg, err
|
||||
}
|
||||
|
||||
func DecodeDOMDrop(reader BytesReader) (Message, error) {
|
||||
var err error = nil
|
||||
msg := &DOMDrop{}
|
||||
|
|
@ -1808,7 +1721,7 @@ func ReadMessage(t uint64, reader BytesReader) (Message, error) {
|
|||
case 26:
|
||||
return DecodeIntegrationEvent(reader)
|
||||
case 27:
|
||||
return DecodeRawCustomEvent(reader)
|
||||
return DecodeCustomEvent(reader)
|
||||
case 28:
|
||||
return DecodeUserID(reader)
|
||||
case 29:
|
||||
|
|
@ -1823,8 +1736,6 @@ func ReadMessage(t uint64, reader BytesReader) (Message, error) {
|
|||
return DecodeClickEvent(reader)
|
||||
case 35:
|
||||
return DecodeResourceEvent(reader)
|
||||
case 36:
|
||||
return DecodeCustomEvent(reader)
|
||||
case 37:
|
||||
return DecodeCSSInsertRule(reader)
|
||||
case 38:
|
||||
|
|
@ -1837,8 +1748,6 @@ func ReadMessage(t uint64, reader BytesReader) (Message, error) {
|
|||
return DecodeOTable(reader)
|
||||
case 42:
|
||||
return DecodeStateAction(reader)
|
||||
case 43:
|
||||
return DecodeStateActionEvent(reader)
|
||||
case 44:
|
||||
return DecodeRedux(reader)
|
||||
case 45:
|
||||
|
|
@ -1851,10 +1760,6 @@ func ReadMessage(t uint64, reader BytesReader) (Message, error) {
|
|||
return DecodeGraphQL(reader)
|
||||
case 49:
|
||||
return DecodePerformanceTrack(reader)
|
||||
case 50:
|
||||
return DecodeGraphQLEvent(reader)
|
||||
case 51:
|
||||
return DecodeFetchEvent(reader)
|
||||
case 52:
|
||||
return DecodeDOMDrop(reader)
|
||||
case 53:
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ func (mi *Saver) InsertMessage(msg Message) error {
|
|||
return mi.pg.InsertWebJSException(m)
|
||||
case *IntegrationEvent:
|
||||
return mi.pg.InsertWebIntegrationEvent(m)
|
||||
case *FetchEvent:
|
||||
case *Fetch:
|
||||
session, err := mi.pg.GetSession(sessionID)
|
||||
if err != nil {
|
||||
log.Printf("can't get session info for CH: %s", err)
|
||||
|
|
@ -72,8 +72,8 @@ func (mi *Saver) InsertMessage(msg Message) error {
|
|||
}
|
||||
}
|
||||
}
|
||||
return mi.pg.InsertWebFetchEvent(sessionID, m)
|
||||
case *GraphQLEvent:
|
||||
return mi.pg.InsertWebFetch(sessionID, m)
|
||||
case *GraphQL:
|
||||
session, err := mi.pg.GetSession(sessionID)
|
||||
if err != nil {
|
||||
log.Printf("can't get session info for CH: %s", err)
|
||||
|
|
@ -82,7 +82,7 @@ func (mi *Saver) InsertMessage(msg Message) error {
|
|||
log.Printf("can't insert graphQL event into clickhouse: %s", err)
|
||||
}
|
||||
}
|
||||
return mi.pg.InsertWebGraphQLEvent(sessionID, m)
|
||||
return mi.pg.InsertWebGraphQL(sessionID, m)
|
||||
case *SetPageLocation:
|
||||
return mi.pg.InsertSessionReferrer(sessionID, m.Referrer)
|
||||
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ type Connector interface {
|
|||
InsertWebErrorEvent(session *types.Session, msg *types.ErrorEvent) error
|
||||
InsertWebPerformanceTrackAggr(session *types.Session, msg *messages.PerformanceTrackAggr) error
|
||||
InsertAutocomplete(session *types.Session, msgType, msgValue string) error
|
||||
InsertRequest(session *types.Session, msg *messages.FetchEvent, savePayload bool) error
|
||||
InsertRequest(session *types.Session, msg *messages.Fetch, savePayload bool) error
|
||||
InsertCustom(session *types.Session, msg *messages.CustomEvent) error
|
||||
InsertGraphQL(session *types.Session, msg *messages.GraphQLEvent) error
|
||||
InsertGraphQL(session *types.Session, msg *messages.GraphQL) error
|
||||
InsertIssue(session *types.Session, msg *messages.IssueEvent) error
|
||||
}
|
||||
|
||||
|
|
@ -352,7 +352,7 @@ func (c *connectorImpl) InsertAutocomplete(session *types.Session, msgType, msgV
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *connectorImpl) InsertRequest(session *types.Session, msg *messages.FetchEvent, savePayload bool) error {
|
||||
func (c *connectorImpl) InsertRequest(session *types.Session, msg *messages.Fetch, savePayload bool) error {
|
||||
urlMethod := url.EnsureMethod(msg.Method)
|
||||
if urlMethod == "" {
|
||||
return fmt.Errorf("can't parse http method. sess: %d, method: %s", session.SessionID, msg.Method)
|
||||
|
|
@ -365,8 +365,8 @@ func (c *connectorImpl) InsertRequest(session *types.Session, msg *messages.Fetc
|
|||
if err := c.batches["requests"].Append(
|
||||
session.SessionID,
|
||||
uint16(session.ProjectID),
|
||||
msg.MessageID,
|
||||
datetime(msg.Timestamp),
|
||||
msg.Meta().Index,
|
||||
datetime(uint64(msg.Meta().Timestamp)),
|
||||
msg.URL,
|
||||
request,
|
||||
response,
|
||||
|
|
@ -386,8 +386,8 @@ func (c *connectorImpl) InsertCustom(session *types.Session, msg *messages.Custo
|
|||
if err := c.batches["custom"].Append(
|
||||
session.SessionID,
|
||||
uint16(session.ProjectID),
|
||||
msg.MessageID,
|
||||
datetime(msg.Timestamp),
|
||||
msg.Meta().Index,
|
||||
datetime(uint64(msg.Meta().Timestamp)),
|
||||
msg.Name,
|
||||
msg.Payload,
|
||||
"CUSTOM",
|
||||
|
|
@ -398,12 +398,12 @@ func (c *connectorImpl) InsertCustom(session *types.Session, msg *messages.Custo
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *connectorImpl) InsertGraphQL(session *types.Session, msg *messages.GraphQLEvent) error {
|
||||
func (c *connectorImpl) InsertGraphQL(session *types.Session, msg *messages.GraphQL) error {
|
||||
if err := c.batches["graphql"].Append(
|
||||
session.SessionID,
|
||||
uint16(session.ProjectID),
|
||||
msg.MessageID,
|
||||
datetime(msg.Timestamp),
|
||||
msg.Meta().Index,
|
||||
datetime(uint64(msg.Meta().Timestamp)),
|
||||
msg.OperationName,
|
||||
nullableString(msg.Variables),
|
||||
nullableString(msg.Response),
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ class IntegrationEvent(Message):
|
|||
self.payload = payload
|
||||
|
||||
|
||||
class RawCustomEvent(Message):
|
||||
class CustomEvent(Message):
|
||||
__id__ = 27
|
||||
|
||||
def __init__(self, name, payload):
|
||||
|
|
@ -358,16 +358,6 @@ class ResourceEvent(Message):
|
|||
self.status = status
|
||||
|
||||
|
||||
class CustomEvent(Message):
|
||||
__id__ = 36
|
||||
|
||||
def __init__(self, message_id, timestamp, name, payload):
|
||||
self.message_id = message_id
|
||||
self.timestamp = timestamp
|
||||
self.name = name
|
||||
self.payload = payload
|
||||
|
||||
|
||||
class CSSInsertRule(Message):
|
||||
__id__ = 37
|
||||
|
||||
|
|
@ -423,15 +413,6 @@ class StateAction(Message):
|
|||
self.type = type
|
||||
|
||||
|
||||
class StateActionEvent(Message):
|
||||
__id__ = 43
|
||||
|
||||
def __init__(self, message_id, timestamp, type):
|
||||
self.message_id = message_id
|
||||
self.timestamp = timestamp
|
||||
self.type = type
|
||||
|
||||
|
||||
class Redux(Message):
|
||||
__id__ = 44
|
||||
|
||||
|
|
@ -486,32 +467,6 @@ class PerformanceTrack(Message):
|
|||
self.used_js_heap_size = used_js_heap_size
|
||||
|
||||
|
||||
class GraphQLEvent(Message):
|
||||
__id__ = 50
|
||||
|
||||
def __init__(self, message_id, timestamp, operation_kind, operation_name, variables, response):
|
||||
self.message_id = message_id
|
||||
self.timestamp = timestamp
|
||||
self.operation_kind = operation_kind
|
||||
self.operation_name = operation_name
|
||||
self.variables = variables
|
||||
self.response = response
|
||||
|
||||
|
||||
class FetchEvent(Message):
|
||||
__id__ = 51
|
||||
|
||||
def __init__(self, message_id, timestamp, method, url, request, response, status, duration):
|
||||
self.message_id = message_id
|
||||
self.timestamp = timestamp
|
||||
self.method = method
|
||||
self.url = url
|
||||
self.request = request
|
||||
self.response = response
|
||||
self.status = status
|
||||
self.duration = duration
|
||||
|
||||
|
||||
class DOMDrop(Message):
|
||||
__id__ = 52
|
||||
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ class MessageCodec(Codec):
|
|||
)
|
||||
|
||||
if message_id == 27:
|
||||
return RawCustomEvent(
|
||||
return CustomEvent(
|
||||
name=self.read_string(reader),
|
||||
payload=self.read_string(reader)
|
||||
)
|
||||
|
|
@ -356,14 +356,6 @@ class MessageCodec(Codec):
|
|||
status=self.read_uint(reader)
|
||||
)
|
||||
|
||||
if message_id == 36:
|
||||
return CustomEvent(
|
||||
message_id=self.read_uint(reader),
|
||||
timestamp=self.read_uint(reader),
|
||||
name=self.read_string(reader),
|
||||
payload=self.read_string(reader)
|
||||
)
|
||||
|
||||
if message_id == 37:
|
||||
return CSSInsertRule(
|
||||
id=self.read_uint(reader),
|
||||
|
|
@ -407,13 +399,6 @@ class MessageCodec(Codec):
|
|||
type=self.read_string(reader)
|
||||
)
|
||||
|
||||
if message_id == 43:
|
||||
return StateActionEvent(
|
||||
message_id=self.read_uint(reader),
|
||||
timestamp=self.read_uint(reader),
|
||||
type=self.read_string(reader)
|
||||
)
|
||||
|
||||
if message_id == 44:
|
||||
return Redux(
|
||||
action=self.read_string(reader),
|
||||
|
|
@ -456,28 +441,6 @@ class MessageCodec(Codec):
|
|||
used_js_heap_size=self.read_uint(reader)
|
||||
)
|
||||
|
||||
if message_id == 50:
|
||||
return GraphQLEvent(
|
||||
message_id=self.read_uint(reader),
|
||||
timestamp=self.read_uint(reader),
|
||||
operation_kind=self.read_string(reader),
|
||||
operation_name=self.read_string(reader),
|
||||
variables=self.read_string(reader),
|
||||
response=self.read_string(reader)
|
||||
)
|
||||
|
||||
if message_id == 51:
|
||||
return FetchEvent(
|
||||
message_id=self.read_uint(reader),
|
||||
timestamp=self.read_uint(reader),
|
||||
method=self.read_string(reader),
|
||||
url=self.read_string(reader),
|
||||
request=self.read_string(reader),
|
||||
response=self.read_string(reader),
|
||||
status=self.read_uint(reader),
|
||||
duration=self.read_uint(reader)
|
||||
)
|
||||
|
||||
if message_id == 52:
|
||||
return DOMDrop(
|
||||
timestamp=self.read_uint(reader)
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ type TrJSExceptionDeprecated = [
|
|||
payload: string,
|
||||
]
|
||||
|
||||
type TrRawCustomEvent = [
|
||||
type TrCustomEvent = [
|
||||
type: 27,
|
||||
name: string,
|
||||
payload: string,
|
||||
|
|
@ -412,7 +412,7 @@ type TrJSException = [
|
|||
]
|
||||
|
||||
|
||||
export type TrackerMessage = TrBatchMetadata | TrPartitionedMessage | TrTimestamp | TrSetPageLocation | TrSetViewportSize | TrSetViewportScroll | TrCreateDocument | TrCreateElementNode | TrCreateTextNode | TrMoveNode | TrRemoveNode | TrSetNodeAttribute | TrRemoveNodeAttribute | TrSetNodeData | TrSetNodeScroll | TrSetInputTarget | TrSetInputValue | TrSetInputChecked | TrMouseMove | TrConsoleLog | TrPageLoadTiming | TrPageRenderTiming | TrJSExceptionDeprecated | TrRawCustomEvent | TrUserID | TrUserAnonymousID | TrMetadata | TrCSSInsertRule | TrCSSDeleteRule | TrFetch | TrProfiler | TrOTable | TrStateAction | TrRedux | TrVuex | TrMobX | TrNgRx | TrGraphQL | TrPerformanceTrack | TrResourceTiming | TrConnectionInformation | TrSetPageVisibility | TrLoadFontFace | TrSetNodeFocus | TrLongTask | TrSetNodeAttributeURLBased | TrSetCSSDataURLBased | TrTechnicalInfo | TrCustomIssue | TrCSSInsertRuleURLBased | TrMouseClick | TrCreateIFrameDocument | TrAdoptedSSReplaceURLBased | TrAdoptedSSInsertRuleURLBased | TrAdoptedSSDeleteRule | TrAdoptedSSAddOwner | TrAdoptedSSRemoveOwner | TrZustand | TrJSException
|
||||
export type TrackerMessage = TrBatchMetadata | TrPartitionedMessage | TrTimestamp | TrSetPageLocation | TrSetViewportSize | TrSetViewportScroll | TrCreateDocument | TrCreateElementNode | TrCreateTextNode | TrMoveNode | TrRemoveNode | TrSetNodeAttribute | TrRemoveNodeAttribute | TrSetNodeData | TrSetNodeScroll | TrSetInputTarget | TrSetInputValue | TrSetInputChecked | TrMouseMove | TrConsoleLog | TrPageLoadTiming | TrPageRenderTiming | TrJSExceptionDeprecated | TrCustomEvent | TrUserID | TrUserAnonymousID | TrMetadata | TrCSSInsertRule | TrCSSDeleteRule | TrFetch | TrProfiler | TrOTable | TrStateAction | TrRedux | TrVuex | TrMobX | TrNgRx | TrGraphQL | TrPerformanceTrack | TrResourceTiming | TrConnectionInformation | TrSetPageVisibility | TrLoadFontFace | TrSetNodeFocus | TrLongTask | TrSetNodeAttributeURLBased | TrSetCSSDataURLBased | TrTechnicalInfo | TrCustomIssue | TrCSSInsertRuleURLBased | TrMouseClick | TrCreateIFrameDocument | TrAdoptedSSReplaceURLBased | TrAdoptedSSInsertRuleURLBased | TrAdoptedSSDeleteRule | TrAdoptedSSAddOwner | TrAdoptedSSRemoveOwner | TrZustand | TrJSException
|
||||
|
||||
export default function translate(tMsg: TrackerMessage): RawMessage | null {
|
||||
switch(tMsg[0]) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Special one for Batch Metadata. Message id could define the version
|
||||
|
||||
# Depricated since tracker 3.6.0 in favor of BatchMetadata
|
||||
# Deprecated since tracker 3.6.0 in favor of BatchMetadata
|
||||
message 80, 'BatchMeta', :replayer => false, :tracker => false do
|
||||
uint 'PageNo'
|
||||
uint 'FirstIndex'
|
||||
|
|
@ -62,7 +62,7 @@ message 6, 'SetViewportScroll' do
|
|||
int 'X'
|
||||
int 'Y'
|
||||
end
|
||||
# (should be) Depricated sinse tracker ?.?.? in favor of CreateDocument(id=2)
|
||||
# (should be) Deprecated sinse tracker ?.?.? in favor of CreateDocument(id=2)
|
||||
# in order to use Document as a default root node instead of the documentElement
|
||||
message 7, 'CreateDocument' do
|
||||
end
|
||||
|
|
@ -159,7 +159,7 @@ message 26, 'IntegrationEvent', :tracker => false, :replayer => false do
|
|||
string 'Message'
|
||||
string 'Payload'
|
||||
end
|
||||
message 27, 'RawCustomEvent', :replayer => false do
|
||||
message 27, 'CustomEvent', :replayer => false do
|
||||
string 'Name'
|
||||
string 'Payload'
|
||||
end
|
||||
|
|
@ -206,6 +206,7 @@ message 33, 'ClickEvent', :tracker => false, :replayer => false do
|
|||
string 'Label'
|
||||
string 'Selector'
|
||||
end
|
||||
# removed (backend-only)
|
||||
# message 34, 'ErrorEvent', :tracker => false, :replayer => false do
|
||||
# uint 'MessageID'
|
||||
# uint 'Timestamp'
|
||||
|
|
@ -228,12 +229,13 @@ message 35, 'ResourceEvent', :tracker => false, :replayer => false do
|
|||
string 'Method'
|
||||
uint 'Status'
|
||||
end
|
||||
message 36, 'CustomEvent', :tracker => false, :replayer => false do
|
||||
uint 'MessageID'
|
||||
uint 'Timestamp'
|
||||
string 'Name'
|
||||
string 'Payload'
|
||||
end
|
||||
# removed (backend-only)
|
||||
# message 36, 'CustomEvent', :tracker => false, :replayer => false do
|
||||
# uint 'MessageID'
|
||||
# uint 'Timestamp'
|
||||
# string 'Name'
|
||||
# string 'Payload'
|
||||
# end
|
||||
# deprecated since 4.0.2 in favor of AdoptedSSInsertRule + AdoptedSSAddOwner
|
||||
message 37, 'CSSInsertRule' do
|
||||
uint 'ID'
|
||||
|
|
@ -265,15 +267,15 @@ message 41, 'OTable', :replayer => :devtools do
|
|||
string 'Key'
|
||||
string 'Value'
|
||||
end
|
||||
# Do we use that?
|
||||
message 42, 'StateAction', :replayer => false do
|
||||
string 'Type'
|
||||
end
|
||||
message 43, 'StateActionEvent', :tracker => false, :replayer => false do
|
||||
uint 'MessageID'
|
||||
uint 'Timestamp'
|
||||
string 'Type'
|
||||
end
|
||||
# removed (backend-only)
|
||||
# message 43, 'StateActionEvent', :tracker => false, :replayer => false do
|
||||
# uint 'MessageID'
|
||||
# uint 'Timestamp'
|
||||
# string 'Type'
|
||||
# end
|
||||
message 44, 'Redux', :replayer => :devtools do
|
||||
string 'Action'
|
||||
string 'State'
|
||||
|
|
@ -304,25 +306,26 @@ message 49, 'PerformanceTrack' do #, :replayer => :devtools --> requires player
|
|||
uint 'TotalJSHeapSize'
|
||||
uint 'UsedJSHeapSize'
|
||||
end
|
||||
# next 2 should be removed after refactoring backend/pkg/handlers/custom/eventMapper.go (move "wrapping" logic to pg connector insertion)
|
||||
message 50, 'GraphQLEvent', :tracker => false, :replayer => false do
|
||||
uint 'MessageID'
|
||||
uint 'Timestamp'
|
||||
string 'OperationKind'
|
||||
string 'OperationName'
|
||||
string 'Variables'
|
||||
string 'Response'
|
||||
end
|
||||
message 51, 'FetchEvent', :tracker => false, :replayer => false do
|
||||
uint 'MessageID'
|
||||
uint 'Timestamp'
|
||||
string 'Method'
|
||||
string 'URL'
|
||||
string 'Request'
|
||||
string 'Response'
|
||||
uint 'Status'
|
||||
uint 'Duration'
|
||||
end
|
||||
# removed (backend-only)
|
||||
# message 50, 'GraphQLEvent', :tracker => false, :replayer => false do
|
||||
# uint 'MessageID'
|
||||
# uint 'Timestamp'
|
||||
# string 'OperationKind'
|
||||
# string 'OperationName'
|
||||
# string 'Variables'
|
||||
# string 'Response'
|
||||
# end
|
||||
# removed (backend-only)
|
||||
# message 51, 'FetchEvent', :tracker => false, :replayer => false do
|
||||
# uint 'MessageID'
|
||||
# uint 'Timestamp'
|
||||
# string 'Method'
|
||||
# string 'URL'
|
||||
# string 'Request'
|
||||
# string 'Response'
|
||||
# uint 'Status'
|
||||
# uint 'Duration'
|
||||
# end
|
||||
message 52, 'DOMDrop', :tracker => false, :replayer => false do
|
||||
uint 'Timestamp'
|
||||
end
|
||||
|
|
@ -372,7 +375,7 @@ message 58, 'SetNodeFocus' do
|
|||
int 'ID'
|
||||
end
|
||||
|
||||
#Depricated (since 3.0.?)
|
||||
#Deprecated (since 3.0.?)
|
||||
message 59, 'LongTask' do
|
||||
uint 'Timestamp'
|
||||
uint 'Duration'
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package messages
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
)
|
||||
<% $messages.each do |msg| %>
|
||||
func Decode<%= msg.name %>(reader BytesReader) (Message, error) {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ export declare const enum Type {
|
|||
PageLoadTiming = 23,
|
||||
PageRenderTiming = 24,
|
||||
JSExceptionDeprecated = 25,
|
||||
RawCustomEvent = 27,
|
||||
CustomEvent = 27,
|
||||
UserID = 28,
|
||||
UserAnonymousID = 29,
|
||||
Metadata = 30,
|
||||
|
|
@ -220,8 +220,8 @@ export type JSExceptionDeprecated = [
|
|||
/*payload:*/ string,
|
||||
]
|
||||
|
||||
export type RawCustomEvent = [
|
||||
/*type:*/ Type.RawCustomEvent,
|
||||
export type CustomEvent = [
|
||||
/*type:*/ Type.CustomEvent,
|
||||
/*name:*/ string,
|
||||
/*payload:*/ string,
|
||||
]
|
||||
|
|
@ -471,5 +471,5 @@ export type JSException = [
|
|||
]
|
||||
|
||||
|
||||
type Message = BatchMetadata | PartitionedMessage | Timestamp | SetPageLocation | SetViewportSize | SetViewportScroll | CreateDocument | CreateElementNode | CreateTextNode | MoveNode | RemoveNode | SetNodeAttribute | RemoveNodeAttribute | SetNodeData | SetNodeScroll | SetInputTarget | SetInputValue | SetInputChecked | MouseMove | ConsoleLog | PageLoadTiming | PageRenderTiming | JSExceptionDeprecated | RawCustomEvent | UserID | UserAnonymousID | Metadata | CSSInsertRule | CSSDeleteRule | Fetch | Profiler | OTable | StateAction | Redux | Vuex | MobX | NgRx | GraphQL | PerformanceTrack | ResourceTiming | ConnectionInformation | SetPageVisibility | LoadFontFace | SetNodeFocus | LongTask | SetNodeAttributeURLBased | SetCSSDataURLBased | TechnicalInfo | CustomIssue | CSSInsertRuleURLBased | MouseClick | CreateIFrameDocument | AdoptedSSReplaceURLBased | AdoptedSSInsertRuleURLBased | AdoptedSSDeleteRule | AdoptedSSAddOwner | AdoptedSSRemoveOwner | Zustand | JSException
|
||||
type Message = BatchMetadata | PartitionedMessage | Timestamp | SetPageLocation | SetViewportSize | SetViewportScroll | CreateDocument | CreateElementNode | CreateTextNode | MoveNode | RemoveNode | SetNodeAttribute | RemoveNodeAttribute | SetNodeData | SetNodeScroll | SetInputTarget | SetInputValue | SetInputChecked | MouseMove | ConsoleLog | PageLoadTiming | PageRenderTiming | JSExceptionDeprecated | CustomEvent | UserID | UserAnonymousID | Metadata | CSSInsertRule | CSSDeleteRule | Fetch | Profiler | OTable | StateAction | Redux | Vuex | MobX | NgRx | GraphQL | PerformanceTrack | ResourceTiming | ConnectionInformation | SetPageVisibility | LoadFontFace | SetNodeFocus | LongTask | SetNodeAttributeURLBased | SetCSSDataURLBased | TechnicalInfo | CustomIssue | CSSInsertRuleURLBased | MouseClick | CreateIFrameDocument | AdoptedSSReplaceURLBased | AdoptedSSInsertRuleURLBased | AdoptedSSDeleteRule | AdoptedSSAddOwner | AdoptedSSRemoveOwner | Zustand | JSException
|
||||
export default Message
|
||||
|
|
|
|||
|
|
@ -294,12 +294,12 @@ export function JSExceptionDeprecated(
|
|||
]
|
||||
}
|
||||
|
||||
export function RawCustomEvent(
|
||||
export function CustomEvent(
|
||||
name: string,
|
||||
payload: string,
|
||||
): Messages.RawCustomEvent {
|
||||
): Messages.CustomEvent {
|
||||
return [
|
||||
Messages.Type.RawCustomEvent,
|
||||
Messages.Type.CustomEvent,
|
||||
name,
|
||||
payload,
|
||||
]
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ export default class MessageEncoder extends PrimitiveEncoder {
|
|||
return this.string(msg[1]) && this.string(msg[2]) && this.string(msg[3])
|
||||
break
|
||||
|
||||
case Messages.Type.RawCustomEvent:
|
||||
case Messages.Type.CustomEvent:
|
||||
return this.string(msg[1]) && this.string(msg[2])
|
||||
break
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue