Module: Legion::Extensions::MicrosoftTeams::Runners::Subscriptions

Includes:
Helpers::Lex, Helpers::Client
Included in:
Client
Defined in:
lib/legion/extensions/microsoft_teams/runners/subscriptions.rb

Instance Method Summary collapse

Methods included from Helpers::Client

#bot_connection, #graph_connection, #oauth_connection, #user_path

Instance Method Details

#create_subscription(resource:, change_type:, notification_url:, expiration:, client_state: nil, include_resource_data: false) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 22

def create_subscription(resource:, change_type:, notification_url:, expiration:,
                        client_state: nil, include_resource_data: false, **)
  payload = {
    changeType:          change_type,
    notificationUrl:     notification_url,
    resource:            resource,
    expirationDateTime:  expiration,
    includeResourceData: include_resource_data
  }
  payload[:clientState] = client_state if client_state
  response = graph_connection(**).post('subscriptions', payload)
  { result: response.body }
end

#delete_subscription(subscription_id:) ⇒ Object



42
43
44
45
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 42

def delete_subscription(subscription_id:, **)
  response = graph_connection(**).delete("subscriptions/#{subscription_id}")
  { result: response.body }
end

#get_subscription(subscription_id:) ⇒ Object



17
18
19
20
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 17

def get_subscription(subscription_id:, **)
  response = graph_connection(**).get("subscriptions/#{subscription_id}")
  { result: response.body }
end

#list_subscriptionsObject



12
13
14
15
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 12

def list_subscriptions(**)
  response = graph_connection(**).get('subscriptions')
  { result: response.body }
end

#renew_subscription(subscription_id:, expiration:) ⇒ Object



36
37
38
39
40
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 36

def renew_subscription(subscription_id:, expiration:, **)
  payload = { expirationDateTime: expiration }
  response = graph_connection(**).patch("subscriptions/#{subscription_id}", payload)
  { result: response.body }
end

#subscribe_to_channel_messages(team_id:, channel_id:, notification_url:, expiration:, client_state: nil) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 58

def subscribe_to_channel_messages(team_id:, channel_id:, notification_url:, expiration:,
                                  client_state: nil, **)
  create_subscription(
    resource:         "/teams/#{team_id}/channels/#{channel_id}/messages",
    change_type:      'created,updated',
    notification_url: notification_url,
    expiration:       expiration,
    client_state:     client_state,
    **
  )
end

#subscribe_to_chat_messages(chat_id:, notification_url:, expiration:, client_state: nil) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/legion/extensions/microsoft_teams/runners/subscriptions.rb', line 47

def subscribe_to_chat_messages(chat_id:, notification_url:, expiration:, client_state: nil, **)
  create_subscription(
    resource:         "/chats/#{chat_id}/messages",
    change_type:      'created,updated',
    notification_url: notification_url,
    expiration:       expiration,
    client_state:     client_state,
    **
  )
end