Module: WolfCore::LambdaFunctionOperations

Includes:
ExceptionOperations, StringUtils
Included in:
ApplicationService, Barton::Routing, Integrations::RoutingOperations
Defined in:
lib/wolf_core/infrastructure/lambda_function_operations.rb

Instance Method Summary collapse

Methods included from StringUtils

#camelcase_to_spaces, #clean_phone_number, #deep_parse_json, #hash_str_to_json, #remove_blank_spaces

Methods included from ExceptionOperations

#raise_service_error

Instance Method Details

#get_event_params(event) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/wolf_core/infrastructure/lambda_function_operations.rb', line 30

def get_event_params(event)
  event_body = event['body']
  params = if event_body.present?
    deep_parse_json(event_body)
  else
    event
  end
  params&.with_indifferent_access
end

#invoke_lambda(function_name:, payload:, invocation_type: nil) ⇒ Object



6
7
8
9
10
# File 'lib/wolf_core/infrastructure/lambda_function_operations.rb', line 6

def invoke_lambda(function_name:, payload:, invocation_type: nil)
  WolfCore::LambdaFunctionDataSource.invoke(
    function_name: function_name, payload: payload, invocation_type: invocation_type
  )
end

#parse_lambda_response(response) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/wolf_core/infrastructure/lambda_function_operations.rb', line 22

def parse_lambda_response(response)
  payload = JSON.parse(response.payload.string) rescue response.payload
  OpenStruct.new({
    status_code: response.status_code,
    payload: payload,
  })
end

#result_to_response(result) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/wolf_core/infrastructure/lambda_function_operations.rb', line 40

def result_to_response(result)
  if result.success?
    { statusCode: 200, body: result.data.to_h.to_json }
  else
    { statusCode: result.error.status || 422, body: result.error.to_h.to_json }
  end
end

#validate_lambda_response(response:, message:, error_data: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/wolf_core/infrastructure/lambda_function_operations.rb', line 12

def validate_lambda_response(response:, message:, error_data: nil)
  unless response.status_code == 200
    error_data = {
      message: message,
      response: parse_lambda_response(response)
    }.merge(error_data || {})
    raise_service_error(error_data)
  end
end