feat(ee/connectors+mobs): generatable message decoder for connectors

This commit is contained in:
ShiKhu 2022-07-22 13:59:41 +02:00
parent 3b19c2fddf
commit 544e05a081
4 changed files with 461 additions and 133 deletions

View file

@ -1,13 +1,20 @@
"""
Representations of Kafka messages
"""
from abc import ABC
# Auto-generated, do not edit
from abc import ABC
class Message(ABC):
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 Timestamp(Message):
__id__ = 0
@ -18,10 +25,7 @@ class Timestamp(Message):
class SessionStart(Message):
__id__ = 1
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):
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):
self.timestamp = timestamp
self.project_id = project_id
self.tracker_version = tracker_version
@ -37,6 +41,7 @@ class SessionStart(Message):
self.user_device_memory_size = user_device_memory_size
self.user_device_heap_size = user_device_heap_size
self.user_country = user_country
self.user_id = user_id
class SessionDisconnect(Message):
@ -48,7 +53,6 @@ class SessionDisconnect(Message):
class SessionEnd(Message):
__id__ = 3
__name__ = 'SessionEnd'
def __init__(self, timestamp):
self.timestamp = timestamp
@ -82,13 +86,16 @@ class SetViewportScroll(Message):
class CreateDocument(Message):
__id__ = 7
def __init__(self, ):
class CreateElementNode(Message):
__id__ = 8
def __init__(self, id, parent_id, index, tag, svg):
self.id = id
self.parent_id = parent_id,
self.parent_id = parent_id
self.index = index
self.tag = tag
self.svg = svg
@ -122,7 +129,7 @@ class RemoveNode(Message):
class SetNodeAttribute(Message):
__id__ = 12
def __init__(self, id, name: str, value: str):
def __init__(self, id, name, value):
self.id = id
self.name = name
self.value = value
@ -131,7 +138,7 @@ class SetNodeAttribute(Message):
class RemoveNodeAttribute(Message):
__id__ = 13
def __init__(self, id, name: str):
def __init__(self, id, name):
self.id = id
self.name = name
@ -139,7 +146,7 @@ class RemoveNodeAttribute(Message):
class SetNodeData(Message):
__id__ = 14
def __init__(self, id, data: str):
def __init__(self, id, data):
self.id = id
self.data = data
@ -147,7 +154,7 @@ class SetNodeData(Message):
class SetCSSData(Message):
__id__ = 15
def __init__(self, id, data: str):
def __init__(self, id, data):
self.id = id
self.data = data
@ -155,7 +162,7 @@ class SetCSSData(Message):
class SetNodeScroll(Message):
__id__ = 16
def __init__(self, id, x: int, y: int):
def __init__(self, id, x, y):
self.id = id
self.x = x
self.y = y
@ -164,7 +171,7 @@ class SetNodeScroll(Message):
class SetInputTarget(Message):
__id__ = 17
def __init__(self, id, label: str):
def __init__(self, id, label):
self.id = id
self.label = label
@ -172,7 +179,7 @@ class SetInputTarget(Message):
class SetInputValue(Message):
__id__ = 18
def __init__(self, id, value: str, mask: int):
def __init__(self, id, value, mask):
self.id = id
self.value = value
self.mask = mask
@ -181,7 +188,7 @@ class SetInputValue(Message):
class SetInputChecked(Message):
__id__ = 19
def __init__(self, id, checked: bool):
def __init__(self, id, checked):
self.id = id
self.checked = checked
@ -194,10 +201,10 @@ class MouseMove(Message):
self.y = y
class MouseClick(Message):
class MouseClickDepricated(Message):
__id__ = 21
def __init__(self, id, hesitation_time, label: str):
def __init__(self, id, hesitation_time, label):
self.id = id
self.hesitation_time = hesitation_time
self.label = label
@ -206,7 +213,7 @@ class MouseClick(Message):
class ConsoleLog(Message):
__id__ = 22
def __init__(self, level: str, value: str):
def __init__(self, level, value):
self.level = level
self.value = value
@ -214,9 +221,7 @@ class ConsoleLog(Message):
class PageLoadTiming(Message):
__id__ = 23
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):
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):
self.request_start = request_start
self.response_start = response_start
self.response_end = response_end
@ -236,20 +241,20 @@ class PageRenderTiming(Message):
self.visually_complete = visually_complete
self.time_to_interactive = time_to_interactive
class JSException(Message):
__id__ = 25
def __init__(self, name: str, message: str, payload: str):
def __init__(self, name, message, payload):
self.name = name
self.message = message
self.payload = payload
class RawErrorEvent(Message):
class IntegrationEvent(Message):
__id__ = 26
def __init__(self, timestamp, source: str, name: str, message: str,
payload: str):
def __init__(self, timestamp, source, name, message, payload):
self.timestamp = timestamp
self.source = source
self.name = name
@ -260,7 +265,7 @@ class RawErrorEvent(Message):
class RawCustomEvent(Message):
__id__ = 27
def __init__(self, name: str, payload: str):
def __init__(self, name, payload):
self.name = name
self.payload = payload
@ -268,44 +273,29 @@ class RawCustomEvent(Message):
class UserID(Message):
__id__ = 28
def __init__(self, id: str):
def __init__(self, id):
self.id = id
class UserAnonymousID(Message):
__id__ = 29
def __init__(self, id: str):
def __init__(self, id):
self.id = id
class Metadata(Message):
__id__ = 30
def __init__(self, key: str, value: str):
def __init__(self, key, value):
self.key = key
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):
__id__ = 31
def __init__(self, message_id, timestamp, url: str, referrer: str,
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):
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):
self.message_id = message_id
self.timestamp = timestamp
self.url = url
@ -328,7 +318,7 @@ class PageEvent(Message):
class InputEvent(Message):
__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.timestamp = timestamp
self.value = value
@ -339,18 +329,18 @@ class InputEvent(Message):
class ClickEvent(Message):
__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.timestamp = timestamp
self.hesitation_time = hesitation_time
self.label = label
self.selector = selector
class ErrorEvent(Message):
__id__ = 34
def __init__(self, message_id, timestamp, source: str, name: str, message: str,
payload: str):
def __init__(self, message_id, timestamp, source, name, message, payload):
self.message_id = message_id
self.timestamp = timestamp
self.source = source
@ -362,8 +352,7 @@ class ErrorEvent(Message):
class ResourceEvent(Message):
__id__ = 35
def __init__(self, message_id, timestamp, duration, ttfb, header_size, encoded_body_size,
decoded_body_size, url: str, type: str, success: bool, method: str, status):
def __init__(self, message_id, timestamp, duration, ttfb, header_size, encoded_body_size, decoded_body_size, url, type, success, method, status):
self.message_id = message_id
self.timestamp = timestamp
self.duration = duration
@ -381,7 +370,7 @@ class ResourceEvent(Message):
class CustomEvent(Message):
__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.timestamp = timestamp
self.name = name
@ -391,7 +380,7 @@ class CustomEvent(Message):
class CSSInsertRule(Message):
__id__ = 37
def __init__(self, id, rule: str, index):
def __init__(self, id, rule, index):
self.id = id
self.rule = rule
self.index = index
@ -408,8 +397,7 @@ class CSSDeleteRule(Message):
class Fetch(Message):
__id__ = 39
def __init__(self, method: str, url: str, request: str, response: str, status,
timestamp, duration):
def __init__(self, method, url, request, response, status, timestamp, duration):
self.method = method
self.url = url
self.request = request
@ -422,7 +410,7 @@ class Fetch(Message):
class Profiler(Message):
__id__ = 40
def __init__(self, name: str, duration, args: str, result: str):
def __init__(self, name, duration, args, result):
self.name = name
self.duration = duration
self.args = args
@ -432,7 +420,7 @@ class Profiler(Message):
class OTable(Message):
__id__ = 41
def __init__(self, key: str, value: str):
def __init__(self, key, value):
self.key = key
self.value = value
@ -440,14 +428,14 @@ class OTable(Message):
class StateAction(Message):
__id__ = 42
def __init__(self, type: str):
def __init__(self, type):
self.type = type
class StateActionEvent(Message):
__id__ = 43
def __init__(self, message_id, timestamp, type: str):
def __init__(self, message_id, timestamp, type):
self.message_id = message_id
self.timestamp = timestamp
self.type = type
@ -456,7 +444,7 @@ class StateActionEvent(Message):
class Redux(Message):
__id__ = 44
def __init__(self, action: str, state: str, duration):
def __init__(self, action, state, duration):
self.action = action
self.state = state
self.duration = duration
@ -465,7 +453,7 @@ class Redux(Message):
class Vuex(Message):
__id__ = 45
def __init__(self, mutation: str, state: str):
def __init__(self, mutation, state):
self.mutation = mutation
self.state = state
@ -473,7 +461,7 @@ class Vuex(Message):
class MobX(Message):
__id__ = 46
def __init__(self, type: str, payload: str):
def __init__(self, type, payload):
self.type = type
self.payload = payload
@ -481,7 +469,7 @@ class MobX(Message):
class NgRx(Message):
__id__ = 47
def __init__(self, action: str, state: str, duration):
def __init__(self, action, state, duration):
self.action = action
self.state = state
self.duration = duration
@ -490,8 +478,7 @@ class NgRx(Message):
class GraphQL(Message):
__id__ = 48
def __init__(self, operation_kind: str, operation_name: str,
variables: str, response: str):
def __init__(self, operation_kind, operation_name, variables, response):
self.operation_kind = operation_kind
self.operation_name = operation_name
self.variables = variables
@ -501,8 +488,7 @@ class GraphQL(Message):
class PerformanceTrack(Message):
__id__ = 49
def __init__(self, frames: int, ticks: int,
total_js_heap_size, used_js_heap_size):
def __init__(self, frames, ticks, total_js_heap_size, used_js_heap_size):
self.frames = frames
self.ticks = ticks
self.total_js_heap_size = total_js_heap_size
@ -512,13 +498,30 @@ class PerformanceTrack(Message):
class GraphQLEvent(Message):
__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.timestamp = timestamp
self.name = name
self.operation_kind = operation_kind
self.operation_name = operation_name
self.variables = variables
self.response = response
class DomDrop(Message):
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
def __init__(self, timestamp):
@ -528,8 +531,7 @@ class DomDrop(Message):
class ResourceTiming(Message):
__id__ = 53
def __init__(self, timestamp, duration, ttfb, header_size, encoded_body_size,
decoded_body_size, url, initiator):
def __init__(self, timestamp, duration, ttfb, header_size, encoded_body_size, decoded_body_size, url, initiator):
self.timestamp = timestamp
self.duration = duration
self.ttfb = ttfb
@ -543,7 +545,7 @@ class ResourceTiming(Message):
class ConnectionInformation(Message):
__id__ = 54
def __init__(self, downlink, type: str):
def __init__(self, downlink, type):
self.downlink = downlink
self.type = type
@ -551,19 +553,14 @@ class ConnectionInformation(Message):
class SetPageVisibility(Message):
__id__ = 55
def __init__(self, hidden: bool):
def __init__(self, hidden):
self.hidden = hidden
class PerformanceTrackAggr(Message):
__id__ = 56
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
):
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):
self.timestamp_start = timestamp_start
self.timestamp_end = timestamp_end
self.min_fps = min_fps
@ -583,8 +580,7 @@ class PerformanceTrackAggr(Message):
class LongTask(Message):
__id__ = 59
def __init__(self, timestamp, duration, context, container_type, container_src: str,
container_id: str, container_name: str):
def __init__(self, timestamp, duration, context, container_type, container_src, container_id, container_name):
self.timestamp = timestamp
self.duration = duration
self.context = context
@ -594,20 +590,20 @@ class LongTask(Message):
self.container_name = container_name
class SetNodeURLBasedAttribute(Message):
class SetNodeAttributeURLBased(Message):
__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.name = name
self.value = value
self.base_url = base_url
class SetStyleData(Message):
class SetCSSDataURLBased(Message):
__id__ = 61
def __init__(self, id, data: str, base_url: str):
def __init__(self, id, data, base_url):
self.id = id
self.data = data
self.base_url = base_url
@ -616,8 +612,7 @@ class SetStyleData(Message):
class IssueEvent(Message):
__id__ = 62
def __init__(self, message_id, timestamp, type: str, context_string: str,
context: str, payload: str):
def __init__(self, message_id, timestamp, type, context_string, context, payload):
self.message_id = message_id
self.timestamp = timestamp
self.type = type
@ -629,7 +624,7 @@ class IssueEvent(Message):
class TechnicalInfo(Message):
__id__ = 63
def __init__(self, type: str, value: str):
def __init__(self, type, value):
self.type = type
self.value = value
@ -637,7 +632,7 @@ class TechnicalInfo(Message):
class CustomIssue(Message):
__id__ = 64
def __init__(self, name: str, payload: str):
def __init__(self, name, payload):
self.name = name
self.payload = payload
@ -645,13 +640,58 @@ class CustomIssue(Message):
class PageClose(Message):
__id__ = 65
def __init__(self, ):
class AssetCache(Message):
__id__ = 66
def __init__(self, url):
self.url = url
class CSSInsertRuleURLBased(Message):
__id__ = 67
def __init__(self, id, rule, index, base_url):
self.id = id
self.rule = rule
self.index = index
self.base_url = base_url
class MouseClick(Message):
__id__ = 69
def __init__(self, id, hesitation_time, label, selector):
self.id = id
self.hesitation_time = hesitation_time
self.label = label
self.selector = selector
class CreateIFrameDocument(Message):
__id__ = 70
def __init__(self, frame_id, id):
self.frame_id = frame_id
self.id = id
class IOSBatchMeta(Message):
__id__ = 107
def __init__(self, timestamp, length, first_index):
self.timestamp = timestamp
self.length = length
self.first_index = first_index
class IOSSessionStart(Message):
__id__ = 90
def __init__(self, timestamp, project_id, tracker_version: str,
rev_id: str, user_uuid: str, user_os: str, user_os_version: str,
user_device: str, user_device_type: str, user_country: 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):
self.timestamp = timestamp
self.project_id = project_id
self.tracker_version = tracker_version
@ -674,17 +714,27 @@ class IOSSessionEnd(Message):
class IOSMetadata(Message):
__id__ = 92
def __init__(self, timestamp, length, key: str, value: str):
def __init__(self, timestamp, length, key, value):
self.timestamp = timestamp
self.length = length
self.key = key
self.value = value
class IOSCustomEvent(Message):
__id__ = 93
def __init__(self, timestamp, length, name, payload):
self.timestamp = timestamp
self.length = length
self.name = name
self.payload = payload
class IOSUserID(Message):
__id__ = 94
def __init__(self, timestamp, length, value: str):
def __init__(self, timestamp, length, value):
self.timestamp = timestamp
self.length = length
self.value = value
@ -693,26 +743,91 @@ class IOSUserID(Message):
class IOSUserAnonymousID(Message):
__id__ = 95
def __init__(self, timestamp, length, value: str):
def __init__(self, timestamp, length, value):
self.timestamp = timestamp
self.length = length
self.value = value
class IOSScreenLeave(Message):
__id__ = 99
class IOSScreenChanges(Message):
__id__ = 96
def __init__(self, timestamp, length, title: str, view_name: str):
def __init__(self, timestamp, length, x, y, width, height):
self.timestamp = timestamp
self.length = length
self.x = x
self.y = y
self.width = width
self.height = height
class IOSCrash(Message):
__id__ = 97
def __init__(self, timestamp, length, name, reason, stacktrace):
self.timestamp = timestamp
self.length = length
self.name = name
self.reason = reason
self.stacktrace = stacktrace
class IOSScreenEnter(Message):
__id__ = 98
def __init__(self, timestamp, length, title, view_name):
self.timestamp = timestamp
self.length = length
self.title = title
self.view_name = view_name
class IOSScreenLeave(Message):
__id__ = 99
def __init__(self, timestamp, length, title, view_name):
self.timestamp = timestamp
self.length = length
self.title = title
self.view_name = view_name
class IOSClickEvent(Message):
__id__ = 100
def __init__(self, timestamp, length, label, x, y):
self.timestamp = timestamp
self.length = length
self.label = label
self.x = x
self.y = y
class IOSInputEvent(Message):
__id__ = 101
def __init__(self, timestamp, length, value, value_masked, label):
self.timestamp = timestamp
self.length = length
self.value = value
self.value_masked = value_masked
self.label = label
class IOSPerformanceEvent(Message):
__id__ = 102
def __init__(self, timestamp, length, name, value):
self.timestamp = timestamp
self.length = length
self.name = name
self.value = value
class IOSLog(Message):
__id__ = 103
def __init__(self, timestamp, length, severity: str, content: str):
def __init__(self, timestamp, length, severity, content):
self.timestamp = timestamp
self.length = length
self.severity = severity
@ -722,20 +837,31 @@ class IOSLog(Message):
class IOSInternalError(Message):
__id__ = 104
def __init__(self, timestamp, length, content: str):
def __init__(self, timestamp, length, content):
self.timestamp = timestamp
self.length = length
self.content = content
class IOSNetworkCall(Message):
__id__ = 105
def __init__(self, timestamp, length, duration, headers, body, url, success, method, status):
self.timestamp = timestamp
self.length = length
self.duration = duration
self.headers = headers
self.body = body
self.url = url
self.success = success
self.method = method
self.status = status
class IOSPerformanceAggregated(Message):
__id__ = 110
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
):
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):
self.timestamp_start = timestamp_start
self.timestamp_end = timestamp_end
self.min_fps = min_fps
@ -750,3 +876,16 @@ class IOSPerformanceAggregated(Message):
self.min_battery = min_battery
self.avg_battery = avg_battery
self.max_battery = max_battery
class IOSIssueEvent(Message):
__id__ = 111
def __init__(self, timestamp, type, context_string, context, payload):
self.timestamp = timestamp
self.type = type
self.context_string = context_string
self.context = context
self.payload = payload

