Class: Jets::Resource::ApiGateway::RestApi
- Inherits:
-
Base
- Object
- Base
- Jets::Resource::ApiGateway::RestApi
show all
- Defined in:
- lib/jets/resource/api_gateway/rest_api.rb,
lib/jets/resource/api_gateway/rest_api/routes.rb,
lib/jets/resource/api_gateway/rest_api/logical_id.rb,
lib/jets/resource/api_gateway/rest_api/change_detection.rb
Defined Under Namespace
Classes: ChangeDetection, LogicalId, Routes
Constant Summary
collapse
- @@internal_logical_id =
nil
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#replacements, #resource
Class Method Details
.internal_logical_id ⇒ Object
31
32
33
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 31
def self.internal_logical_id
@@internal_logical_id ||= LogicalId.new.get
end
|
.logical_id(internal = false) ⇒ Object
26
27
28
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 26
def self.logical_id(internal=false)
internal ? internal_logical_id : "RestApi"
end
|
Instance Method Details
TODO: Looks like there’s a bug with CloudFormation. On an API Gateway update we need to pass in the escaped version: multipart~1form-data On a brand new API Gateway creation, we need to pass in the unescaped form: multipart/form-data We are handling this with a full API Gateway replacement instead because it can be generalized more easily.
53
54
55
56
57
58
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 53
def binary_media_types
types = Jets.config.api.binary_media_types
return nil if types.nil? || types.empty?
[types].flatten
end
|
#definition ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 7
def definition
properties = {
name: Jets::Naming.gateway_api_name,
endpoint_configuration: { types: endpoint_types }
}
properties[:binary_media_types] = binary_media_types if binary_media_types
{
internal_logical_id => {
type: "AWS::ApiGateway::RestApi",
properties: properties
}
}
end
|
#endpoint_types ⇒ Object
43
44
45
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 43
def endpoint_types
[Jets.config.api.endpoint_type].flatten
end
|
#internal_logical_id ⇒ Object
22
23
24
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 22
def internal_logical_id
self.class.logical_id(true)
end
|
#outputs ⇒ Object
35
36
37
38
39
40
41
|
# File 'lib/jets/resource/api_gateway/rest_api.rb', line 35
def outputs
{
"RestApi" => "!Ref #{internal_logical_id}",
"Region" => "!Ref AWS::Region",
"RootResourceId" => "!GetAtt #{internal_logical_id}.RootResourceId",
}
end
|