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 2f04342a6d add settings for American Cloud storage 10 months ago
sql store mime_type for each file 10 months ago
.env.sample add settings for American Cloud storage 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 settings for American Cloud storage 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 settings for American Cloud storage 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 AWS S3 bucket & Infura project, and manually set these variables inside a .env file:

AWS_ACCESS_KEY=
AWS_SECRET_KEY=
AWS_REGION=

INFURA_PROJECT_ID=

If you use a domain with a web redirect, use a permanent redirect (since browsers complained with PR_END_OF_FILE_ERROR about a secure connection when it's temporary).

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 DNS, set a permanent web forward to the correct storage location.

deploy to prod subsequent times

  • Add CHANGELOG.md entry.