@sylvesterllc/aws-constructs 1.0.26 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,4 +4,6 @@ export interface TsgLambdaRoutable {
4
4
  method?: "get" | "post" | "delete" | "put" | "patch";
5
5
  version?: number;
6
6
  useRouteOverride?: boolean;
7
+ requireApiKey?: boolean;
8
+ queryStrings?: string[];
7
9
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhUm91dGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVJvdXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRzZ0xhbWJkYVJvdXRhYmxlIHtcbiAgICByb3V0ZTogc3RyaW5nO1xuICAgIHNlY3VyZT86IGJvb2xlYW47XG4gICAgbWV0aG9kPzogXCJnZXRcIiB8IFwicG9zdFwiIHwgXCJkZWxldGVcIiB8IFwicHV0XCIgfCBcInBhdGNoXCI7XG4gICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICB1c2VSb3V0ZU92ZXJyaWRlPzogYm9vbGVhbjtcbn0iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNnTGFtYmRhUm91dGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVJvdXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRzZ0xhbWJkYVJvdXRhYmxlIHtcbiAgICByb3V0ZTogc3RyaW5nO1xuICAgIHNlY3VyZT86IGJvb2xlYW47XG4gICAgbWV0aG9kPzogXCJnZXRcIiB8IFwicG9zdFwiIHwgXCJkZWxldGVcIiB8IFwicHV0XCIgfCBcInBhdGNoXCI7XG4gICAgdmVyc2lvbj86IG51bWJlcjtcbiAgICB1c2VSb3V0ZU92ZXJyaWRlPzogYm9vbGVhbjtcbiAgICByZXF1aXJlQXBpS2V5PzogYm9vbGVhbjtcbiAgICBxdWVyeVN0cmluZ3M/OiBzdHJpbmdbXTtcbn0iXX0=
@@ -5,4 +5,7 @@ export declare class Routes {
5
5
  static Resources: Resource[];
6
6
  private static routeMap;
7
7
  static createResource(prop: TsgLambdaProp, api: IRestApi, lambdaNode: NodejsFunction, authorizer?: TokenAuthorizer): void;
8
+ static createQueryStringObject(queryStrings: string[] | undefined): {
9
+ [key: string]: boolean;
10
+ };
8
11
  }
@@ -26,11 +26,26 @@ class Routes {
26
26
  activeResource = secondaryResource;
27
27
  }
28
28
  // Finally, we attach our function to the last resource
29
- activeResource.addMethod(prop.apiGateway.method || 'GET', new aws_apigateway_1.LambdaIntegration(lambdaNode, { proxy: true, }), prop.apiGateway.secure ? { authorizer } : undefined);
29
+ activeResource.addMethod(prop.apiGateway.method || 'GET', new aws_apigateway_1.LambdaIntegration(lambdaNode, { proxy: true, }), {
30
+ requestParameters: Routes.createQueryStringObject(prop.apiGateway.queryStrings),
31
+ apiKeyRequired: (prop.apiGateway.requireApiKey) ? true : false,
32
+ authorizer: prop.apiGateway.secure ? authorizer : undefined,
33
+ authorizationType: prop.apiGateway.secure ? aws_apigateway_1.AuthorizationType.CUSTOM : undefined,
34
+ });
30
35
  }
31
36
  }
37
+ static createQueryStringObject(queryStrings) {
38
+ if (!queryStrings || queryStrings.length === 0) {
39
+ return {};
40
+ }
41
+ const obj = {};
42
+ queryStrings.forEach((qs) => {
43
+ obj[`method.request.querystring.${qs}`] = true;
44
+ });
45
+ return obj;
46
+ }
32
47
  }
33
48
  Routes.Resources = [];
34
49
  Routes.routeMap = new Map();
