Class: Gateway
Constant Summary collapse
- DUMMY_AWS_EVENT =
Utils.load_json my_dir.parent.join('gateway_event.json')
Instance Method Summary collapse
Instance Method Details
#build_route(r, verb, fragments) ⇒ Object
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 |
# 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) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# 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 |