New message with batchsize

This commit is contained in:
mauricio garcia suarez 2022-08-24 14:55:10 +02:00
parent 2c7235b768
commit 3381e3a081
4 changed files with 858 additions and 891 deletions

View file

@ -3,7 +3,7 @@ from kafka import KafkaConsumer
from datetime import datetime from datetime import datetime
from collections import defaultdict from collections import defaultdict
from msgcodec.codec import MessageCodec from msgcodec.msgcodec import MessageCodec
from msgcodec.messages import SessionEnd from msgcodec.messages import SessionEnd
from db.api import DBConnection from db.api import DBConnection
from db.models import events_detailed_table_name, events_table_name, sessions_table_name from db.models import events_detailed_table_name, events_table_name, sessions_table_name

View file

@ -1,7 +1,4 @@
import io import io
from typing import List
from msgcodec.messages import *
class Codec: class Codec:
""" """
@ -24,8 +21,6 @@ class Codec:
i = 0 # n of byte (max 9 for uint64) i = 0 # n of byte (max 9 for uint64)
while True: while True:
b = reader.read(1) b = reader.read(1)
if len(b) == 0:
raise IndexError('bytes out of range')
num = int.from_bytes(b, "big", signed=False) num = int.from_bytes(b, "big", signed=False)
# print(i, x) # print(i, x)
@ -65,755 +60,3 @@ class Codec:
return s.decode("utf-8", errors="replace").replace("\x00", "\uFFFD") return s.decode("utf-8", errors="replace").replace("\x00", "\uFFFD")
except UnicodeDecodeError: except UnicodeDecodeError:
return None return None
class MessageCodec(Codec):
def encode(self, m: Message) -> bytes:
...
def decode(self, b: bytes) -> Message:
reader = io.BytesIO(b)
return self.read_head_message(reader)
def decode_detailed(self, b: bytes) -> List[Message]:
reader = io.BytesIO(b)
messages_list = list()
while True:
try:
messages_list.append(self.read_head_message(reader))
except IndexError:
break
return messages_list
def read_head_message(self, reader: io.BytesIO) -> Message:
message_id = self.read_message_id(reader)
if message_id == 0:
return Timestamp(
timestamp=self.read_uint(reader)
)
if message_id == 1:
return SessionStart(
timestamp=self.read_uint(reader),
project_id=self.read_uint(reader),
tracker_version=self.read_string(reader),
rev_id=self.read_string(reader),
user_uuid=self.read_string(reader),
user_agent=self.read_string(reader),
user_os=self.read_string(reader),
user_os_version=self.read_string(reader),
user_browser=self.read_string(reader),
user_browser_version=self.read_string(reader),
user_device=self.read_string(reader),
user_device_type=self.read_string(reader),
user_device_memory_size=self.read_uint(reader),
user_device_heap_size=self.read_uint(reader),
user_country=self.read_string(reader)
)
if message_id == 2:
return SessionDisconnect(
timestamp=self.read_uint(reader)
)
if message_id == 3:
return SessionEnd(
timestamp=self.read_uint(reader)
)
if message_id == 4:
return SetPageLocation(
url=self.read_string(reader),
referrer=self.read_string(reader),
navigation_start=self.read_uint(reader)
)
if message_id == 5:
return SetViewportSize(
width=self.read_uint(reader),
height=self.read_uint(reader)
)
if message_id == 6:
return SetViewportScroll(
x=self.read_int(reader),
y=self.read_int(reader)
)
if message_id == 7:
return CreateDocument()
if message_id == 8:
return CreateElementNode(
id=self.read_uint(reader),
parent_id=self.read_uint(reader),
index=self.read_uint(reader),
tag=self.read_string(reader),
svg=self.read_boolean(reader),
)
if message_id == 9:
return CreateTextNode(
id=self.read_uint(reader),
parent_id=self.read_uint(reader),
index=self.read_uint(reader)
)
if message_id == 10:
return MoveNode(
id=self.read_uint(reader),
parent_id=self.read_uint(reader),
index=self.read_uint(reader)
)
if message_id == 11:
return RemoveNode(
id=self.read_uint(reader)
)
if message_id == 12:
return SetNodeAttribute(
id=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 13:
return RemoveNodeAttribute(
id=self.read_uint(reader),
name=self.read_string(reader)
)
if message_id == 14:
return SetNodeData(
id=self.read_uint(reader),
data=self.read_string(reader)
)
if message_id == 15:
return SetCSSData(
id=self.read_uint(reader),
data=self.read_string(reader)
)
if message_id == 16:
return SetNodeScroll(
id=self.read_uint(reader),
x=self.read_int(reader),
y=self.read_int(reader),
)
if message_id == 17:
return SetInputTarget(
id=self.read_uint(reader),
label=self.read_string(reader)
)
if message_id == 18:
return SetInputValue(
id=self.read_uint(reader),
value=self.read_string(reader),
mask=self.read_int(reader),
)
if message_id == 19:
return SetInputChecked(
id=self.read_uint(reader),
checked=self.read_boolean(reader)
)
if message_id == 20:
return MouseMove(
x=self.read_uint(reader),
y=self.read_uint(reader)
)
if message_id == 21:
return MouseClickDepricated(
id=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader)
)
if message_id == 22:
return ConsoleLog(
level=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 23:
return PageLoadTiming(
request_start=self.read_uint(reader),
response_start=self.read_uint(reader),
response_end=self.read_uint(reader),
dom_content_loaded_event_start=self.read_uint(reader),
dom_content_loaded_event_end=self.read_uint(reader),
load_event_start=self.read_uint(reader),
load_event_end=self.read_uint(reader),
first_paint=self.read_uint(reader),
first_contentful_paint=self.read_uint(reader)
)
if message_id == 24:
return PageRenderTiming(
speed_index=self.read_uint(reader),
visually_complete=self.read_uint(reader),
time_to_interactive=self.read_uint(reader),
)
if message_id == 25:
return JSException(
name=self.read_string(reader),
message=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 26:
return RawErrorEvent(
timestamp=self.read_uint(reader),
source=self.read_string(reader),
name=self.read_string(reader),
message=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 27:
return RawCustomEvent(
name=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 28:
return UserID(
id=self.read_string(reader)
)
if message_id == 29:
return UserAnonymousID(
id=self.read_string(reader)
)
if message_id == 30:
return Metadata(
key=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 31:
return PageEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
url=self.read_string(reader),
referrer=self.read_string(reader),
loaded=self.read_boolean(reader),
request_start=self.read_uint(reader),
response_start=self.read_uint(reader),
response_end=self.read_uint(reader),
dom_content_loaded_event_start=self.read_uint(reader),
dom_content_loaded_event_end=self.read_uint(reader),
load_event_start=self.read_uint(reader),
load_event_end=self.read_uint(reader),
first_paint=self.read_uint(reader),
first_contentful_paint=self.read_uint(reader),
speed_index=self.read_uint(reader),
visually_complete=self.read_uint(reader),
time_to_interactive=self.read_uint(reader)
)
if message_id == 32:
return InputEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
value=self.read_string(reader),
value_masked=self.read_boolean(reader),
label=self.read_string(reader),
)
if message_id == 33:
return ClickEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader)
)
if message_id == 34:
return ErrorEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
source=self.read_string(reader),
name=self.read_string(reader),
message=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 35:
message_id = self.read_uint(reader)
ts = self.read_uint(reader)
if ts > 9999999999999:
ts = None
return ResourceEvent(
message_id=message_id,
timestamp=ts,
duration=self.read_uint(reader),
ttfb=self.read_uint(reader),
header_size=self.read_uint(reader),
encoded_body_size=self.read_uint(reader),
decoded_body_size=self.read_uint(reader),
url=self.read_string(reader),
type=self.read_string(reader),
success=self.read_boolean(reader),
method=self.read_string(reader),
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),
rule=self.read_string(reader),
index=self.read_uint(reader)
)
if message_id == 38:
return CSSDeleteRule(
id=self.read_uint(reader),
index=self.read_uint(reader)
)
if message_id == 39:
return Fetch(
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),
timestamp=self.read_uint(reader),
duration=self.read_uint(reader)
)
if message_id == 40:
return Profiler(
name=self.read_string(reader),
duration=self.read_uint(reader),
args=self.read_string(reader),
result=self.read_string(reader)
)
if message_id == 41:
return OTable(
key=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 42:
return StateAction(
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),
state=self.read_string(reader),
duration=self.read_uint(reader)
)
if message_id == 45:
return Vuex(
mutation=self.read_string(reader),
state=self.read_string(reader),
)
if message_id == 46:
return MobX(
type=self.read_string(reader),
payload=self.read_string(reader),
)
if message_id == 47:
return NgRx(
action=self.read_string(reader),
state=self.read_string(reader),
duration=self.read_uint(reader)
)
if message_id == 48:
return GraphQL(
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 == 49:
return PerformanceTrack(
frames=self.read_int(reader),
ticks=self.read_int(reader),
total_js_heap_size=self.read_uint(reader),
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),
name=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)
)
if message_id == 53:
return ResourceTiming(
timestamp=self.read_uint(reader),
duration=self.read_uint(reader),
ttfb=self.read_uint(reader),
header_size=self.read_uint(reader),
encoded_body_size=self.read_uint(reader),
decoded_body_size=self.read_uint(reader),
url=self.read_string(reader),
initiator=self.read_string(reader)
)
if message_id == 54:
return ConnectionInformation(
downlink=self.read_uint(reader),
type=self.read_string(reader)
)
if message_id == 55:
return SetPageVisibility(
hidden=self.read_boolean(reader)
)
if message_id == 56:
return PerformanceTrackAggr(
timestamp_start=self.read_uint(reader),
timestamp_end=self.read_uint(reader),
min_fps=self.read_uint(reader),
avg_fps=self.read_uint(reader),
max_fps=self.read_uint(reader),
min_cpu=self.read_uint(reader),
avg_cpu=self.read_uint(reader),
max_cpu=self.read_uint(reader),
min_total_js_heap_size=self.read_uint(reader),
avg_total_js_heap_size=self.read_uint(reader),
max_total_js_heap_size=self.read_uint(reader),
min_used_js_heap_size=self.read_uint(reader),
avg_used_js_heap_size=self.read_uint(reader),
max_used_js_heap_size=self.read_uint(reader)
)
if message_id == 59:
return LongTask(
timestamp=self.read_uint(reader),
duration=self.read_uint(reader),
context=self.read_uint(reader),
container_type=self.read_uint(reader),
container_src=self.read_string(reader),
container_id=self.read_string(reader),
container_name=self.read_string(reader)
)
if message_id == 60:
return SetNodeURLBasedAttribute(
id=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_string(reader),
base_url=self.read_string(reader)
)
if message_id == 61:
return SetStyleData(
id=self.read_uint(reader),
data=self.read_string(reader),
base_url=self.read_string(reader)
)
if message_id == 62:
return IssueEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
type=self.read_string(reader),
context_string=self.read_string(reader),
context=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 63:
return TechnicalInfo(
type=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 64:
return CustomIssue(
name=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 65:
return PageClose()
if message_id == 66:
return AssetCache(
url=self.read_string(reader)
)
if message_id == 67:
return CSSInsertRuleURLBased(
id=self.read_uint(reader),
rule=self.read_string(reader),
index=self.read_uint(reader),
base_url=self.read_string(reader)
)
if message_id == 69:
return MouseClick(
id=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader),
selector=self.read_string(reader)
)
if message_id == 70:
return CreateIFrameDocument(
frame_id=self.read_uint(reader),
id=self.read_uint(reader)
)
if message_id == 80:
return BatchMeta(
page_no=self.read_uint(reader),
first_index=self.read_uint(reader),
timestamp=self.read_int(reader)
)
if message_id == 90:
return IOSSessionStart(
timestamp=self.read_uint(reader),
project_id=self.read_uint(reader),
tracker_version=self.read_string(reader),
rev_id=self.read_string(reader),
user_uuid=self.read_string(reader),
user_os=self.read_string(reader),
user_os_version=self.read_string(reader),
user_device=self.read_string(reader),
user_device_type=self.read_string(reader),
user_country=self.read_string(reader)
)
if message_id == 91:
return IOSSessionEnd(
timestamp=self.read_uint(reader)
)
if message_id == 92:
return IOSMetadata(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
key=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 93:
return IOSCustomEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
name=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 94:
return IOSUserID(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
value=self.read_string(reader)
)
if message_id == 95:
return IOSUserAnonymousID(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
value=self.read_string(reader)
)
if message_id == 96:
return IOSScreenChanges(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
x=self.read_uint(reader),
y=self.read_uint(reader),
width=self.read_uint(reader),
height=self.read_uint(reader)
)
if message_id == 97:
return IOSCrash(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
name=self.read_string(reader),
reason=self.read_string(reader),
stacktrace=self.read_string(reader)
)
if message_id == 98:
return IOSScreenEnter(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
title=self.read_string(reader),
view_name=self.read_string(reader)
)
if message_id == 99:
return IOSScreenLeave(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
title=self.read_string(reader),
view_name=self.read_string(reader)
)
if message_id == 100:
return IOSClickEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
label=self.read_string(reader),
x=self.read_uint(reader),
y=self.read_uint(reader)
)
if message_id == 101:
return IOSInputEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
value=self.read_string(reader),
value_masked=self.read_boolean(reader),
label=self.read_string(reader)
)
if message_id == 102:
return IOSPreformanceEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_uint(reader)
)
if message_id == 103:
return IOSLog(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
severity=self.read_string(reader),
content=self.read_string(reader)
)
if message_id == 104:
return IOSInternalError(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
content=self.read_string(reader)
)
if message_id == 105:
return IOSNetworkCall(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
duration=self.read_uint(reader),
headers=self.read_string(reader),
body=self.read_string(reader),
url=self.read_string(reader),
success=self.read_boolean(reader),
method=self.read_string(reader),
status=self.read_uint(reader)
)
if message_id == 107:
return IOSBatchMeta(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
first_index=self.read_uint(reader)
)
if message_id == 110:
return IOSPerformanceAggregated(
timestamp_start=self.read_uint(reader),
timestamp_end=self.read_uint(reader),
min_fps=self.read_uint(reader),
avg_fps=self.read_uint(reader),
max_fps=self.read_uint(reader),
min_cpu=self.read_uint(reader),
avg_cpu=self.read_uint(reader),
max_cpu=self.read_uint(reader),
min_memory=self.read_uint(reader),
avg_memory=self.read_uint(reader),
max_memory=self.read_uint(reader),
min_battery=self.read_uint(reader),
avg_battery=self.read_uint(reader),
max_battery=self.read_uint(reader)
)
if message_id == 111:
return IOSIssueEvent(
timestamp=self.read_uint(reader),
type=self.read_string(reader),
context_string=self.read_string(reader),
context=self.read_string(reader),
payload=self.read_string(reader)
)
def read_message_id(self, reader: io.BytesIO) -> int:
"""
Read and return the first byte where the message id is encoded
"""
id_ = self.read_uint(reader)
return id_
@staticmethod
def check_message_id(b: bytes) -> int:
"""
todo: make it static and without reader. It's just the first byte
Read and return the first byte where the message id is encoded
"""
reader = io.BytesIO(b)
id_ = Codec.read_uint(reader)
return id_
@staticmethod
def decode_key(b) -> int:
"""
Decode the message key (encoded with little endian)
"""
try:
decoded = int.from_bytes(b, "little", signed=False)
except Exception as e:
raise UnicodeDecodeError(f"Error while decoding message key (SessionID) from {b}\n{e}")
return decoded