35
50
  exports.Routes = Routes;
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9oZWxwZXJzL2NyZWF0ZVJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBb0c7QUFLcEcsTUFBYSxNQUFNO0lBS1IsTUFBTSxDQUFDLGNBQWMsQ0FDeEIsSUFBbUIsRUFDbkIsR0FBYSxFQUNiLFVBQTBCLEVBQzFCLFVBQTRCO1FBRTVCLE1BQU0sUUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWxELElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLGNBQWMsR0FBeUIsU0FBUyxDQUFDO1FBRXJELHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBRXhCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUc7Z0JBQ3hDLDBEQUEwRDtnQkFDdEQsNkVBQTZFO2dCQUM3RSxlQUFlLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDakYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvRixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDeEQ7WUFHRCx1RUFBdUU7WUFDdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUMsZUFBZSxHQUFHLEdBQUcsZUFBZSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGNBQWMsRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RKLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN4RCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7YUFDdEM7WUFFRCx3REFBd0Q7WUFDeEQsY0FBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQ3JELElBQUksa0NBQWlCLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1RDtJQUNMLENBQUM7O0FBM0NhLGdCQUFTLEdBQWUsRUFBRSxDQUFDO0FBQzFCLGVBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBSDNCLHdCQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc3RBcGksIExhbWJkYUludGVncmF0aW9uLCBSZXNvdXJjZSwgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcblxuXG5leHBvcnQgY2xhc3MgUm91dGVzIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgUmVzb3VyY2VzOiBSZXNvdXJjZVtdID0gW107XG4gICAgcHJpdmF0ZSBzdGF0aWMgcm91dGVNYXAgPSBuZXcgTWFwKCk7XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVJlc291cmNlKFxuICAgICAgICBwcm9wOiBUc2dMYW1iZGFQcm9wLFxuICAgICAgICBhcGk6IElSZXN0QXBpLFxuICAgICAgICBsYW1iZGFOb2RlOiBOb2RlanNGdW5jdGlvbixcbiAgICAgICAgYXV0aG9yaXplcj86IFRva2VuQXV0aG9yaXplcikge1xuXG4gICAgICAgIGNvbnN0IHJvdXRlTWFwOiBNYXA8c3RyaW5nLCBSZXNvdXJjZT4gPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgbGV0IGFjdGl2ZVJvdXRlUGF0aCA9IFwiXCI7XG4gICAgICAgIGxldCBhY3RpdmVSZXNvdXJjZTogUmVzb3VyY2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gIE9ubHkgYXR0YWNoIGxhbWJkYSB0byBhbiBBcGkgR2F0ZXdheSBpZiBhIHJvdXRlIGV4aXN0XG4gICAgICAgIGlmIChwcm9wLmFwaUdhdGV3YXk/LnJvdXRlKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdST3V0ZTogJywgcHJvcC5hcGlHYXRld2F5LnJvdXRlKTtcblxuICAgICAgICAgICAgaWYgKCFwcm9wLmFwaUdhdGV3YXkudXNlUm91dGVPdmVycmlkZSkgIHtcbiAgICAgICAgICAgIC8vICBGaXJzdCB3ZSBjcmVhdGUgdGhlIHJvb3QgcmVzb3VyY2UgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICAgICAgICAgICAgICAvLyAgTm90ZTogIHRoaXMgbm93IHVzZXMgdGhlIGJ1bmRsZSB2ZXJzaW9uIGFzIHRoZSBmaXJzdCBzZWdtZW50IGluIHRoZSBwYXRoLlxuICAgICAgICAgICAgICAgIGFjdGl2ZVJvdXRlUGF0aCA9ICBgdiR7KHByb3AuYXBpR2F0ZXdheS52ZXJzaW9uKSA/IHByb3AuYXBpR2F0ZXdheS52ZXJzaW9uIDogMX1gO1xuICAgICAgICAgICAgICAgIGFjdGl2ZVJlc291cmNlID0gUm91dGVzLnJvdXRlTWFwLmdldChhY3RpdmVSb3V0ZVBhdGgpIHx8IGFwaS5yb290LmFkZFJlc291cmNlKGFjdGl2ZVJvdXRlUGF0aCk7XG4gICAgICAgICAgICAgICAgUm91dGVzLnJvdXRlTWFwLnNldChhY3RpdmVSb3V0ZVBhdGgsIGFjdGl2ZVJlc291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gIE5vdyB3ZSBnbyB0aHJvdWdoIG91ciByb3V0ZSBzZWdtZW50cyBjcmVhdGluZyB0aGUgcmVzdCBvZiB0aGUgcGF0aC5cbiAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHByb3AuYXBpR2F0ZXdheT8ucm91dGUuc3BsaXQoXCIvXCIpLmZpbHRlcih4ID0+ICh4KSk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlUm91dGVQYXRoID0gYCR7YWN0aXZlUm91dGVQYXRofS8ke3BhdGhTZWdtZW50c1tpXX1gO1xuICAgICAgICAgICAgICAgIGxldCBzZWNvbmRhcnlSZXNvdXJjZSA9IFJvdXRlcy5yb3V0ZU1hcC5nZXQoYWN0aXZlUm91dGVQYXRoKSB8fCBhY3RpdmVSZXNvdXJjZT8uYWRkUmVzb3VyY2UocGF0aFNlZ21lbnRzW2ldKSB8fCBhcGkucm9vdC5hZGRSZXNvdXJjZShwYXRoU2VnbWVudHNbaV0pO1xuICAgICAgICAgICAgICAgIFJvdXRlcy5yb3V0ZU1hcC5zZXQoYWN0aXZlUm91dGVQYXRoLCBzZWNvbmRhcnlSZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgYWN0aXZlUmVzb3VyY2UgPSBzZWNvbmRhcnlSZXNvdXJjZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gIEZpbmFsbHksIHdlIGF0dGFjaCBvdXIgZnVuY3Rpb24gdG8gdGhlIGxhc3QgcmVzb3VyY2VcbiAgICAgICAgICAgIGFjdGl2ZVJlc291cmNlIS5hZGRNZXRob2QocHJvcC5hcGlHYXRld2F5Lm1ldGhvZCB8fCAnR0VUJyxcbiAgICAgICAgICAgICAgICBuZXcgTGFtYmRhSW50ZWdyYXRpb24obGFtYmRhTm9kZSwgeyBwcm94eTogdHJ1ZSwgfSksXG4gICAgICAgICAgICAgICAgcHJvcC5hcGlHYXRld2F5LnNlY3VyZSA/IHsgYXV0aG9yaXplciB9IDogdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxufSJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9oZWxwZXJzL2NyZWF0ZVJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBdUg7QUFLdkgsTUFBYSxNQUFNO0lBS1IsTUFBTSxDQUFDLGNBQWMsQ0FDeEIsSUFBbUIsRUFDbkIsR0FBYSxFQUNiLFVBQTBCLEVBQzFCLFVBQTRCO1FBRTVCLE1BQU0sUUFBUSxHQUEwQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWxELElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLGNBQWMsR0FBeUIsU0FBUyxDQUFDO1FBRXJELHlEQUF5RDtRQUN6RCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFO1lBRXhCLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ25DLDBEQUEwRDtnQkFDMUQsNkVBQTZFO2dCQUM3RSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvRixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDeEQ7WUFHRCx1RUFBdUU7WUFDdkUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV4RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUMsZUFBZSxHQUFHLEdBQUcsZUFBZSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLGNBQWMsRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RKLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN4RCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7YUFDdEM7WUFFRCx3REFBd0Q7WUFDeEQsY0FBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQ3JELElBQUksa0NBQWlCLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQ25EO2dCQUNJLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztnQkFDL0UsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO2dCQUM5RCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDM0QsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtDQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUzthQUNuRixDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsWUFBa0M7UUFFcEUsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxHQUFHLEdBQStCLEVBQUUsQ0FBQztRQUUzQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUU7WUFDaEMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDO0lBQ2pCLENBQUM7O0FBL0RhLGdCQUFTLEdBQWUsRUFBRSxDQUFDO0FBQzFCLGVBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBSDNCLHdCQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aG9yaXphdGlvblR5cGUsIElSZXN0QXBpLCBMYW1iZGFJbnRlZ3JhdGlvbiwgUmVzb3VyY2UsIFRva2VuQXV0aG9yaXplciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheVwiO1xuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIjtcbmltcG9ydCB7IFRzZ0xhbWJkYVByb3AgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzXCI7XG5cblxuZXhwb3J0IGNsYXNzIFJvdXRlcyB7XG5cbiAgICBwdWJsaWMgc3RhdGljIFJlc291cmNlczogUmVzb3VyY2VbXSA9IFtdO1xuICAgIHByaXZhdGUgc3RhdGljIHJvdXRlTWFwID0gbmV3IE1hcCgpO1xuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVSZXNvdXJjZShcbiAgICAgICAgcHJvcDogVHNnTGFtYmRhUHJvcCxcbiAgICAgICAgYXBpOiBJUmVzdEFwaSxcbiAgICAgICAgbGFtYmRhTm9kZTogTm9kZWpzRnVuY3Rpb24sXG4gICAgICAgIGF1dGhvcml6ZXI/OiBUb2tlbkF1dGhvcml6ZXIpIHtcblxuICAgICAgICBjb25zdCByb3V0ZU1hcDogTWFwPHN0cmluZywgUmVzb3VyY2U+ID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGxldCBhY3RpdmVSb3V0ZVBhdGggPSBcIlwiO1xuICAgICAgICBsZXQgYWN0aXZlUmVzb3VyY2U6IFJlc291cmNlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vICBPbmx5IGF0dGFjaCBsYW1iZGEgdG8gYW4gQXBpIEdhdGV3YXkgaWYgYSByb3V0ZSBleGlzdFxuICAgICAgICBpZiAocHJvcC5hcGlHYXRld2F5Py5yb3V0ZSkge1xuXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUk91dGU6ICcsIHByb3AuYXBpR2F0ZXdheS5yb3V0ZSk7XG5cbiAgICAgICAgICAgIGlmICghcHJvcC5hcGlHYXRld2F5LnVzZVJvdXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgICAgICAvLyAgRmlyc3Qgd2UgY3JlYXRlIHRoZSByb290IHJlc291cmNlIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgLy8gIE5vdGU6ICB0aGlzIG5vdyB1c2VzIHRoZSBidW5kbGUgdmVyc2lvbiBhcyB0aGUgZmlyc3Qgc2VnbWVudCBpbiB0aGUgcGF0aC5cbiAgICAgICAgICAgICAgICBhY3RpdmVSb3V0ZVBhdGggPSBgdiR7KHByb3AuYXBpR2F0ZXdheS52ZXJzaW9uKSA/IHByb3AuYXBpR2F0ZXdheS52ZXJzaW9uIDogMX1gO1xuICAgICAgICAgICAgICAgIGFjdGl2ZVJlc291cmNlID0gUm91dGVzLnJvdXRlTWFwLmdldChhY3RpdmVSb3V0ZVBhdGgpIHx8IGFwaS5yb290LmFkZFJlc291cmNlKGFjdGl2ZVJvdXRlUGF0aCk7XG4gICAgICAgICAgICAgICAgUm91dGVzLnJvdXRlTWFwLnNldChhY3RpdmVSb3V0ZVBhdGgsIGFjdGl2ZVJlc291cmNlKTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAvLyAgTm93IHdlIGdvIHRocm91Z2ggb3VyIHJvdXRlIHNlZ21lbnRzIGNyZWF0aW5nIHRoZSByZXN0IG9mIHRoZSBwYXRoLlxuICAgICAgICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gcHJvcC5hcGlHYXRld2F5Py5yb3V0ZS5zcGxpdChcIi9cIikuZmlsdGVyKHggPT4gKHgpKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoU2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVSb3V0ZVBhdGggPSBgJHthY3RpdmVSb3V0ZVBhdGh9LyR7cGF0aFNlZ21lbnRzW2ldfWA7XG4gICAgICAgICAgICAgICAgbGV0IHNlY29uZGFyeVJlc291cmNlID0gUm91dGVzLnJvdXRlTWFwLmdldChhY3RpdmVSb3V0ZVBhdGgpIHx8IGFjdGl2ZVJlc291cmNlPy5hZGRSZXNvdXJjZShwYXRoU2VnbWVudHNbaV0pIHx8IGFwaS5yb290LmFkZFJlc291cmNlKHBhdGhTZWdtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgUm91dGVzLnJvdXRlTWFwLnNldChhY3RpdmVSb3V0ZVBhdGgsIHNlY29uZGFyeVJlc291cmNlKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVSZXNvdXJjZSA9IHNlY29uZGFyeVJlc291cmNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAgRmluYWxseSwgd2UgYXR0YWNoIG91ciBmdW5jdGlvbiB0byB0aGUgbGFzdCByZXNvdXJjZVxuICAgICAgICAgICAgYWN0aXZlUmVzb3VyY2UhLmFkZE1ldGhvZChwcm9wLmFwaUdhdGV3YXkubWV0aG9kIHx8ICdHRVQnLFxuICAgICAgICAgICAgICAgIG5ldyBMYW1iZGFJbnRlZ3JhdGlvbihsYW1iZGFOb2RlLCB7IHByb3h5OiB0cnVlLCB9KSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBSb3V0ZXMuY3JlYXRlUXVlcnlTdHJpbmdPYmplY3QocHJvcC5hcGlHYXRld2F5LnF1ZXJ5U3RyaW5ncyksXG4gICAgICAgICAgICAgICAgICAgIGFwaUtleVJlcXVpcmVkOiAocHJvcC5hcGlHYXRld2F5LnJlcXVpcmVBcGlLZXkpID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBhdXRob3JpemVyOiBwcm9wLmFwaUdhdGV3YXkuc2VjdXJlID8gYXV0aG9yaXplciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvblR5cGU6IHByb3AuYXBpR2F0ZXdheS5zZWN1cmUgPyBBdXRob3JpemF0aW9uVHlwZS5DVVNUT00gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVF1ZXJ5U3RyaW5nT2JqZWN0KHF1ZXJ5U3RyaW5nczogc3RyaW5nW10gfCB1bmRlZmluZWQpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSAge1xuXG4gICAgICAgIGlmICghcXVlcnlTdHJpbmdzIHx8IHF1ZXJ5U3RyaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9iajogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgICAgICBxdWVyeVN0cmluZ3MuZm9yRWFjaCgocXM6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgb2JqW2BtZXRob2QucmVxdWVzdC5xdWVyeXN0cmluZy4ke3FzfWBdID0gdHJ1ZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBvYmo7ICAgXG4gICAgfVxuXG59Il19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylvesterllc/aws-constructs",
3
- "version": "1.0.26",
3
+ "version": "1.0.28",
4
4
  "description": "AWS Constructs",
