Class: ChatSDK::Linear::EventParser

Inherits:
Object
  • Object
show all
Defined in:
lib/chat_sdk/linear/event_parser.rb

Class Method Summary collapse

Class Method Details

.parse(payload, bot_username: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/chat_sdk/linear/event_parser.rb', line 7

def parse(payload, bot_username: nil)
  return [] unless payload.is_a?(Hash)
  return [] unless payload["type"] == "Comment" && payload["action"] == "create"

  data = payload["data"] || {}
  comment_id = data["id"]
  body = data["body"] || ""
  issue_id = data["issueId"] || data.dig("issue", "id")
  user = data["user"] || {}
  user_id = user["id"]
  user_name = user["name"]

  return [] if bot_username && user_name == bot_username

  thread_id = "linear:#{issue_id}:c:#{comment_id}"

  author = ChatSDK::Author.new(
    id: user_id || "unknown",
    name: user_name || "unknown",
    platform: :linear,
    bot: false
  )

  msg = ChatSDK::Message.new(
    id: comment_id&.to_s,
    text: body,
    author: author,
    thread_id: thread_id,
    channel_id: issue_id,
    platform: :linear,
    raw: data
  )

  [
    ChatSDK::Events::Mention.new(
      message: msg,
      thread_id: thread_id,
      channel_id: issue_id,
      platform: :linear,
      adapter_name: :linear,
      raw: data
    )
  ]
end