feat(backend): iframe message

This commit is contained in:
ShiKhu 2021-09-22 15:09:37 +02:00
parent 97d81ac267
commit e16d5d3bb4
3 changed files with 30 additions and 512 deletions

View file

@ -3,7 +3,7 @@ package messages
func IsReplayerType(id uint64) bool {
return 0 == id || 4 == id || 5 == id || 6 == id || 7 == id || 8 == id || 9 == id || 10 == id || 11 == id || 12 == id || 13 == id || 14 == id || 15 == id || 16 == id || 18 == id || 19 == id || 20 == id || 22 == id || 37 == id || 38 == id || 39 == id || 40 == id || 41 == id || 44 == id || 45 == id || 46 == id || 47 == id || 48 == id || 49 == id || 54 == id || 55 == id || 59 == id || 90 == id || 93 == id || 100 == id || 102 == id || 103 == id || 105 == id
return 0 == id || 2 == id || 4 == id || 5 == id || 6 == id || 7 == id || 8 == id || 9 == id || 10 == id || 11 == id || 12 == id || 13 == id || 14 == id || 15 == id || 16 == id || 18 == id || 19 == id || 20 == id || 22 == id || 37 == id || 38 == id || 39 == id || 40 == id || 41 == id || 44 == id || 45 == id || 46 == id || 47 == id || 48 == id || 49 == id || 54 == id || 55 == id || 59 == id || 69 == id || 70 == id
}
func IsIOSType(id uint64) bool {

View file

@ -86,6 +86,18 @@ p = WriteString(msg.UserCountry, buf, p)
return buf[:p]
}
type SessionDisconnect struct {
*meta
Timestamp uint64
}
func (msg *SessionDisconnect) Encode() []byte{
buf := make([]byte, 11 )
buf[0] = 2
p := 1
p = WriteUint(msg.Timestamp, buf, p)
return buf[:p]
}
type SessionEnd struct {
*meta
Timestamp uint64
@ -1166,361 +1178,17 @@ p = WriteString(msg.Selector, buf, p)
return buf[:p]
}
type IOSSessionStart struct {
type CreateIFrameDocument struct {
*meta
Timestamp uint64
ProjectID uint64
TrackerVersion string
RevID string
UserUUID string
UserOS string
UserOSVersion string
UserDevice string
UserDeviceType string
UserCountry string
FrameID uint64
ID uint64
}
func (msg *IOSSessionStart) Encode() []byte{
buf := make([]byte, 101 + len(msg.TrackerVersion)+ len(msg.RevID)+ len(msg.UserUUID)+ len(msg.UserOS)+ len(msg.UserOSVersion)+ len(msg.UserDevice)+ len(msg.UserDeviceType)+ len(msg.UserCountry))
buf[0] = 90
func (msg *CreateIFrameDocument) Encode() []byte{
buf := make([]byte, 21 )
buf[0] = 70
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.ProjectID, buf, p)
p = WriteString(msg.TrackerVersion, buf, p)
p = WriteString(msg.RevID, buf, p)
p = WriteString(msg.UserUUID, buf, p)
p = WriteString(msg.UserOS, buf, p)
p = WriteString(msg.UserOSVersion, buf, p)
p = WriteString(msg.UserDevice, buf, p)
p = WriteString(msg.UserDeviceType, buf, p)
p = WriteString(msg.UserCountry, buf, p)
return buf[:p]
}
type IOSSessionEnd struct {
*meta
Timestamp uint64
}
func (msg *IOSSessionEnd) Encode() []byte{
buf := make([]byte, 11 )
buf[0] = 91
p := 1
p = WriteUint(msg.Timestamp, buf, p)
return buf[:p]
}
type IOSMetadata struct {
*meta
Timestamp uint64
Length uint64
Key string
Value string
}
func (msg *IOSMetadata) Encode() []byte{
buf := make([]byte, 41 + len(msg.Key)+ len(msg.Value))
buf[0] = 92
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Key, buf, p)
p = WriteString(msg.Value, buf, p)
return buf[:p]
}
type IOSCustomEvent struct {
*meta
Timestamp uint64
Length uint64
Name string
Payload string
}
func (msg *IOSCustomEvent) Encode() []byte{
buf := make([]byte, 41 + len(msg.Name)+ len(msg.Payload))
buf[0] = 93
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Name, buf, p)
p = WriteString(msg.Payload, buf, p)
return buf[:p]
}
type IOSUserID struct {
*meta
Timestamp uint64
Length uint64
Value string
}
func (msg *IOSUserID) Encode() []byte{
buf := make([]byte, 31 + len(msg.Value))
buf[0] = 94
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Value, buf, p)
return buf[:p]
}
type IOSUserAnonymousID struct {
*meta
Timestamp uint64
Length uint64
Value string
}
func (msg *IOSUserAnonymousID) Encode() []byte{
buf := make([]byte, 31 + len(msg.Value))
buf[0] = 95
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Value, buf, p)
return buf[:p]
}
type IOSScreenChanges struct {
*meta
Timestamp uint64
SkipData []byte
}
func (msg *IOSScreenChanges) Encode() []byte{
buf := make([]byte, 21 + len(msg.SkipData))
buf[0] = 96
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteData(msg.SkipData, buf, p)
return buf[:p]
}
type IOSCrash struct {
*meta
Timestamp uint64
Length uint64
Name string
Reason string
Stacktrace string
}
func (msg *IOSCrash) Encode() []byte{
buf := make([]byte, 51 + len(msg.Name)+ len(msg.Reason)+ len(msg.Stacktrace))
buf[0] = 97
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Name, buf, p)
p = WriteString(msg.Reason, buf, p)
p = WriteString(msg.Stacktrace, buf, p)
return buf[:p]
}
type IOSScreenEnter struct {
*meta
Timestamp uint64
Length uint64
Title string
ViewName string
}
func (msg *IOSScreenEnter) Encode() []byte{
buf := make([]byte, 41 + len(msg.Title)+ len(msg.ViewName))
buf[0] = 98
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Title, buf, p)
p = WriteString(msg.ViewName, buf, p)
return buf[:p]
}
type IOSScreenLeave struct {
*meta
Timestamp uint64
Length uint64
Title string
ViewName string
}
func (msg *IOSScreenLeave) Encode() []byte{
buf := make([]byte, 41 + len(msg.Title)+ len(msg.ViewName))
buf[0] = 99
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Title, buf, p)
p = WriteString(msg.ViewName, buf, p)
return buf[:p]
}
type IOSClickEvent struct {
*meta
Timestamp uint64
Length uint64
Label string
X uint64
Y uint64
}
func (msg *IOSClickEvent) Encode() []byte{
buf := make([]byte, 51 + len(msg.Label))
buf[0] = 100
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Label, buf, p)
p = WriteUint(msg.X, buf, p)
p = WriteUint(msg.Y, buf, p)
return buf[:p]
}
type IOSInputEvent struct {
*meta
Timestamp uint64
Length uint64
Value string
ValueMasked bool
Label string
}
func (msg *IOSInputEvent) Encode() []byte{
buf := make([]byte, 51 + len(msg.Value)+ len(msg.Label))
buf[0] = 101
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Value, buf, p)
p = WriteBoolean(msg.ValueMasked, buf, p)
p = WriteString(msg.Label, buf, p)
return buf[:p]
}
type IOSPerformanceEvent struct {
*meta
Timestamp uint64
Length uint64
Name string
Value uint64
}
func (msg *IOSPerformanceEvent) Encode() []byte{
buf := make([]byte, 41 + len(msg.Name))
buf[0] = 102
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Name, buf, p)
p = WriteUint(msg.Value, buf, p)
return buf[:p]
}
type IOSLog struct {
*meta
Timestamp uint64
Length uint64
Severity string
Content string
}
func (msg *IOSLog) Encode() []byte{
buf := make([]byte, 41 + len(msg.Severity)+ len(msg.Content))
buf[0] = 103
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Severity, buf, p)
p = WriteString(msg.Content, buf, p)
return buf[:p]
}
type IOSInternalError struct {
*meta
Timestamp uint64
Length uint64
Content string
}
func (msg *IOSInternalError) Encode() []byte{
buf := make([]byte, 31 + len(msg.Content))
buf[0] = 104
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteString(msg.Content, buf, p)
return buf[:p]
}
type IOSNetworkCall struct {
*meta
Timestamp uint64
Length uint64
Duration uint64
Headers string
Body string
URL string
Success bool
Method string
Status uint64
}
func (msg *IOSNetworkCall) Encode() []byte{
buf := make([]byte, 91 + len(msg.Headers)+ len(msg.Body)+ len(msg.URL)+ len(msg.Method))
buf[0] = 105
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteUint(msg.Length, buf, p)
p = WriteUint(msg.Duration, buf, p)
p = WriteString(msg.Headers, buf, p)
p = WriteString(msg.Body, buf, p)
p = WriteString(msg.URL, buf, p)
p = WriteBoolean(msg.Success, buf, p)
p = WriteString(msg.Method, buf, p)
p = WriteUint(msg.Status, buf, p)
return buf[:p]
}
type IOSPerformanceAggregated struct {
*meta
TimestampStart uint64
TimestampEnd uint64
MinFPS uint64
AvgFPS uint64
MaxFPS uint64
MinCPU uint64
AvgCPU uint64
MaxCPU uint64
MinMemory uint64
AvgMemory uint64
MaxMemory uint64
MinBattery uint64
AvgBattery uint64
MaxBattery uint64
}
func (msg *IOSPerformanceAggregated) Encode() []byte{
buf := make([]byte, 141 )
buf[0] = 110
p := 1
p = WriteUint(msg.TimestampStart, buf, p)
p = WriteUint(msg.TimestampEnd, buf, p)
p = WriteUint(msg.MinFPS, buf, p)
p = WriteUint(msg.AvgFPS, buf, p)
p = WriteUint(msg.MaxFPS, buf, p)
p = WriteUint(msg.MinCPU, buf, p)
p = WriteUint(msg.AvgCPU, buf, p)
p = WriteUint(msg.MaxCPU, buf, p)
p = WriteUint(msg.MinMemory, buf, p)
p = WriteUint(msg.AvgMemory, buf, p)
p = WriteUint(msg.MaxMemory, buf, p)
p = WriteUint(msg.MinBattery, buf, p)
p = WriteUint(msg.AvgBattery, buf, p)
p = WriteUint(msg.MaxBattery, buf, p)
return buf[:p]
}
type IOSIssueEvent struct {
*meta
Timestamp uint64
Type string
ContextString string
Context string
Payload string
}
func (msg *IOSIssueEvent) Encode() []byte{
buf := make([]byte, 51 + len(msg.Type)+ len(msg.ContextString)+ len(msg.Context)+ len(msg.Payload))
buf[0] = 111
p := 1
p = WriteUint(msg.Timestamp, buf, p)
p = WriteString(msg.Type, buf, p)
p = WriteString(msg.ContextString, buf, p)
p = WriteString(msg.Context, buf, p)
p = WriteString(msg.Payload, buf, p)
p = WriteUint(msg.FrameID, buf, p)
p = WriteUint(msg.ID, buf, p)
return buf[:p]
}

