Class: Kamigo::EventParsers::LineEventParser
- Inherits:
-
Object
- Object
- Kamigo::EventParsers::LineEventParser
show all
- Includes:
- Clients::LineClient
- Defined in:
- lib/kamigo/event_parsers/line_event_parser.rb
Instance Method Summary
collapse
#client, #validate_signature
Instance Method Details
#get_profile(line_event) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/kamigo/event_parsers/line_event_parser.rb', line 29
def get_profile(line_event)
case line_event.source_type
when 'group'
response = client.get_group_member_profile(
line_event.source_group_id,
line_event.source_user_id
)
when 'room'
response = client.get_room_member_profile(
line_event.source_group_id,
line_event.source_user_id
)
else
response = client.get_profile(line_event.source_user_id)
end
JSON.parse(response.body)
end
|
#parse(event) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/kamigo/event_parsers/line_event_parser.rb', line 14
def parse(event)
event_hash = JSON.parse(event.to_json, symbolize_names: true)
payload = event_hash[:src] || event_hash
line_event = Kamigo::Events::LineEvent.new
line_event.payload = payload
line_event.reply_token = event['replyToken']
line_event.source_type = payload.dig(:source, :type)
line_event.source_group_id = payload.dig(:source, :groupId) || payload.dig(:source, :roomId) || payload.dig(:source, :userId)
line_event.source_user_id = payload.dig(:source, :userId) || payload.dig(:source, :groupId) || payload.dig(:source, :roomId)
line_event.message_type = payload.dig(:message, :type) || payload.dig(:type)
line_event.message = payload.dig(:message, :text) || payload.dig(:postback, :data) || payload.dig(:message, :address) || line_event.message_type
line_event.profile = get_profile(line_event)
line_event
end
|
#parse_events(request) ⇒ Object
6
7
8
9
10
11
12
|
# File 'lib/kamigo/event_parsers/line_event_parser.rb', line 6
def parse_events(request)
body = request.body.read
events = client.parse_events_from(body)
events.map do |event|
parse(event)
end
end
|