You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Trent Larson e878665943 add version to ping endpoint, tweak README 10 months ago
sql store mime_type for each file 10 months ago
.env.sample rename variables with S3_ (from AWS_) 10 months ago
.gitignore add DB to record each image upload 11 months ago
CONTRIBUTING.md check image upload against user limits 11 months ago
README.md add version to ping endpoint, tweak README 10 months ago
package.json add settings for American Cloud storage 10 months ago
pnpm-lock.yaml check image upload against user limits 11 months ago
server.js add version to ping endpoint, tweak README 10 months ago

README.md

Image Server

Remaining:

  • dockerize

setup

sh <(curl https://pkgx.sh) +pnpm sh
pnpm install
# create the directory for files that are being uploaded; should stay empty afterward
mkdir uploads
pnpm run migrate

Now set up an S3 bucket & Infura project, and create a .env file from .env.sample with these important settings:

AWS_ACCESS_KEY=
AWS_SECRET_KEY=
AWS_REGION=

INFURA_PROJECT_ID=

dev

node server.js

test

# run this first command in a directory where `npm install did-jwt` has been run
CODE='OWNER_DID="did:ethr:0x0000694B58C2cC69658993A90D3840C560f2F51F"; OWNER_PRIVATE_KEY_HEX="2b6472c026ec2aa2c4235c994a63868fc9212d18b58f6cbfe861b52e71330f5b"; didJwt = require("did-jwt"); didJwt.createJWT({ exp: Math.floor(Date.now() / 1000) + 60, iat: Math.floor(Date.now() / 1000), iss: OWNER_DID }, { issuer: OWNER_DID, signer: didJwt.SimpleSigner(OWNER_PRIVATE_KEY_HEX) }).then(console.log)'
JWT=`node -e "$CODE"`; curl -X POST -H "Authorization: Bearer $JWT" -F "image=@./test.png" http://localhost:3001/image
JWT=`node -e "$CODE"`; curl -X DELETE -H "Authorization: Bearer $JWT" http://localhost:3001/image/https%3A%2F%2Fgifts-image-test.s3.amazonaws.com%2F4599145c3a8792a678f458747f2d8512c680e8680bf5563c35b06cd770051ed2.png

deploy to prod first time

  • Do the necessary steps from "setup" above.

  • In object storage, set up bucket and erase any test data.

  • In haproxy, set a permanent web forward to the correct storage location.

deploy to prod subsequent times

  • Add CHANGELOG.md entry. Update version in server.js file.