class Gateway
Constants
- DUMMY_AWS_EVENT
Public Instance Methods
build_route(r, verb, fragments)
click to toggle source
# File lib/modulator/gateway/gateway.rb, line 67 def build_route(r, verb, fragments) # end of path, tail is gone: [] -> nil return unless fragments # execute when all fragments are processed execute_lambda(r, verb) and return if fragments.empty? # traverse fragments fragment = fragments.first tail = fragments[1..-1] || [] # dynamic fragment if fragment.start_with?(':') r.on String do |value| fragment = fragment[1..-1] @path_params[fragment] = value build_route(r, verb, tail) r.pass # continue loop end # static fragment else r.on fragment do build_route(r, verb, tail) r.pass # continue loop end end end
execute_lambda(r, verb)
click to toggle source
# File lib/modulator/gateway/gateway.rb, line 96 def execute_lambda(r, verb) r.send(verb.downcase) do puts "Path params: #{@path_params}" # build aws event aws_event = DUMMY_AWS_EVENT.merge( 'pathParameters' => @path_params, 'queryStringParameters' => {}, 'headers' => @headers, 'body' => request.params.to_json ) # build aws context aws_context = {} # execute lambda result = Dir.chdir(opts[:app_dir] || '.') do AwsLambdaHandler.call(event: aws_event, context: aws_context) end # render response.status = result[:statusCode] result[:body] end end