Module: Ruflet::Protocol

Defined in:
lib/ruflet_protocol/ruflet/protocol.rb

Constant Summary collapse

ACTIONS =
{
  register_client: 1,
  patch_control: 2,
  control_event: 3,
  update_control: 4,
  invoke_control_method: 5,
  session_crashed: 6,

  # Legacy JSON protocol aliases kept for compatibility.
  register_web_client: "registerWebClient",
  page_event_from_web: "pageEventFromWeb",
  update_control_props: "updateControlProps"
}.freeze

Class Method Summary collapse

Class Method Details

.normalize_control_event_payload(payload) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/ruflet_protocol/ruflet/protocol.rb', line 39

def normalize_control_event_payload(payload)
  {
    "target" => payload["target"] || payload["eventTarget"],
    "name" => payload["name"] || payload["eventName"],
    "data" => payload["data"] || payload["eventData"]
  }
end

.normalize_register_payload(payload) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruflet_protocol/ruflet/protocol.rb', line 25

def normalize_register_payload(payload)
  page = payload["page"] || {}
  {
    "session_id" => payload["session_id"],
    "page_name" => payload["page_name"] || "",
    "route" => page["route"] || "/",
    "width" => page["width"],
    "height" => page["height"],
    "platform" => page["platform"],
    "platform_brightness" => page["platform_brightness"],
    "media" => page["media"] || {}
  }
end

.normalize_update_control_payload(payload) ⇒ Object



47
48
49
50
51
52
# File 'lib/ruflet_protocol/ruflet/protocol.rb', line 47

def normalize_update_control_payload(payload)
  {
    "id" => payload["id"] || payload["target"] || payload["eventTarget"],
    "props" => payload["props"].is_a?(Hash) ? payload["props"] : {}
  }
end

.pack_message(action:, payload:) ⇒ Object



21
22
23
# File 'lib/ruflet_protocol/ruflet/protocol.rb', line 21

def pack_message(action:, payload:)
  [action, payload]
end

.register_response(session_id:) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/ruflet_protocol/ruflet/protocol.rb', line 54

def register_response(session_id:)
  {
    "session_id" => session_id,
    "page_patch" => {},
    "error" => nil
  }
end