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 89 90 91 92 93 94 95 |
# 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: ) log_object jobseeker_file_custom_requirement_ids, title: 'group_custom_values_by_custom_requirement_group jobseeker_file_custom_requirement_ids are' log_object reference_form_custom_requirement_ids, title: 'group_custom_values_by_custom_requirement_group reference_form_custom_requirement_ids are' log_object disclosure_form_custom_requirement_ids, title: 'group_custom_values_by_custom_requirement_group disclosure_form_custom_requirement_ids are' payload = get_payload(params: params) log_object payload, title: 'group_custom_values_by_custom_requirement_group payload is' custom_values = payload.dig('changes', 'custom_values') log_object custom_values, title: 'group_custom_values_by_custom_requirement_group custom_values 1 are' if custom_values.blank? custom_values = [ payload['attributes'] ] log_object custom_values, title: 'group_custom_values_by_custom_requirement_group custom_values 2 are' end custom_values.group_by do |custom_value| log_object custom_value, title: 'group_custom_values_by_custom_requirement_group custom_value is' 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 |