5
5
  "main": "dist/index.js",
6
6
  "keywords": [
@@ -4,4 +4,6 @@ export interface TsgLambdaRoutable {
4
4
  method?: "get" | "post" | "delete" | "put" | "patch";
5
5
  version?: number;
6
6
  useRouteOverride?: boolean;
7
+ requireApiKey?: boolean;
8
+ queryStrings?: string[];
7
9
  }
@@ -1,4 +1,4 @@
1
- import { IRestApi, LambdaIntegration, Resource, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
1
+ import { AuthorizationType, IRestApi, LambdaIntegration, Resource, TokenAuthorizer } from "aws-cdk-lib/aws-apigateway";
2
2
  import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
3
3
  import { TsgLambdaProp } from "../../config/types";
4
4
 
@@ -21,18 +21,18 @@ export class Routes {
21
21
 
22
22
  // Only attach lambda to an Api Gateway if a route exist
23
23
  if (prop.apiGateway?.route) {
24
-
24
+
25
25
  console.log('ROute: ', prop.apiGateway.route);
26
26
 
27
- if (!prop.apiGateway.useRouteOverride) {
28
- // First we create the root resource if it doesn't exist.
27
+ if (!prop.apiGateway.useRouteOverride) {
28
+ // First we create the root resource if it doesn't exist.
29
29
  // Note: this now uses the bundle version as the first segment in the path.
30
- activeRoutePath = `v${(prop.apiGateway.version) ? prop.apiGateway.version : 1}`;
30
+ activeRoutePath = `v${(prop.apiGateway.version) ? prop.apiGateway.version : 1}`;
31
31
  activeResource = Routes.routeMap.get(activeRoutePath) || api.root.addResource(activeRoutePath);
32
32
  Routes.routeMap.set(activeRoutePath, activeResource);
33
33
  }
34
-
35
-
34
+
35
+
36
36
  // Now we go through our route segments creating the rest of the path.
37
37
  const pathSegments = prop.apiGateway?.route.split("/").filter(x => (x));
38
38
 
@@ -46,8 +46,28 @@ export class Routes {
46
46
  // Finally, we attach our function to the last resource
47
47
  activeResource!.addMethod(prop.apiGateway.method || 'GET',
48
48
  new LambdaIntegration(lambdaNode, { proxy: true, }),
49
- prop.apiGateway.secure ? { authorizer } : undefined);
49
+ {
50
+ requestParameters: Routes.createQueryStringObject(prop.apiGateway.queryStrings),
51
+ apiKeyRequired: (prop.apiGateway.requireApiKey) ? true : false,
52
+ authorizer: prop.apiGateway.secure ? authorizer : undefined,
53
+ authorizationType: prop.apiGateway.secure ? AuthorizationType.CUSTOM : undefined,
54
+ });
55
+ }
56
+ }
57
+
58
+ public static createQueryStringObject(queryStrings: string[] | undefined): { [key: string]: boolean } {
59
+
60
+ if (!queryStrings || queryStrings.length === 0) {
61
+ return {};
50
62
  }
63
+
64
+ const obj: { [key: string]: boolean } = {};
65
+
66
+ queryStrings.forEach((qs: string) => {
67
+ obj[`method.request.querystring.${qs}`] = true;
68
+ });
69
+
70
+ return obj;
51
71
  }
52
72
 
53
73
  }