View file

@ -1,3 +1,5 @@
# Auto-generated, do not edit
from msgcodec.codec import Codec
from msgcodec.messages import *
@ -17,10 +19,18 @@ class MessageCodec(Codec):
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 == 0:
return Timestamp(
timestamp=self.read_uint(reader)
)
if message_id == 1:
return SessionStart(
timestamp=self.read_uint(reader),
@ -37,7 +47,8 @@ class MessageCodec(Codec):
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_country=self.read_string(reader),
user_id=self.read_string(reader)
)
if message_id == 2:
@ -70,7 +81,9 @@ class MessageCodec(Codec):
)
if message_id == 7:
return CreateDocument()
return CreateDocument(
)
if message_id == 8:
return CreateElementNode(
@ -78,7 +91,7 @@ class MessageCodec(Codec):
parent_id=self.read_uint(reader),
index=self.read_uint(reader),
tag=self.read_string(reader),
svg=self.read_boolean(reader),
svg=self.read_boolean(reader)
)
if message_id == 9:
@ -129,7 +142,7 @@ class MessageCodec(Codec):
return SetNodeScroll(
id=self.read_uint(reader),
x=self.read_int(reader),
y=self.read_int(reader),
y=self.read_int(reader)
)
if message_id == 17:
@ -142,7 +155,7 @@ class MessageCodec(Codec):
return SetInputValue(
id=self.read_uint(reader),
value=self.read_string(reader),
mask=self.read_int(reader),
mask=self.read_int(reader)
)
if message_id == 19:
@ -158,7 +171,7 @@ class MessageCodec(Codec):
)
if message_id == 21:
return MouseClick(
return MouseClickDepricated(
id=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader)
@ -187,7 +200,7 @@ class MessageCodec(Codec):
return PageRenderTiming(
speed_index=self.read_uint(reader),
visually_complete=self.read_uint(reader),
time_to_interactive=self.read_uint(reader),
time_to_interactive=self.read_uint(reader)
)
if message_id == 25:
@ -198,7 +211,7 @@ class MessageCodec(Codec):
)
if message_id == 26:
return RawErrorEvent(
return IntegrationEvent(
timestamp=self.read_uint(reader),
source=self.read_string(reader),
name=self.read_string(reader),
@ -255,7 +268,7 @@ class MessageCodec(Codec):
timestamp=self.read_uint(reader),
value=self.read_string(reader),
value_masked=self.read_boolean(reader),
label=self.read_string(reader),
label=self.read_string(reader)
)
if message_id == 33:
@ -263,7 +276,8 @@ class MessageCodec(Codec):
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
hesitation_time=self.read_uint(reader),
label=self.read_string(reader)
label=self.read_string(reader),
selector=self.read_string(reader)
)
if message_id == 34:
@ -277,14 +291,9 @@ class MessageCodec(Codec):
)
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,
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),
@ -365,13 +374,13 @@ class MessageCodec(Codec):
if message_id == 45:
return Vuex(
mutation=self.read_string(reader),
state=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),
payload=self.read_string(reader)
)
if message_id == 47:
@ -401,11 +410,26 @@ class MessageCodec(Codec):
return GraphQLEvent(
message_id=self.read_uint(reader),
timestamp=self.read_uint(reader),
name=self.read_string(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(
return DOMDrop(
timestamp=self.read_uint(reader)
)
@ -462,7 +486,7 @@ class MessageCodec(Codec):
)
if message_id == 60:
return SetNodeURLBasedAttribute(
return SetNodeAttributeURLBased(
id=self.read_uint(reader),
name=self.read_string(reader),
value=self.read_string(reader),
@ -470,7 +494,7 @@ class MessageCodec(Codec):
)
if message_id == 61:
return SetStyleData(
return SetCSSDataURLBased(
id=self.read_uint(reader),
data=self.read_string(reader),
base_url=self.read_string(reader)
@ -499,7 +523,43 @@ class MessageCodec(Codec):
)
if message_id == 65:
return PageClose()
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 == 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(
@ -528,6 +588,14 @@ class MessageCodec(Codec):
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),
@ -542,6 +610,33 @@ class MessageCodec(Codec):
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),
@ -550,6 +645,32 @@ class MessageCodec(Codec):
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),
@ -565,6 +686,19 @@ class MessageCodec(Codec):
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),
@ -582,3 +716,13 @@ class MessageCodec(Codec):
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)
)

View file

@ -0,0 +1,16 @@
# Auto-generated, do not edit
from abc import ABC
class Message(ABC):
pass
<% $messages.each do |msg| %>
class <%= msg.name %>(Message):
__id__ = <%= msg.id %>
def __init__(self, <%= msg.attributes.map { |attr| "#{attr.name.underscore}" }.join ", " %>):
<%= msg.attributes.map { |attr| "self.#{attr.name.underscore} = #{attr.name.underscore}" }.join "\n "
%>
<% end %>

View file

@ -0,0 +1,29 @@
# Auto-generated, do not edit
from msgcodec.codec import Codec
from msgcodec.messages import *
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)
<% $messages.each do |msg| %>
if message_id == <%= msg.id %>:
return <%= msg.name %>(
<%= msg.attributes.map { |attr|
"#{attr.name.underscore}=self.read_#{attr.type.to_s}(reader)" }
.join ",\n "
%>
)
<% end %>