View file

@ -1,13 +1,39 @@
""" # Auto-generated, do not edit
Representations of Kafka messages
"""
from abc import ABC
from abc import ABC
class Message(ABC): class Message(ABC):
pass pass
class BatchMeta(Message):
__id__ = 80
def __init__(self, page_no, first_index, timestamp):
self.page_no = page_no
self.first_index = first_index
self.timestamp = timestamp
class BatchMetadata(Message):
__id__ = 81
def __init__(self, version, page_no, first_index, timestamp, location):
self.version = version
self.page_no = page_no
self.first_index = first_index
self.timestamp = timestamp
self.location = location
class PartitionedMessage(Message):
__id__ = 82
def __init__(self, part_no, part_total):
self.part_no = part_no
self.part_total = part_total
class Timestamp(Message): class Timestamp(Message):
__id__ = 0 __id__ = 0
@ -18,10 +44,7 @@ class Timestamp(Message):
class SessionStart(Message): class SessionStart(Message):
__id__ = 1 __id__ = 1
def __init__(self, timestamp, project_id, tracker_version, rev_id, user_uuid, def __init__(self, timestamp, project_id, tracker_version, rev_id, user_uuid, user_agent, user_os, user_os_version, user_browser, user_browser_version, user_device, user_device_type, user_device_memory_size, user_device_heap_size, user_country, user_id):
user_agent, user_os, user_os_version, user_browser, user_browser_version,
user_device, user_device_type, user_device_memory_size, user_device_heap_size,
user_country):
self.timestamp = timestamp self.timestamp = timestamp
self.project_id = project_id self.project_id = project_id
self.tracker_version = tracker_version self.tracker_version = tracker_version
@ -37,6 +60,7 @@ class SessionStart(Message):
self.user_device_memory_size = user_device_memory_size self.user_device_memory_size = user_device_memory_size
self.user_device_heap_size = user_device_heap_size self.user_device_heap_size = user_device_heap_size
self.user_country = user_country self.user_country = user_country
self.user_id = user_id
class SessionDisconnect(Message): class SessionDisconnect(Message):
@ -48,7 +72,6 @@ class SessionDisconnect(Message):
class SessionEnd(Message): class SessionEnd(Message):
__id__ = 3 __id__ = 3
__name__ = 'SessionEnd'
def __init__(self, timestamp): def __init__(self, timestamp):
self.timestamp = timestamp self.timestamp = timestamp
@ -82,13 +105,17 @@ class SetViewportScroll(Message):
class CreateDocument(Message): class CreateDocument(Message):
__id__ = 7 __id__ = 7
def __init__(self, ):
pass
class CreateElementNode(Message): class CreateElementNode(Message):
__id__ = 8 __id__ = 8
def __init__(self, id, parent_id, index, tag, svg): def __init__(self, id, parent_id, index, tag, svg):
self.id = id self.id = id
self.parent_id = parent_id, self.parent_id = parent_id
self.index = index self.index = index
self.tag = tag self.tag = tag
self.svg = svg self.svg = svg
@ -122,7 +149,7 @@ class RemoveNode(Message):
class SetNodeAttribute(Message): class SetNodeAttribute(Message):
__id__ = 12 __id__ = 12
def __init__(self, id, name: str, value: str): def __init__(self, id, name, value):
self.id = id self.id = id
self.name = name self.name = name
self.value = value self.value = value
@ -131,7 +158,7 @@ class SetNodeAttribute(Message):
class RemoveNodeAttribute(Message): class RemoveNodeAttribute(Message):
__id__ = 13 __id__ = 13
def __init__(self, id, name: str): def __init__(self, id, name):
self.id = id self.id = id
self.name = name self.name = name
@ -139,7 +166,7 @@ class RemoveNodeAttribute(Message):
class SetNodeData(Message): class SetNodeData(Message):
__id__ = 14 __id__ = 14
def __init__(self, id, data: str): def __init__(self, id, data):
self.id = id self.id = id
self.data = data self.data = data
@ -147,7 +174,7 @@ class SetNodeData(Message):
class SetCSSData(Message): class SetCSSData(Message):
__id__ = 15 __id__ = 15
def __init__(self, id, data: str): def __init__(self, id, data):
self.id = id self.id = id
self.data = data self.data = data
@ -155,7 +182,7 @@ class SetCSSData(Message):
class SetNodeScroll(Message): class SetNodeScroll(Message):
__id__ = 16 __id__ = 16
def __init__(self, id, x: int, y: int): def __init__(self, id, x, y):
self.id = id self.id = id
self.x = x self.x = x
self.y = y self.y = y
@ -164,7 +191,7 @@ class SetNodeScroll(Message):
class SetInputTarget(Message): class SetInputTarget(Message):
__id__ = 17 __id__ = 17
def __init__(self, id, label: str): def __init__(self, id, label):
self.id = id self.id = id
self.label = label self.label = label
@ -172,7 +199,7 @@ class SetInputTarget(Message):
class SetInputValue(Message): class SetInputValue(Message):
__id__ = 18 __id__ = 18
def __init__(self, id, value: str, mask: int): def __init__(self, id, value, mask):
self.id = id self.id = id
self.value = value self.value = value
self.mask = mask self.mask = mask
@ -181,7 +208,7 @@ class SetInputValue(Message):
class SetInputChecked(Message): class SetInputChecked(Message):
__id__ = 19 __id__ = 19
def __init__(self, id, checked: bool): def __init__(self, id, checked):
self.id = id self.id = id
self.checked = checked self.checked = checked
@ -197,7 +224,7 @@ class MouseMove(Message):
class MouseClickDepricated(Message): class MouseClickDepricated(Message):
__id__ = 21 __id__ = 21
def __init__(self, id, hesitation_time, label: str): def __init__(self, id, hesitation_time, label):
self.id = id self.id = id
self.hesitation_time = hesitation_time self.hesitation_time = hesitation_time
self.label = label self.label = label
@ -206,7 +233,7 @@ class MouseClickDepricated(Message):
class ConsoleLog(Message): class ConsoleLog(Message):
__id__ = 22 __id__ = 22
def __init__(self, level: str, value: str): def __init__(self, level, value):
self.level = level self.level = level
self.value = value self.value = value
@ -214,9 +241,7 @@ class ConsoleLog(Message):
class PageLoadTiming(Message): class PageLoadTiming(Message):
__id__ = 23 __id__ = 23
def __init__(self, request_start, response_start, response_end, dom_content_loaded_event_start, def __init__(self, request_start, response_start, response_end, dom_content_loaded_event_start, dom_content_loaded_event_end, load_event_start, load_event_end, first_paint, first_contentful_paint):
dom_content_loaded_event_end, load_event_start, load_event_end,
first_paint, first_contentful_paint):
self.request_start = request_start self.request_start = request_start
self.response_start = response_start self.response_start = response_start
self.response_end = response_end self.response_end = response_end
@ -236,20 +261,20 @@ class PageRenderTiming(Message):
self.visually_complete = visually_complete self.visually_complete = visually_complete
self.time_to_interactive = time_to_interactive self.time_to_interactive = time_to_interactive
class JSException(Message): class JSException(Message):
__id__ = 25 __id__ = 25
def __init__(self, name: str, message: str, payload: str): def __init__(self, name, message, payload):
self.name = name self.name = name
self.message = message self.message = message
self.payload = payload self.payload = payload
class RawErrorEvent(Message): class IntegrationEvent(Message):
__id__ = 26 __id__ = 26
def __init__(self, timestamp, source: str, name: str, message: str, def __init__(self, timestamp, source, name, message, payload):
payload: str):
self.timestamp = timestamp self.timestamp = timestamp
self.source = source self.source = source
self.name = name self.name = name
@ -260,7 +285,7 @@ class RawErrorEvent(Message):
class RawCustomEvent(Message): class RawCustomEvent(Message):
__id__ = 27 __id__ = 27
def __init__(self, name: str, payload: str): def __init__(self, name, payload):
self.name = name self.name = name
self.payload = payload self.payload = payload
@ -268,44 +293,29 @@ class RawCustomEvent(Message):
class UserID(Message): class UserID(Message):
__id__ = 28 __id__ = 28
def __init__(self, id: str): def __init__(self, id):
self.id = id self.id = id
class UserAnonymousID(Message): class UserAnonymousID(Message):
__id__ = 29 __id__ = 29
def __init__(self, id: str): def __init__(self, id):
self.id = id self.id = id
class Metadata(Message): class Metadata(Message):
__id__ = 30 __id__ = 30
def __init__(self, key: str, value: str): def __init__(self, key, value):
self.key = key self.key = key
self.value = value self.value = value
class PerformanceTrack(Message):
__id__ = 49
def __init__(self, frames: int, ticks: int, total_js_heap_size,
used_js_heap_size):
self.frames = frames
self.ticks = ticks
self.total_js_heap_size = total_js_heap_size
self.used_js_heap_size = used_js_heap_size
class PageEvent(Message): class PageEvent(Message):
__id__ = 31 __id__ = 31
def __init__(self, message_id, timestamp, url: str, referrer: str, def __init__(self, message_id, timestamp, url, referrer, loaded, request_start, response_start, response_end, dom_content_loaded_event_start, dom_content_loaded_event_end, load_event_start, load_event_end, first_paint, first_contentful_paint, speed_index, visually_complete, time_to_interactive):
loaded: bool, request_start, response_start, response_end,
dom_content_loaded_event_start, dom_content_loaded_event_end,
load_event_start, load_event_end, first_paint, first_contentful_paint,
speed_index, visually_complete, time_to_interactive):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.url = url self.url = url
@ -328,7 +338,7 @@ class PageEvent(Message):
class InputEvent(Message): class InputEvent(Message):
__id__ = 32 __id__ = 32
def __init__(self, message_id, timestamp, value: str, value_masked: bool, label: str): def __init__(self, message_id, timestamp, value, value_masked, label):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.value = value self.value = value
@ -339,18 +349,18 @@ class InputEvent(Message):
class ClickEvent(Message): class ClickEvent(Message):
__id__ = 33 __id__ = 33
def __init__(self, message_id, timestamp, hesitation_time, label: str): def __init__(self, message_id, timestamp, hesitation_time, label, selector):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.hesitation_time = hesitation_time self.hesitation_time = hesitation_time
self.label = label self.label = label
self.selector = selector
class ErrorEvent(Message): class ErrorEvent(Message):
__id__ = 34 __id__ = 34
def __init__(self, message_id, timestamp, source: str, name: str, message: str, def __init__(self, message_id, timestamp, source, name, message, payload):
payload: str):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.source = source self.source = source
@ -362,8 +372,7 @@ class ErrorEvent(Message):
class ResourceEvent(Message): class ResourceEvent(Message):
__id__ = 35 __id__ = 35
def __init__(self, message_id, timestamp, duration, ttfb, header_size, encoded_body_size, def __init__(self, message_id, timestamp, duration, ttfb, header_size, encoded_body_size, decoded_body_size, url, type, success, method, status):
decoded_body_size, url: str, type: str, success: bool, method: str, status):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.duration = duration self.duration = duration
@ -381,7 +390,7 @@ class ResourceEvent(Message):
class CustomEvent(Message): class CustomEvent(Message):
__id__ = 36 __id__ = 36
def __init__(self, message_id, timestamp, name: str, payload: str): def __init__(self, message_id, timestamp, name, payload):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.name = name self.name = name
@ -391,7 +400,7 @@ class CustomEvent(Message):
class CSSInsertRule(Message): class CSSInsertRule(Message):
__id__ = 37 __id__ = 37
def __init__(self, id, rule: str, index): def __init__(self, id, rule, index):
self.id = id self.id = id
self.rule = rule self.rule = rule
self.index = index self.index = index
@ -408,8 +417,7 @@ class CSSDeleteRule(Message):
class Fetch(Message): class Fetch(Message):
__id__ = 39 __id__ = 39
def __init__(self, method: str, url: str, request: str, response: str, status, def __init__(self, method, url, request, response, status, timestamp, duration):
timestamp, duration):
self.method = method self.method = method
self.url = url self.url = url
self.request = request self.request = request
@ -422,7 +430,7 @@ class Fetch(Message):
class Profiler(Message): class Profiler(Message):
__id__ = 40 __id__ = 40
def __init__(self, name: str, duration, args: str, result: str): def __init__(self, name, duration, args, result):
self.name = name self.name = name
self.duration = duration self.duration = duration
self.args = args self.args = args
@ -432,7 +440,7 @@ class Profiler(Message):
class OTable(Message): class OTable(Message):
__id__ = 41 __id__ = 41
def __init__(self, key: str, value: str): def __init__(self, key, value):
self.key = key self.key = key
self.value = value self.value = value
@ -440,14 +448,14 @@ class OTable(Message):
class StateAction(Message): class StateAction(Message):
__id__ = 42 __id__ = 42
def __init__(self, type: str): def __init__(self, type):
self.type = type self.type = type
class StateActionEvent(Message): class StateActionEvent(Message):
__id__ = 43 __id__ = 43
def __init__(self, message_id, timestamp, type: str): def __init__(self, message_id, timestamp, type):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.type = type self.type = type
@ -456,7 +464,7 @@ class StateActionEvent(Message):
class Redux(Message): class Redux(Message):
__id__ = 44 __id__ = 44
def __init__(self, action: str, state: str, duration): def __init__(self, action, state, duration):
self.action = action self.action = action
self.state = state self.state = state
self.duration = duration self.duration = duration
@ -465,7 +473,7 @@ class Redux(Message):
class Vuex(Message): class Vuex(Message):
__id__ = 45 __id__ = 45
def __init__(self, mutation: str, state: str): def __init__(self, mutation, state):
self.mutation = mutation self.mutation = mutation
self.state = state self.state = state
@ -473,7 +481,7 @@ class Vuex(Message):
class MobX(Message): class MobX(Message):
__id__ = 46 __id__ = 46
def __init__(self, type: str, payload: str): def __init__(self, type, payload):
self.type = type self.type = type
self.payload = payload self.payload = payload
@ -481,7 +489,7 @@ class MobX(Message):
class NgRx(Message): class NgRx(Message):
__id__ = 47 __id__ = 47
def __init__(self, action: str, state: str, duration): def __init__(self, action, state, duration):
self.action = action self.action = action
self.state = state self.state = state
self.duration = duration self.duration = duration
@ -490,8 +498,7 @@ class NgRx(Message):
class GraphQL(Message): class GraphQL(Message):
__id__ = 48 __id__ = 48
def __init__(self, operation_kind: str, operation_name: str, def __init__(self, operation_kind, operation_name, variables, response):
variables: str, response: str):
self.operation_kind = operation_kind self.operation_kind = operation_kind
self.operation_name = operation_name self.operation_name = operation_name
self.variables = variables self.variables = variables
@ -501,8 +508,7 @@ class GraphQL(Message):
class PerformanceTrack(Message): class PerformanceTrack(Message):
__id__ = 49 __id__ = 49
def __init__(self, frames: int, ticks: int, def __init__(self, frames, ticks, total_js_heap_size, used_js_heap_size):
total_js_heap_size, used_js_heap_size):
self.frames = frames self.frames = frames
self.ticks = ticks self.ticks = ticks
self.total_js_heap_size = total_js_heap_size self.total_js_heap_size = total_js_heap_size
@ -512,17 +518,19 @@ class PerformanceTrack(Message):
class GraphQLEvent(Message): class GraphQLEvent(Message):
__id__ = 50 __id__ = 50
def __init__(self, message_id, timestamp, name: str): def __init__(self, message_id, timestamp, operation_kind, operation_name, variables, response):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.name = name self.operation_kind = operation_kind
self.operation_name = operation_name
self.variables = variables
self.response = response
class FetchEvent(Message): class FetchEvent(Message):
__id__ = 51 __id__ = 51
def __init__(self, message_id, timestamp, method: str, url, request, response: str, def __init__(self, message_id, timestamp, method, url, request, response, status, duration):
status, duration):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.method = method self.method = method
@ -533,7 +541,7 @@ class FetchEvent(Message):
self.duration = duration self.duration = duration
class DomDrop(Message): class DOMDrop(Message):
__id__ = 52 __id__ = 52
def __init__(self, timestamp): def __init__(self, timestamp):
@ -543,8 +551,7 @@ class DomDrop(Message):
class ResourceTiming(Message): class ResourceTiming(Message):
__id__ = 53 __id__ = 53
def __init__(self, timestamp, duration, ttfb, header_size, encoded_body_size, def __init__(self, timestamp, duration, ttfb, header_size, encoded_body_size, decoded_body_size, url, initiator):
decoded_body_size, url, initiator):
self.timestamp = timestamp self.timestamp = timestamp
self.duration = duration self.duration = duration
self.ttfb = ttfb self.ttfb = ttfb
@ -558,7 +565,7 @@ class ResourceTiming(Message):
class ConnectionInformation(Message): class ConnectionInformation(Message):
__id__ = 54 __id__ = 54
def __init__(self, downlink, type: str): def __init__(self, downlink, type):
self.downlink = downlink self.downlink = downlink
self.type = type self.type = type
@ -566,19 +573,14 @@ class ConnectionInformation(Message):
class SetPageVisibility(Message): class SetPageVisibility(Message):
__id__ = 55 __id__ = 55
def __init__(self, hidden: bool): def __init__(self, hidden):
self.hidden = hidden self.hidden = hidden
class PerformanceTrackAggr(Message): class PerformanceTrackAggr(Message):
__id__ = 56 __id__ = 56
def __init__(self, timestamp_start, timestamp_end, min_fps, avg_fps, def __init__(self, timestamp_start, timestamp_end, min_fps, avg_fps, max_fps, min_cpu, avg_cpu, max_cpu, min_total_js_heap_size, avg_total_js_heap_size, max_total_js_heap_size, min_used_js_heap_size, avg_used_js_heap_size, max_used_js_heap_size):
max_fps, min_cpu, avg_cpu, max_cpu,
min_total_js_heap_size, avg_total_js_heap_size,
max_total_js_heap_size, min_used_js_heap_size,
avg_used_js_heap_size, max_used_js_heap_size
):
self.timestamp_start = timestamp_start self.timestamp_start = timestamp_start
self.timestamp_end = timestamp_end self.timestamp_end = timestamp_end
self.min_fps = min_fps self.min_fps = min_fps
@ -598,8 +600,7 @@ class PerformanceTrackAggr(Message):
class LongTask(Message): class LongTask(Message):
__id__ = 59 __id__ = 59
def __init__(self, timestamp, duration, context, container_type, container_src: str, def __init__(self, timestamp, duration, context, container_type, container_src, container_id, container_name):
container_id: str, container_name: str):
self.timestamp = timestamp self.timestamp = timestamp
self.duration = duration self.duration = duration
self.context = context self.context = context
@ -609,20 +610,20 @@ class LongTask(Message):
self.container_name = container_name self.container_name = container_name
class SetNodeURLBasedAttribute(Message): class SetNodeAttributeURLBased(Message):
__id__ = 60 __id__ = 60
def __init__(self, id, name: str, value: str, base_url: str): def __init__(self, id, name, value, base_url):
self.id = id self.id = id
self.name = name self.name = name
self.value = value self.value = value
self.base_url = base_url self.base_url = base_url
class SetStyleData(Message): class SetCSSDataURLBased(Message):
__id__ = 61 __id__ = 61
def __init__(self, id, data: str, base_url: str): def __init__(self, id, data, base_url):
self.id = id self.id = id
self.data = data self.data = data
self.base_url = base_url self.base_url = base_url
@ -631,8 +632,7 @@ class SetStyleData(Message):
class IssueEvent(Message): class IssueEvent(Message):
__id__ = 62 __id__ = 62
def __init__(self, message_id, timestamp, type: str, context_string: str, def __init__(self, message_id, timestamp, type, context_string, context, payload):
context: str, payload: str):
self.message_id = message_id self.message_id = message_id
self.timestamp = timestamp self.timestamp = timestamp
self.type = type self.type = type
@ -644,7 +644,7 @@ class IssueEvent(Message):
class TechnicalInfo(Message): class TechnicalInfo(Message):
__id__ = 63 __id__ = 63
def __init__(self, type: str, value: str): def __init__(self, type, value):
self.type = type self.type = type
self.value = value self.value = value
@ -652,15 +652,11 @@ class TechnicalInfo(Message):
class CustomIssue(Message): class CustomIssue(Message):
__id__ = 64 __id__ = 64
def __init__(self, name: str, payload: str): def __init__(self, name, payload):
self.name = name self.name = name
self.payload = payload self.payload = payload
class PageClose(Message):
__id__ = 65
class AssetCache(Message): class AssetCache(Message):
__id__ = 66 __id__ = 66
@ -681,7 +677,7 @@ class CSSInsertRuleURLBased(Message):
class MouseClick(Message): class MouseClick(Message):
__id__ = 69 __id__ = 69
def __init__(self, id, hesitation_time, label: str, selector): def __init__(self, id, hesitation_time, label, selector):
self.id = id self.id = id
self.hesitation_time = hesitation_time self.hesitation_time = hesitation_time
self.label = label self.label = label
@ -696,20 +692,19 @@ class CreateIFrameDocument(Message):
self.id = id self.id = id
class BatchMeta(Message): class IOSBatchMeta(Message):
__id__ = 80 __id__ = 107
def __init__(self, page_no, first_index, timestamp): def __init__(self, timestamp, length, first_index):
self.page_no = page_no
self.first_index = first_index
self.timestamp = timestamp self.timestamp = timestamp
self.length = length
self.first_index = first_index
class IOSSessionStart(Message): class IOSSessionStart(Message):
__id__ = 90 __id__ = 90
def __init__(self, timestamp, project_id, tracker_version: str, def __init__(self, timestamp, project_id, tracker_version, rev_id, user_uuid, user_os, user_os_version, user_device, user_device_type, user_country):
rev_id: str, user_uuid: str, user_os: str, user_os_version: str,
user_device: str, user_device_type: str, user_country: str):
self.timestamp = timestamp self.timestamp = timestamp
self.project_id = project_id self.project_id = project_id
self.tracker_version = tracker_version self.tracker_version = tracker_version
@ -732,7 +727,7 @@ class IOSSessionEnd(Message):
class IOSMetadata(Message): class IOSMetadata(Message):
__id__ = 92 __id__ = 92
def __init__(self, timestamp, length, key: str, value: str): def __init__(self, timestamp, length, key, value):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.key = key self.key = key
@ -742,7 +737,7 @@ class IOSMetadata(Message):
class IOSCustomEvent(Message): class IOSCustomEvent(Message):
__id__ = 93 __id__ = 93
def __init__(self, timestamp, length, name: str, payload: str): def __init__(self, timestamp, length, name, payload):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.name = name self.name = name
@ -752,7 +747,7 @@ class IOSCustomEvent(Message):
class IOSUserID(Message): class IOSUserID(Message):
__id__ = 94 __id__ = 94
def __init__(self, timestamp, length, value: str): def __init__(self, timestamp, length, value):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.value = value self.value = value
@ -761,7 +756,7 @@ class IOSUserID(Message):
class IOSUserAnonymousID(Message): class IOSUserAnonymousID(Message):
__id__ = 95 __id__ = 95
def __init__(self, timestamp, length, value: str): def __init__(self, timestamp, length, value):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.value = value self.value = value
@ -782,7 +777,7 @@ class IOSScreenChanges(Message):
class IOSCrash(Message): class IOSCrash(Message):
__id__ = 97 __id__ = 97
def __init__(self, timestamp, length, name: str, reason: str, stacktrace): def __init__(self, timestamp, length, name, reason, stacktrace):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.name = name self.name = name
@ -803,7 +798,7 @@ class IOSScreenEnter(Message):
class IOSScreenLeave(Message): class IOSScreenLeave(Message):
__id__ = 99 __id__ = 99
def __init__(self, timestamp, length, title: str, view_name: str): def __init__(self, timestamp, length, title, view_name):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.title = title self.title = title
@ -824,9 +819,10 @@ class IOSClickEvent(Message):
class IOSInputEvent(Message): class IOSInputEvent(Message):
__id__ = 101 __id__ = 101
def __init__(self, timestamp, length, value: str, value_masked: bool, label: str): def __init__(self, timestamp, length, value, value_masked, label):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.value = value
self.value_masked = value_masked self.value_masked = value_masked
self.label = label self.label = label
@ -834,7 +830,7 @@ class IOSInputEvent(Message):
class IOSPerformanceEvent(Message): class IOSPerformanceEvent(Message):
__id__ = 102 __id__ = 102
def __init__(self, timestamp, length, name: str, value): def __init__(self, timestamp, length, name, value):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.name = name self.name = name
@ -844,7 +840,7 @@ class IOSPerformanceEvent(Message):
class IOSLog(Message): class IOSLog(Message):
__id__ = 103 __id__ = 103
def __init__(self, timestamp, length, severity: str, content: str): def __init__(self, timestamp, length, severity, content):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.severity = severity self.severity = severity
@ -854,7 +850,7 @@ class IOSLog(Message):
class IOSInternalError(Message): class IOSInternalError(Message):
__id__ = 104 __id__ = 104
def __init__(self, timestamp, length, content: str): def __init__(self, timestamp, length, content):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.content = content self.content = content
@ -863,7 +859,7 @@ class IOSInternalError(Message):
class IOSNetworkCall(Message): class IOSNetworkCall(Message):
__id__ = 105 __id__ = 105
def __init__(self, timestamp, length, duration, headers, body, url, success: bool, method: str, status): def __init__(self, timestamp, length, duration, headers, body, url, success, method, status):
self.timestamp = timestamp self.timestamp = timestamp
self.length = length self.length = length
self.duration = duration self.duration = duration
@ -875,23 +871,10 @@ class IOSNetworkCall(Message):
self.status = status self.status = status
class IOSBatchMeta(Message):
__id__ = 107
def __init__(self, timestamp, length, first_index):
self.timestamp = timestamp
self.length = length
self.first_index = first_index
class IOSPerformanceAggregated(Message): class IOSPerformanceAggregated(Message):
__id__ = 110 __id__ = 110
def __init__(self, timestamp_start, timestamp_end, min_fps, avg_fps, def __init__(self, timestamp_start, timestamp_end, min_fps, avg_fps, max_fps, min_cpu, avg_cpu, max_cpu, min_memory, avg_memory, max_memory, min_battery, avg_battery, max_battery):
max_fps, min_cpu, avg_cpu, max_cpu,
min_memory, avg_memory, max_memory,
min_battery, avg_battery, max_battery
):
self.timestamp_start = timestamp_start self.timestamp_start = timestamp_start
self.timestamp_end = timestamp_end self.timestamp_end = timestamp_end
self.min_fps = min_fps self.min_fps = min_fps
@ -911,9 +894,11 @@ class IOSPerformanceAggregated(Message):
class IOSIssueEvent(Message): class IOSIssueEvent(Message):
__id__ = 111 __id__ = 111
def __init__(self, timestamp, type: str, context_string: str, context: str, payload: str): def __init__(self, timestamp, type, context_string, context, payload):
self.timestamp = timestamp self.timestamp = timestamp
self.type = type self.type = type
self.context_string = context_string self.context_string = context_string
self.context = context self.context = context
self.payload = payload self.payload = payload

