gallery/server/index.js

62 lines
1.4 KiB
JavaScript

'use strict';
const express = require('express');
const request = require('request');
const bodyParser = require('body-parser');
const { expressSetHeaders } = require('./headers.js');
// Constants
const B2_BASE_URL = 'https://api.backblazeb2.com/b2api/v1/';
// App
const app = express();
app.use(bodyParser.text());
app.use(
express.static('./dist/', {
dotfiles: 'ignore',
etag: false,
index: ['index.html'],
setHeaders: expressSetHeaders
})
);
app.get('/api/v1/authorize_account', (req, res) => {
request(
{
url: B2_BASE_URL + 'b2_authorize_account',
headers: { Authorization: req.get('Authorization') }
},
function(error, response, body) {
res.set(response.headers);
res.send(body);
}
);
});
const POSTRedirect = url => (req, res) => {
request.post(
{
url: req.get('apiUrl') + url,
headers: { Authorization: req.get('Authorization') },
body: req.body
},
function(error, response, body) {
res.send(body);
}
);
};
app.post('/api/v1/get_upload_url', POSTRedirect('/b2api/v1/b2_get_upload_url'));
app.post('/api/v1/get_file_info', POSTRedirect('/b2api/v1/b2_get_file_info'));
app.post('/api/v1/remove_file', POSTRedirect('/b2api/v1/b2_delete_file_version'));
module.exports = {
app: app
};
if (require.main === module) {
// While this can work in Chrome, it is not ready for prime-time without a security certificate.
app.listen(8090, '127.0.0.1');
}