As of August 2024, this codebase and the relevant AWS Lambda has been decommissioned and will not be supported. The Platform API endpoint this app served was /api/v0.1/patron/{id}/barcode
and will be removed. Please contact the NYPL LSP or Remediation teams with any questions.
Searching within the nypl
and nypl-discovery
Github orgs, here is one example of getting a patron's barcodes through a different approach:
nypl-hold-request-consumer
- This app is hitting the/patrons/{id}
endpoint and getting the patron's barcode from the response'sbarCodes
array.
This app service the following routes:
GET /api/v0.1/patrons/{id}/barcode
GET /docs/barcode
This package is intended to be used as a Lambda-based Node.js/PHP Barcode Service using the NYPL PHP Microservice Starter.
This package adheres to PSR-1, PSR-2, and PSR-4 (using the Composer autoloader).
- Node.js >=6.0
- PHP >=7.0
Homebrew is highly recommended for PHP:
brew install php71
brew install php71-pdo-pgsql
- Clone the repo.
- Install required dependencies.
- Run
npm install
to install Node.js packages. - Run
composer install
to install PHP packages. - If you have not already installed
node-lambda
as a global package, runnpm install -g node-lambda
.
- Run
- Setup configuration files.
- Copy the
.env.sample
file to.env
. - Copy
config/var_env.sample
toconfig/var_dev.env
.
- Copy the
- Replace sample values in
.env
andconfig/var_dev.env
.
Various files are used to configure and deploy the Lambda.
.env
is used locally for two purposes:
- By
node-lambda
for deploying to and configuring Lambda in all environments.- You should use this file to configure the common settings for the Lambda (e.g. timeout, Node version).
- To set local environment variables so the Lambda can be run and tested in a local environment. These parameters are ultimately set by the var environment files when the Lambda is deployed.
Configures npm run
commands for each environment for deployment and testing. Deployment commands may also set
the proper AWS Lambda VPC, security group, and role.
"scripts": {
"deploy-dev": "node-lambda deploy -e qa -f config/var_qa.env -S config/event_sources_qa.json -o arn:aws:iam::224280085904:role/lambda_basic_execution -b subnet-f4fe56af -g sg-1d544067 -p nypl-sandbox",
"deploy-qa": "node-lambda deploy -e qa -f config/var_qa.env -S config/event_sources_qa.json -o arn:aws:iam::224280085904:role/lambda_basic_execution -b subnet-f4fe56af -g sg-1d544067 -p nypl-sandbox",
"deploy-production": "node-lambda deploy -e production -f config/var_production.env -S config/event_sources_production.json -b subnet-f4fe56af -g sg-1d544067"
},
Configures environment variables common to all environments.
Configures environment variables specific to each environment.
Configures Lambda event sources (triggers) specific to each environment.
To use node-lambda
to process the sample API Gateway event in event.json
, run:
npm run test-recap-bib
To use the PHP internal web server, run:
php -S localhost:8888 -t . index.php
You can then make a request to the Lambda: http://localhost:8888/api/v0.1/bibs
.
Create a Swagger route to generate Swagger specification documentation:
$service->get("/swagger", function (Request $request, Response $response) {
return SwaggerGenerator::generate(__DIR__ . "/src", $response);
});
Before deploying, ensure configuration files have been properly set up:
- Copy
config/var_env.sample
toconfig/dev.env
,config/var_qa.env
, andconfig/var_production.env
.- Verify environment variables are correct.
- Verify
.env
has correct settings for deployment. - Verify
package.json
has correct command-line options for security group, VPC, and role (if applicable). - Verify
config/event_sources_dev.json
,config/event_sources_qa.json
,config/event_sources_production.json
have proper event sources.
To deploy to an environment, run the corresponding command. For example:
npm run deploy-dev