diff --git a/server/index.ts b/server/index.ts index 30c38e3..51cc4ae 100644 --- a/server/index.ts +++ b/server/index.ts @@ -4,42 +4,48 @@ import fastify from 'fastify' import formBodyPlugin from 'fastify-formbody' import fastifyReplyFrom from 'fastify-reply-from' const server = fastify() -server.register(formBodyPlugin) -server.register(fastifyReplyFrom) const port = config.server_port -server.register(fastifyMultipart, { - attachFieldsToBody: true, - sharedSchemaId: '#mySharedSchema', - limits: { - fieldNameSize: 100, // Max field name size in bytes - fieldSize: 1000, // Max field value size in bytes - fields: 10, // Max number of non-file fields - fileSize: 50000000, // For multipart forms, the max file size in bytes //50MB - files: 1, // Max number of file fields - headerPairs: 2000 // Max number of header key=>value pairs - } -}) -function combineURLs(baseURL:string, relativeURL:string) { //https://stackoverflow.com/a/49966753 +function combineURLs(baseURL: string, relativeURL: string) { //https://stackoverflow.com/a/49966753 return relativeURL - ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; } import calculate_all_image_features from "./routes/calculate_all_image_features" import delete_all_image_features from "./routes/delete_all_image_features" import reverse_search from "./routes/reverse_search" -server.post("/calculate_all_image_features",calculate_all_image_features) -server.post("/delete_all_image_features",delete_all_image_features) -server.post("/reverse_search",reverse_search) +server.register(async function (app) { + app.register(formBodyPlugin) + app.register(fastifyMultipart, { + attachFieldsToBody: true, + sharedSchemaId: '#mySharedSchema', + limits: { + fieldNameSize: 100, // Max field name size in bytes + fieldSize: 1000, // Max field value size in bytes + fields: 10, // Max number of non-file fields + fileSize: 50000000, // For multipart forms, the max file size in bytes //50MB + files: 1, // Max number of file fields + headerPairs: 2000 // Max number of header key=>value pairs + } + }) + app.post("/calculate_all_image_features", calculate_all_image_features) + app.post("/delete_all_image_features", delete_all_image_features) + app.post("/reverse_search", reverse_search) +}) ///////////////////////////////////////////////////////////////////////////////////////////////PROXY +server.register(fastifyReplyFrom) +server.addContentTypeParser('multipart/form-data', function (_request, payload, done) { + done(null, payload) //https://github.com/fastify/help/issues/67 +}) const akaze_routes = ['/akaze_reverse_search', '/calculate_akaze_features', '/delete_akaze_features'] akaze_routes.forEach((r) => server.post(r, async (_req, res) => { try { - res.from(combineURLs(config.akaze_microservice_url,r)) + res.from(combineURLs(config.akaze_microservice_url, r)) } catch (err) { + console.log(err) res.status(500).send('Akaze microservice is down') } })) @@ -48,8 +54,9 @@ const nn_routes = ['/nn_get_similar_images_by_image_buffer', '/nn_get_similar_im '/nn_get_similar_images_by_id', '/calculate_nn_features', '/delete_nn_features', '/nn_get_image_tags_by_image_buffer'] nn_routes.forEach((r) => server.post(r, async (_req, res) => { try { - res.from(combineURLs(config.nn_microservice_url,r)) + res.from(combineURLs(config.nn_microservice_url, r)) } catch (err) { + console.log(err) res.status(500).send('NN microservice is down') } })) @@ -57,8 +64,9 @@ nn_routes.forEach((r) => server.post(r, async (_req, res) => { const hist_routes = ['/hist_get_similar_images_by_image_buffer', '/hist_get_similar_images_by_id', '/calculate_hist_features', '/delete_hist_features'] hist_routes.forEach((r) => server.post(r, async (_req, res) => { try { - res.from(combineURLs(config.hist_microservice_url,r)) + res.from(combineURLs(config.hist_microservice_url, r)) } catch (err) { + console.log(err) res.status(500).send('HIST microservice is down') } })) @@ -66,8 +74,9 @@ hist_routes.forEach((r) => server.post(r, async (_req, res) => { const phash_routes = ['/phash_reverse_search', '/calculate_phash_features', '/delete_phash_features'] phash_routes.forEach((r) => server.post(r, async (_req, res) => { try { - res.from(combineURLs(config.phash_microservice_url,r)) + res.from(combineURLs(config.phash_microservice_url, r)) } catch (err) { + console.log(err) res.status(500).send('Phash microservice is down') } }))