Module: Legion::Extensions::MicrosoftTeams::Runners::Meetings
- Includes:
- Helpers::Lex, Helpers::Client
- Included in:
- Client
- Defined in:
- lib/legion/extensions/microsoft_teams/runners/meetings.rb
Instance Method Summary
collapse
-
#create_meeting(subject:, start_time:, end_time:, user_id: 'me') ⇒ Object
-
#delete_meeting(meeting_id:, user_id: 'me') ⇒ Object
-
#get_attendance_report(meeting_id:, report_id:, user_id: 'me') ⇒ Object
-
#get_meeting(meeting_id:, user_id: 'me') ⇒ Object
-
#get_meeting_by_join_url(join_url:, user_id: 'me') ⇒ Object
-
#list_attendance_reports(meeting_id:, user_id: 'me') ⇒ Object
-
#list_meetings(user_id: 'me') ⇒ Object
-
#resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me') ⇒ Object
-
#update_meeting(meeting_id:, user_id: 'me', subject: nil, start_time: nil, end_time: nil) ⇒ Object
#bot_connection, #graph_connection, #oauth_connection, #user_path
Instance Method Details
#create_meeting(subject:, start_time:, end_time:, user_id: 'me') ⇒ Object
22
23
24
25
26
27
28
29
30
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 22
def create_meeting(subject:, start_time:, end_time:, user_id: 'me', **)
payload = {
subject: subject,
startDateTime: start_time,
endDateTime: end_time
}
response = graph_connection(**).post("#{user_path(user_id)}/onlineMeetings", payload)
{ result: response.body }
end
|
#delete_meeting(meeting_id:, user_id: 'me') ⇒ Object
41
42
43
44
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 41
def delete_meeting(meeting_id:, user_id: 'me', **)
response = graph_connection(**).delete("#{user_path(user_id)}/onlineMeetings/#{meeting_id}")
{ result: response.body }
end
|
#get_attendance_report(meeting_id:, report_id:, user_id: 'me') ⇒ Object
57
58
59
60
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 57
def get_attendance_report(meeting_id:, report_id:, user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings/#{meeting_id}/attendanceReports/#{report_id}")
{ result: response.body }
end
|
#get_meeting(meeting_id:, user_id: 'me') ⇒ Object
17
18
19
20
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 17
def get_meeting(meeting_id:, user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings/#{meeting_id}")
{ result: response.body }
end
|
#get_meeting_by_join_url(join_url:, user_id: 'me') ⇒ Object
46
47
48
49
50
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 46
def get_meeting_by_join_url(join_url:, user_id: 'me', **)
params = { '$filter' => "joinWebUrl eq '#{join_url.gsub("'", "''")}'" }
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings", params)
{ result: response.body }
end
|
#list_attendance_reports(meeting_id:, user_id: 'me') ⇒ Object
52
53
54
55
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 52
def list_attendance_reports(meeting_id:, user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings/#{meeting_id}/attendanceReports")
{ result: response.body }
end
|
#list_meetings(user_id: 'me') ⇒ Object
12
13
14
15
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 12
def list_meetings(user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings")
{ result: response.body }
end
|
#resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me') ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 62
def resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me', **)
return { error: 'provide chat_thread_id or join_url' } unless chat_thread_id || join_url
unless join_url
chat_response = graph_connection(**).get("chats/#{chat_thread_id}")
chat_body = chat_response.body
return { error: 'chat not found', result: chat_body } unless chat_body.is_a?(Hash) && !chat_body.key?('error')
join_url = chat_body.dig('onlineMeetingInfo', 'joinWebUrl')
return { error: 'chat has no onlineMeetingInfo', result: chat_body } unless join_url
end
meeting_response = get_meeting_by_join_url(join_url: join_url, user_id: user_id, **)
meeting_body = meeting_response[:result]
items = meeting_body.is_a?(Hash) ? meeting_body['value'] : nil
return { error: 'could not resolve meeting from join URL', result: meeting_body } unless items.is_a?(Array) && !items.empty?
{ result: items.first }
end
|
#update_meeting(meeting_id:, user_id: 'me', subject: nil, start_time: nil, end_time: nil) ⇒ Object
32
33
34
35
36
37
38
39
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 32
def update_meeting(meeting_id:, user_id: 'me', subject: nil, start_time: nil, end_time: nil, **)
payload = {}
payload[:subject] = subject if subject
payload[:startDateTime] = start_time if start_time
payload[:endDateTime] = end_time if end_time
response = graph_connection(**).patch("#{user_path(user_id)}/onlineMeetings/#{meeting_id}", payload)
{ result: response.body }
end
|