View file

@ -44,6 +44,11 @@ if msg.UserDeviceHeapSize, err = ReadUint(reader); err != nil { return nil, err
if msg.UserCountry, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 2:
msg := &SessionDisconnect{ meta: &meta{ TypeID: 2} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
case 3:
msg := &SessionEnd{ meta: &meta{ TypeID: 3} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
@ -521,165 +526,10 @@ if msg.Label, err = ReadString(reader); err != nil { return nil, err }
if msg.Selector, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 90:
msg := &IOSSessionStart{ meta: &meta{ TypeID: 90} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.ProjectID, err = ReadUint(reader); err != nil { return nil, err }
if msg.TrackerVersion, err = ReadString(reader); err != nil { return nil, err }
if msg.RevID, err = ReadString(reader); err != nil { return nil, err }
if msg.UserUUID, err = ReadString(reader); err != nil { return nil, err }
if msg.UserOS, err = ReadString(reader); err != nil { return nil, err }
if msg.UserOSVersion, err = ReadString(reader); err != nil { return nil, err }
if msg.UserDevice, err = ReadString(reader); err != nil { return nil, err }
if msg.UserDeviceType, err = ReadString(reader); err != nil { return nil, err }
if msg.UserCountry, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 91:
msg := &IOSSessionEnd{ meta: &meta{ TypeID: 91} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
case 92:
msg := &IOSMetadata{ meta: &meta{ TypeID: 92} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Key, err = ReadString(reader); err != nil { return nil, err }
if msg.Value, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 93:
msg := &IOSCustomEvent{ meta: &meta{ TypeID: 93} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Name, err = ReadString(reader); err != nil { return nil, err }
if msg.Payload, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 94:
msg := &IOSUserID{ meta: &meta{ TypeID: 94} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Value, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 95:
msg := &IOSUserAnonymousID{ meta: &meta{ TypeID: 95} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Value, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 96:
msg := &IOSScreenChanges{ meta: &meta{ TypeID: 96} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.SkipData, err = ReadData(reader); err != nil { return nil, err }
return msg, nil
case 97:
msg := &IOSCrash{ meta: &meta{ TypeID: 97} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Name, err = ReadString(reader); err != nil { return nil, err }
if msg.Reason, err = ReadString(reader); err != nil { return nil, err }
if msg.Stacktrace, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 98:
msg := &IOSScreenEnter{ meta: &meta{ TypeID: 98} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Title, err = ReadString(reader); err != nil { return nil, err }
if msg.ViewName, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 99:
msg := &IOSScreenLeave{ meta: &meta{ TypeID: 99} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Title, err = ReadString(reader); err != nil { return nil, err }
if msg.ViewName, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 100:
msg := &IOSClickEvent{ meta: &meta{ TypeID: 100} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Label, err = ReadString(reader); err != nil { return nil, err }
if msg.X, err = ReadUint(reader); err != nil { return nil, err }
if msg.Y, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
case 101:
msg := &IOSInputEvent{ meta: &meta{ TypeID: 101} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Value, err = ReadString(reader); err != nil { return nil, err }
if msg.ValueMasked, err = ReadBoolean(reader); err != nil { return nil, err }
if msg.Label, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 102:
msg := &IOSPerformanceEvent{ meta: &meta{ TypeID: 102} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Name, err = ReadString(reader); err != nil { return nil, err }
if msg.Value, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
case 103:
msg := &IOSLog{ meta: &meta{ TypeID: 103} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Severity, err = ReadString(reader); err != nil { return nil, err }
if msg.Content, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 104:
msg := &IOSInternalError{ meta: &meta{ TypeID: 104} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Content, err = ReadString(reader); err != nil { return nil, err }
return msg, nil
case 105:
msg := &IOSNetworkCall{ meta: &meta{ TypeID: 105} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Length, err = ReadUint(reader); err != nil { return nil, err }
if msg.Duration, err = ReadUint(reader); err != nil { return nil, err }
if msg.Headers, err = ReadString(reader); err != nil { return nil, err }
if msg.Body, err = ReadString(reader); err != nil { return nil, err }
if msg.URL, err = ReadString(reader); err != nil { return nil, err }
if msg.Success, err = ReadBoolean(reader); err != nil { return nil, err }
if msg.Method, err = ReadString(reader); err != nil { return nil, err }
if msg.Status, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
case 110:
msg := &IOSPerformanceAggregated{ meta: &meta{ TypeID: 110} }
if msg.TimestampStart, err = ReadUint(reader); err != nil { return nil, err }
if msg.TimestampEnd, err = ReadUint(reader); err != nil { return nil, err }
if msg.MinFPS, err = ReadUint(reader); err != nil { return nil, err }
if msg.AvgFPS, err = ReadUint(reader); err != nil { return nil, err }
if msg.MaxFPS, err = ReadUint(reader); err != nil { return nil, err }
if msg.MinCPU, err = ReadUint(reader); err != nil { return nil, err }
if msg.AvgCPU, err = ReadUint(reader); err != nil { return nil, err }
if msg.MaxCPU, err = ReadUint(reader); err != nil { return nil, err }
if msg.MinMemory, err = ReadUint(reader); err != nil { return nil, err }
if msg.AvgMemory, err = ReadUint(reader); err != nil { return nil, err }
if msg.MaxMemory, err = ReadUint(reader); err != nil { return nil, err }
if msg.MinBattery, err = ReadUint(reader); err != nil { return nil, err }
if msg.AvgBattery, err = ReadUint(reader); err != nil { return nil, err }
if msg.MaxBattery, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
case 111:
msg := &IOSIssueEvent{ meta: &meta{ TypeID: 111} }
if msg.Timestamp, err = ReadUint(reader); err != nil { return nil, err }
if msg.Type, err = ReadString(reader); err != nil { return nil, err }
if msg.ContextString, err = ReadString(reader); err != nil { return nil, err }
if msg.Context, err = ReadString(reader); err != nil { return nil, err }
if msg.Payload, err = ReadString(reader); err != nil { return nil, err }
case 70:
msg := &CreateIFrameDocument{ meta: &meta{ TypeID: 70} }
if msg.FrameID, err = ReadUint(reader); err != nil { return nil, err }
if msg.ID, err = ReadUint(reader); err != nil { return nil, err }
return msg, nil
}