Module: WolfCore::Integrations::WebhooksOperations
- Defined in:
- lib/wolf_core/application/integrations/webhooks_operations.rb
Instance Method Summary collapse
- #build_body_from_params(params:, id_key:) ⇒ Object
- #get_event_name(params:) ⇒ Object
- #get_event_type(params:) ⇒ Object
- #get_object_id(params:) ⇒ Object
- #get_payload(params:, event_type: nil) ⇒ Object
- #group_custom_values_by_custom_requirement_group(params:, jobseeker_file_custom_requirement_ids:, reference_form_custom_requirement_ids:, disclosure_form_custom_requirement_ids:) ⇒ Object
- #process_webhook(params:) ⇒ Object
- #subscription_confirmation_request(url:) ⇒ Object
- #validate_user_is_not_admin(params:) ⇒ Object
Instance Method Details
#build_body_from_params(params:, id_key:) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 47 def build_body_from_params(params:, id_key:) { event_name: get_event_name(params: params), id_key => get_object_id(params: params) } end |
#get_event_name(params:) ⇒ Object
15 16 17 18 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 15 def get_event_name(params:) = JSON.parse(params['Message'] || {}) ['event_name'] end |
#get_event_type(params:) ⇒ Object
11 12 13 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 11 def get_event_type(params:) params['Type'] end |
#get_object_id(params:) ⇒ Object
54 55 56 57 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 54 def get_object_id(params:) params = JSON.parse(params['Message'] || '{}') params['object_id'] end |
#get_payload(params:, event_type: nil) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 4 def get_payload(params:, event_type: nil) event_type ||= get_event_type(params: params) return if event_type == 'SubscriptionConfirmation' params = JSON.parse(params['Message'] || '{}') JSON.parse(params['payload'] || '{}') end |
#group_custom_values_by_custom_requirement_group(params:, jobseeker_file_custom_requirement_ids:, reference_form_custom_requirement_ids:, disclosure_form_custom_requirement_ids:) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 59 def group_custom_values_by_custom_requirement_group( params:, jobseeker_file_custom_requirement_ids:, reference_form_custom_requirement_ids:, disclosure_form_custom_requirement_ids: ) payload = get_payload(params: params) custom_values = payload.dig('changes', 'custom_values') if custom_values.blank? custom_values = [ payload['attributes'] ] end custom_values.group_by do |custom_value| custom_requirement_group = if jobseeker_file_custom_requirement_ids.include?(custom_value['custom_requirement_id']) 'jobseeker_file' elsif reference_form_custom_requirement_ids.include?(custom_value['custom_requirement_id']) 'reference_form' elsif disclosure_form_custom_requirement_ids.include?(custom_value['custom_requirement_id']) 'disclosure_form' elsif custom_value['user_category'] == 'Freelancer' 'jobseeker' elsif custom_value['user_category'] == 'Campaign' 'order' else 'unknown_group' end custom_requirement_group end end |
#process_webhook(params:) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 37 def process_webhook(params:) event_type = get_event_type(params: params) event_name = get_event_name(params: params) if event_type == 'SubscriptionConfirmation' url = params['SubscribeURL'] elsif event_type == 'Notification' yield(event_name) end end |
#subscription_confirmation_request(url:) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 30 def subscription_confirmation_request(url:) safe_http_get( url: url, error_message: "Can not confirm subscription", ) end |
#validate_user_is_not_admin(params:) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/wolf_core/application/integrations/webhooks_operations.rb', line 20 def validate_user_is_not_admin(params:) event_type = get_event_type(params: params) return if event_type == 'SubscriptionConfirmation' user_id = params.dig('invoker', 'user_id').to_s return unless user_id == ENV['WOLF_ADMIN_ID'].to_s raise_service_error("Ignoring event from user id #{user_id}") end |