Class: Meta::Workplace::V3
- Inherits:
-
Integration
- Object
- Integration
- Meta::Workplace::V3
- Defined in:
- app/models/pager_tree/integrations/meta/workplace/v3.rb
Constant Summary collapse
- OPTIONS =
[ {key: :incoming_enabled, type: :boolean, default: false}, {key: :outgoing_enabled, type: :boolean, default: true}, {key: :access_token, type: :string, default: nil}, {key: :app_secret, type: :string, default: nil}, {key: :group_id, type: :string, default: nil}, {key: :outgoing_rules, type: :string, default: nil} ]
Instance Method Summary collapse
- #adapter_action ⇒ Object
- #adapter_incoming_can_defer? ⇒ Boolean
- #adapter_outgoing_interest?(event_name) ⇒ Boolean
- #adapter_process_create ⇒ Object
- #adapter_process_other ⇒ Object
- #adapter_process_outgoing ⇒ Object
- #adapter_response_incoming ⇒ Object
- #adapter_should_block_incoming?(request) ⇒ Boolean
- #adapter_show_outgoing_webhook_delivery? ⇒ Boolean
- #adapter_supports_description_template? ⇒ Boolean
- #adapter_supports_incoming? ⇒ Boolean
- #adapter_supports_outgoing? ⇒ Boolean
- #adapter_supports_title_template? ⇒ Boolean
- #adapter_thirdparty_id ⇒ Object
- #endpoint ⇒ Object
Instance Method Details
#adapter_action ⇒ Object
72 73 74 75 76 77 78 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 72 def adapter_action if option_incoming_enabled && adapter_incoming_request_params.dig("object") == "page" && _entry_changes&.dig("field") == "mention" :create else :other end end |
#adapter_incoming_can_defer? ⇒ Boolean
56 57 58 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 56 def adapter_incoming_can_defer? false end |
#adapter_outgoing_interest?(event_name) ⇒ Boolean
102 103 104 105 106 107 108 109 110 111 112 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 102 def adapter_outgoing_interest?(event_name) option_outgoing_enabled && [ "alert_assigned", "alert_acknowledged", "alert_rejected", "alert_resolved", "alert_dropped", "alert_handoff", "comment_created" ].include?(event_name.to_s) end |
#adapter_process_create ⇒ Object
88 89 90 91 92 93 94 95 96 97 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 88 def adapter_process_create # send back an ok post_id = _entry_changes&.dig("value", "post_id") _post_comment(post_id, "Ok") if post_id.present? Alert.new( title: _title, thirdparty_id: adapter_thirdparty_id ) end |
#adapter_process_other ⇒ Object
99 100 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 99 def adapter_process_other end |
#adapter_process_outgoing ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 114 def adapter_process_outgoing event_type = adapter_outgoing_event.event_name.to_s = (event_type) return unless .present? if event_type == "alert_assigned" (option_group_id, ) else post_id = _alert.["#{id}_meta_workplace_post_id"] if post_id.blank? outgoing_webhook_delivery_id = _alert.["#{id}_meta_workplace_outgoing_webhook_delivery_id"] outgoing_webhook_delivery = OutgoingWebhookDelivery.find_by(id: outgoing_webhook_delivery_id) post_id = begin JSON.parse(outgoing_webhook_delivery.responses.first.dig("body"))["id"] rescue nil end if post_id.present? _alert.["#{id}_meta_workplace_post_id"] = post_id _alert.save! end end _post_comment(post_id, ) if post_id.present? end rescue => e Rails.logger.error "[Workplace] Error processing outgoing event: #{e.}" end |
#adapter_response_incoming ⇒ Object
80 81 82 83 84 85 86 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 80 def adapter_response_incoming if adapter_incoming_request_params["hub.mode"] == "subscribe" adapter_controller&.render(plain: adapter_incoming_request_params["hub.challenge"]) else adapter_controller&.head(:ok) end end |
#adapter_should_block_incoming?(request) ⇒ Boolean
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 29 def adapter_should_block_incoming?(request) should_block = false if option_app_secret.present? && request.headers["x-hub-signature-256"].present? signature = request.headers["x-hub-signature-256"].delete_prefix("sha256=") data = request.body.read digest = OpenSSL::HMAC.hexdigest("SHA256", option_app_secret, data) should_block = signature != digest end should_block end |
#adapter_show_outgoing_webhook_delivery? ⇒ Boolean
52 53 54 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 52 def adapter_show_outgoing_webhook_delivery? true end |
#adapter_supports_description_template? ⇒ Boolean
64 65 66 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 64 def adapter_supports_description_template? false end |
#adapter_supports_incoming? ⇒ Boolean
42 43 44 45 46 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 42 def adapter_supports_incoming? # TODO - change this to true once we are ready to support this. The code currently works, but we don't want to confuse our users. # Let's work with them to see what they want the functionality to look like false end |
#adapter_supports_outgoing? ⇒ Boolean
48 49 50 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 48 def adapter_supports_outgoing? true end |
#adapter_supports_title_template? ⇒ Boolean
60 61 62 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 60 def adapter_supports_title_template? false end |
#adapter_thirdparty_id ⇒ Object
68 69 70 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 68 def adapter_thirdparty_id [_entry&.dig("id"), _entry&.dig("time")].compact_blank.join("-") end |
#endpoint ⇒ Object
25 26 27 |
# File 'app/models/pager_tree/integrations/meta/workplace/v3.rb', line 25 def endpoint super + "/g" end |