* save images as private and serve via signed url from images.info api * download private images to directory on export * fix lint errors * private s3 default, AWS.s3 module level scope, default s3 url expiry * combine regex to one, and only replace when there are matches * fix lint * code not needed anymore, remove * updates after pulling master * revert the uploadToS3FromUrl url return * use model gettr to compact code, rename to attachments api * basic checking of document read permission to allow attachment viewing * fix: Continue to upload avatars as public fix: Allow redirect for non-private attachments * add support for publicly shared documents * catch errors which crash the app during zip export and user creation * add tests * enable AWS signature v4 for s3 * switch to use factories to build models for testing * add isDocker flag for local serving of attachment redirect url * fix redirect tests Co-authored-by: Tom Moor <tom.moor@gmail.com>
63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
// @flow
|
|
import bodyParser from 'koa-bodyparser';
|
|
import Koa from 'koa';
|
|
import Router from 'koa-router';
|
|
|
|
import auth from './auth';
|
|
import events from './events';
|
|
import users from './users';
|
|
import collections from './collections';
|
|
import documents from './documents';
|
|
import views from './views';
|
|
import hooks from './hooks';
|
|
import apiKeys from './apiKeys';
|
|
import shares from './shares';
|
|
import team from './team';
|
|
import integrations from './integrations';
|
|
import notificationSettings from './notificationSettings';
|
|
import utils from './utils';
|
|
import attachments from './attachments';
|
|
|
|
import { NotFoundError } from '../errors';
|
|
import errorHandling from '../middlewares/errorHandling';
|
|
import validation from '../middlewares/validation';
|
|
import methodOverride from '../middlewares/methodOverride';
|
|
import cache from './middlewares/cache';
|
|
import apiWrapper from './middlewares/apiWrapper';
|
|
|
|
const api = new Koa();
|
|
const router = new Router();
|
|
|
|
// middlewares
|
|
api.use(errorHandling());
|
|
api.use(bodyParser());
|
|
api.use(methodOverride());
|
|
api.use(cache());
|
|
api.use(validation());
|
|
api.use(apiWrapper());
|
|
|
|
// routes
|
|
router.use('/', auth.routes());
|
|
router.use('/', events.routes());
|
|
router.use('/', users.routes());
|
|
router.use('/', collections.routes());
|
|
router.use('/', documents.routes());
|
|
router.use('/', views.routes());
|
|
router.use('/', hooks.routes());
|
|
router.use('/', apiKeys.routes());
|
|
router.use('/', shares.routes());
|
|
router.use('/', team.routes());
|
|
router.use('/', integrations.routes());
|
|
router.use('/', notificationSettings.routes());
|
|
router.use('/', attachments.routes());
|
|
router.use('/', utils.routes());
|
|
router.post('*', ctx => {
|
|
ctx.throw(new NotFoundError('Endpoint not found'));
|
|
});
|
|
|
|
// Router is embedded in a Koa application wrapper, because koa-router does not
|
|
// allow middleware to catch any routes which were not explicitly defined.
|
|
api.use(router.routes());
|
|
|
|
export default api;
|