View file

@ -0,0 +1,739 @@
# Auto-generated, do not edit
from msgcodec.codec import Codec
from msgcodec.messages import *
import io
class MessageCodec(Codec):
def read_message_id(self, reader: io.BytesIO) -> int:
"""
Read and return the first byte where the message id is encoded
"""
id_ = self.read_uint(reader)
return id_
def encode(self, m: Message) -> bytes:
...
def decode(self, b: bytes) -> Message:
reader = io.BytesIO(b)
message_id = self.read_message_id(reader)
if message_id == 80:
return BatchMeta(
page_no=self.read_uint(reader),
first_index=self.read_uint(reader),
timestamp=self.read_int(reader)
)
if message_id == 81:
return BatchMetadata(
version=self.read_uint(reader),
page_no=self.read_uint(reader),
first_index=self.read_uint(reader),
timestamp=self.read_int(reader),
location=self.read_string(reader)
)
if message_id == 82:
return PartitionedMessage(
part_no=self.read_uint(reader),
part_total=self.read_uint(reader)
)
if message_id == 0:
return Timestamp(
timestamp=self.read_uint(reader)
)
if message_id == 1:
return SessionStart(
timestamp=self.read_uint(reader),
project_id=self.read_uint(reader),
tracker_version=self.read_string(reader),
rev_id=self.read_string(reader),
user_uuid=self.read_string(reader),
user_agent=self.read_string(reader),
user_os=self.read_string(reader),
user_os_version=self.read_string(reader),
user_browser=self.read_string(reader),
user_browser_version=self.read_string(reader),
user_device=self.read_string(reader),
user_device_type=self.read_string(reader),
user_device_memory_size=self.read_uint(reader),
user_device_heap_size=self.read_uint(reader),
user_country=self.read_string(reader),
user_id=self.read_string(reader)
)
if message_id == 2:
return SessionDisconnect(
timestamp=self.read_uint(reader)
)
if message_id == 3:
return SessionEnd(
timestamp=self.read_uint(reader)
)
if message_id == 4:
return SetPageLocation(
url=self.read_string(reader),
referrer=self.read_string(reader),
navigation_start=self.read_uint(reader)
)
if message_id == 5:
return SetViewportSize(
width=self.read_uint(reader),
height=self.read_uint(reader)
)
if message_id == 6:
return SetViewportScroll(
x=self.read_int(reader),
y=self.read_int(reader)
)
if message_id == 7:
return CreateDocument(
)
if message_id == 8:
return CreateElementNode(
id=self.read_uint(reader),
parent_id=self.read_uint(reader),
index=self.read_uint(reader),
tag=self.read_string(reader),
svg=self.read_boolean(reader)
)
if message_id == 9:
return CreateTextNode(
id=self.read_uint(reader),
parent_id=self.read_uint(reader),
index=self.read_uint(reader)
)
if message_id == 10:
return MoveNode(
id=self.read_uint(reader),
parent_id=self.read_uint(reader),
index=self.read_uint(reader)
)
if message_id == 11:
return RemoveNode(
id=self.read_uint(reader)
)
if message_id == 12:
return SetNodeAttribute(
id=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 13:
return RemoveNodeAttribute(
id=self.read_uint(reader),
name=self.read_string(reader)
)
if message_id == 14:
return SetNodeData(
id=self.read_uint(reader),
data=self.read_string(reader)
)
if message_id == 15:
return SetCSSData(
id=self.read_uint(reader),
data=self.read_string(reader)
)
if message_id == 16:
return SetNodeScroll(
id=self.read_uint(reader),
x=self.read_int(reader),
y=self.read_int(reader)
)
if message_id == 17:
return SetInputTarget(
id=self.read_uint(reader),
label=self.read_string(reader)
)
if message_id == 18:
return SetInputValue(
id=self.read_uint(reader),
value=self.read_string(reader),
mask=self.read_int(reader)
)
if message_id == 19:
return SetInputChecked(
id=self.read_uint(reader),
checked=self.read_boolean(reader)
)
if message_id == 20:
return MouseMove(
x=self.read_uint(reader),
y=self.read_uint(reader)
)
if message_id == 21:
return MouseClickDepricated(
id=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader)
)
if message_id == 22:
return ConsoleLog(
level=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 23:
return PageLoadTiming(
request_start=self.read_uint(reader),
response_start=self.read_uint(reader),
response_end=self.read_uint(reader),
dom_content_loaded_event_start=self.read_uint(reader),
dom_content_loaded_event_end=self.read_uint(reader),
load_event_start=self.read_uint(reader),
load_event_end=self.read_uint(reader),
first_paint=self.read_uint(reader),
first_contentful_paint=self.read_uint(reader)
)
if message_id == 24:
return PageRenderTiming(
speed_index=self.read_uint(reader),
visually_complete=self.read_uint(reader),
time_to_interactive=self.read_uint(reader)
)
if message_id == 25:
return JSException(
name=self.read_string(reader),
message=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 26:
return IntegrationEvent(
timestamp=self.read_uint(reader),
source=self.read_string(reader),
name=self.read_string(reader),
message=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 27:
return RawCustomEvent(
name=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 28:
return UserID(
id=self.read_string(reader)
)
if message_id == 29:
return UserAnonymousID(
id=self.read_string(reader)
)
if message_id == 30:
return Metadata(
key=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 31:
return PageEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
url=self.read_string(reader),
referrer=self.read_string(reader),
loaded=self.read_boolean(reader),
request_start=self.read_uint(reader),
response_start=self.read_uint(reader),
response_end=self.read_uint(reader),
dom_content_loaded_event_start=self.read_uint(reader),
dom_content_loaded_event_end=self.read_uint(reader),
load_event_start=self.read_uint(reader),
load_event_end=self.read_uint(reader),
first_paint=self.read_uint(reader),
first_contentful_paint=self.read_uint(reader),
speed_index=self.read_uint(reader),
visually_complete=self.read_uint(reader),
time_to_interactive=self.read_uint(reader)
)
if message_id == 32:
return InputEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
value=self.read_string(reader),
value_masked=self.read_boolean(reader),
label=self.read_string(reader)
)
if message_id == 33:
return ClickEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader),
selector=self.read_string(reader)
)
if message_id == 34:
return ErrorEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
source=self.read_string(reader),
name=self.read_string(reader),
message=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 35:
return ResourceEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
duration=self.read_uint(reader),
ttfb=self.read_uint(reader),
header_size=self.read_uint(reader),
encoded_body_size=self.read_uint(reader),
decoded_body_size=self.read_uint(reader),
url=self.read_string(reader),
type=self.read_string(reader),
success=self.read_boolean(reader),
method=self.read_string(reader),
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),
rule=self.read_string(reader),
index=self.read_uint(reader)
)
if message_id == 38:
return CSSDeleteRule(
id=self.read_uint(reader),
index=self.read_uint(reader)
)
if message_id == 39:
return Fetch(
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),
timestamp=self.read_uint(reader),
duration=self.read_uint(reader)
)
if message_id == 40:
return Profiler(
name=self.read_string(reader),
duration=self.read_uint(reader),
args=self.read_string(reader),
result=self.read_string(reader)
)
if message_id == 41:
return OTable(
key=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 42:
return StateAction(
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),
state=self.read_string(reader),
duration=self.read_uint(reader)
)
if message_id == 45:
return Vuex(
mutation=self.read_string(reader),
state=self.read_string(reader)
)
if message_id == 46:
return MobX(
type=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 47:
return NgRx(
action=self.read_string(reader),
state=self.read_string(reader),
duration=self.read_uint(reader)
)
if message_id == 48:
return GraphQL(
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 == 49:
return PerformanceTrack(
frames=self.read_int(reader),
ticks=self.read_int(reader),
total_js_heap_size=self.read_uint(reader),
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)
)
if message_id == 53:
return ResourceTiming(
timestamp=self.read_uint(reader),
duration=self.read_uint(reader),
ttfb=self.read_uint(reader),
header_size=self.read_uint(reader),
encoded_body_size=self.read_uint(reader),
decoded_body_size=self.read_uint(reader),
url=self.read_string(reader),
initiator=self.read_string(reader)
)
if message_id == 54:
return ConnectionInformation(
downlink=self.read_uint(reader),
type=self.read_string(reader)
)
if message_id == 55:
return SetPageVisibility(
hidden=self.read_boolean(reader)
)
if message_id == 56:
return PerformanceTrackAggr(
timestamp_start=self.read_uint(reader),
timestamp_end=self.read_uint(reader),
min_fps=self.read_uint(reader),
avg_fps=self.read_uint(reader),
max_fps=self.read_uint(reader),
min_cpu=self.read_uint(reader),
avg_cpu=self.read_uint(reader),
max_cpu=self.read_uint(reader),
min_total_js_heap_size=self.read_uint(reader),
avg_total_js_heap_size=self.read_uint(reader),
max_total_js_heap_size=self.read_uint(reader),
min_used_js_heap_size=self.read_uint(reader),
avg_used_js_heap_size=self.read_uint(reader),
max_used_js_heap_size=self.read_uint(reader)
)
if message_id == 59:
return LongTask(
timestamp=self.read_uint(reader),
duration=self.read_uint(reader),
context=self.read_uint(reader),
container_type=self.read_uint(reader),
container_src=self.read_string(reader),
container_id=self.read_string(reader),
container_name=self.read_string(reader)
)
if message_id == 60:
return SetNodeAttributeURLBased(
id=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_string(reader),
base_url=self.read_string(reader)
)
if message_id == 61:
return SetCSSDataURLBased(
id=self.read_uint(reader),
data=self.read_string(reader),
base_url=self.read_string(reader)
)
if message_id == 62:
return IssueEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
type=self.read_string(reader),
context_string=self.read_string(reader),
context=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 63:
return TechnicalInfo(
type=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 64:
return CustomIssue(
name=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 66:
return AssetCache(
url=self.read_string(reader)
)
if message_id == 67:
return CSSInsertRuleURLBased(
id=self.read_uint(reader),
rule=self.read_string(reader),
index=self.read_uint(reader),
base_url=self.read_string(reader)
)
if message_id == 69:
return MouseClick(
id=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader),
selector=self.read_string(reader)
)
if message_id == 70:
return CreateIFrameDocument(
frame_id=self.read_uint(reader),
id=self.read_uint(reader)
)
if message_id == 107:
return IOSBatchMeta(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
first_index=self.read_uint(reader)
)
if message_id == 90:
return IOSSessionStart(
timestamp=self.read_uint(reader),
project_id=self.read_uint(reader),
tracker_version=self.read_string(reader),
rev_id=self.read_string(reader),
user_uuid=self.read_string(reader),
user_os=self.read_string(reader),
user_os_version=self.read_string(reader),
user_device=self.read_string(reader),
user_device_type=self.read_string(reader),
user_country=self.read_string(reader)
)
if message_id == 91:
return IOSSessionEnd(
timestamp=self.read_uint(reader)
)
if message_id == 92:
return IOSMetadata(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
key=self.read_string(reader),
value=self.read_string(reader)
)
if message_id == 93:
return IOSCustomEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
name=self.read_string(reader),
payload=self.read_string(reader)
)
if message_id == 94:
return IOSUserID(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
value=self.read_string(reader)
)
if message_id == 95:
return IOSUserAnonymousID(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
value=self.read_string(reader)
)
if message_id == 96:
return IOSScreenChanges(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
x=self.read_uint(reader),
y=self.read_uint(reader),
width=self.read_uint(reader),
height=self.read_uint(reader)
)
if message_id == 97:
return IOSCrash(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
name=self.read_string(reader),
reason=self.read_string(reader),
stacktrace=self.read_string(reader)
)
if message_id == 98:
return IOSScreenEnter(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
title=self.read_string(reader),
view_name=self.read_string(reader)
)
if message_id == 99:
return IOSScreenLeave(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
title=self.read_string(reader),
view_name=self.read_string(reader)
)
if message_id == 100:
return IOSClickEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
label=self.read_string(reader),
x=self.read_uint(reader),
y=self.read_uint(reader)
)
if message_id == 101:
return IOSInputEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
value=self.read_string(reader),
value_masked=self.read_boolean(reader),
label=self.read_string(reader)
)
if message_id == 102:
return IOSPerformanceEvent(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_uint(reader)
)
if message_id == 103:
return IOSLog(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
severity=self.read_string(reader),
content=self.read_string(reader)
)
if message_id == 104:
return IOSInternalError(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
content=self.read_string(reader)
)
if message_id == 105:
return IOSNetworkCall(
timestamp=self.read_uint(reader),
length=self.read_uint(reader),
duration=self.read_uint(reader),
headers=self.read_string(reader),
body=self.read_string(reader),
url=self.read_string(reader),
success=self.read_boolean(reader),
method=self.read_string(reader),
status=self.read_uint(reader)
)
if message_id == 110:
return IOSPerformanceAggregated(
timestamp_start=self.read_uint(reader),
timestamp_end=self.read_uint(reader),
min_fps=self.read_uint(reader),
avg_fps=self.read_uint(reader),
max_fps=self.read_uint(reader),
min_cpu=self.read_uint(reader),
avg_cpu=self.read_uint(reader),
max_cpu=self.read_uint(reader),
min_memory=self.read_uint(reader),
avg_memory=self.read_uint(reader),
max_memory=self.read_uint(reader),
min_battery=self.read_uint(reader),
avg_battery=self.read_uint(reader),
max_battery=self.read_uint(reader)
)
if message_id == 111:
return IOSIssueEvent(
timestamp=self.read_uint(reader),
type=self.read_string(reader),
context_string=self.read_string(reader),
context=self.read_string(reader),
payload=self.read_string(reader)
)