Class: Jets::Controller::Middleware::Mimic::Apigw

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/jets/controller/middleware/mimic/apigw.rb

Instance Method Summary collapse

Constructor Details

#initialize(route, env) ⇒ Apigw

Returns a new instance of Apigw.



8
9
10
# File 'lib/jets/controller/middleware/mimic/apigw.rb', line 8

def initialize(route, env)
  @route, @env = route, env
end

Instance Method Details

#contextObject



26
27
28
# File 'lib/jets/controller/middleware/mimic/apigw.rb', line 26

def context
  LambdaContext.new
end

#controllerObject

Actual controller instance



13
14
15
16
17
18
# File 'lib/jets/controller/middleware/mimic/apigw.rb', line 13

def controller
  controller_class = @route.controller_name.constantize
  meth = @route.action_name
  # must keep the same env as @env, rack env, else constraint lambda proc request will be different
  controller_class.new(event, context, meth, @env)
end

#eventObject Also known as: convert



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/jets/controller/middleware/mimic/apigw.rb', line 31

def event
  resource = @route.path(:api_gateway) # /posts/{id}/edit
  path = @env['PATH_INFO'].sub('/','') # remove beginning slash
  {
    "resource" => resource, # "/posts/{id}/edit"
    "path" => @env['PATH_INFO'],  # /posts/tung/edit
    "httpMethod" => @env['REQUEST_METHOD'], # GET
    "headers" => request_headers,
    "queryStringParameters" => query_string_parameters,
    "multiValueQueryStringParameters" => multi_value_query_string_parameters,
    "pathParameters" => @route.extract_parameters(path),
    "stageVariables" => nil,
    "requestContext" => {},
    "body" => get_body,
    "isBase64Encoded" => false,
  }
end

#methObject



21
22
23
# File 'lib/jets/controller/middleware/mimic/apigw.rb', line 21

def meth
  @route.action_name
end