Image server
The image server is a simple nodejs express server that allows images to be uploaded with Multer and resizes the based on url scheme, resizing is done with the node-steam library.
See: https://github.com/Amsterdam/openstad-image-server
Http-bearer is used fo validating requests so only registered clients can upload images.
Knex migrations create the clients table for registering clients that are allowed to use the API.
npm i
DB_NAME=
DB_USER=
DB_PASSWORD=
PORT_API=
PORT_IMAGE_SERVER=
IMAGES_DIR=
THROTTLE_CC_PROCESSORS=4
THROTTLE_CC_PREFETCHER= 20
THROTTLE_CC_REQUESTS= 100
APP_URL=
CACHE_TTS=
CACHE_OPTIMIZED_TTS=
CACHE_OPTIMIZED_TTS=
The app url is used to return a full url after upload.
Images directory defaults to images, if doesn't get created, create it manually.
npm install knex -g
knex migrate:latest
Run npm (or pm2, or whatever runner you use).
npm run start
For every site create a row in the MySQL clients table. Generate a random token that's safe. Currently there is no interface for creating so create it command line or through an mysql interface like sequelpro or phpmyadmin. The seed will generate one if the ENV values is
Example with node.js, using node-fetch & form-data. Pass the access_token that you've generated for the client, can be in url or as header "Bearer: ${token}" make sure it's over HTTPS.
const FormData = require('form-data');
const fetch = require('node-fetch');
exports.upload = function (token, buffer, fileName) {
const form = new FormData();
form.append('image', buffer, fileName);
form.append('field', 'files');
return fetch(process.env.IMAGE_API_URL+ '/image?access_token=' + process.env.IMAGE_API_ACCESS_TOKEN, {
method: 'POST',
body: form,
})
.then(function(res) {
return res.json();
})
.then(function(json) {
//json.url
})
.catch(function(err) {
// handle error
})
}
Example for creating a thumbnail resize and crop:
http://imageserver.com/image/path.png/:/rs=w:350,h:250;cp=w:350,h:250
Last modified 1yr ago