UNPKG

linagora-rse

Version:
304 lines (284 loc) 8.45 kB
'use strict'; var express = require('express'); var cors = require('cors'); module.exports = function(appstoremanager, dependencies) { var appstoreAsController = require('../controllers/appstore')(appstoremanager); var appstoreAsMiddleware = require('../middleware/appstore')(appstoremanager); var authorizationMW = dependencies('authorizationMW'); var router = express.Router(); router.all('/api/*', cors(), authorizationMW.requiresAPILogin); router.all('/api/apps/:id', appstoreAsMiddleware.load); router.all('/api/apps/:id/*', appstoreAsMiddleware.load); /** * @swagger * /apps: * get: * tags: * - AppStore * description: Gets the list of all applications. * responses: * 200: * $ref: "#/responses/appstore_apps" * 401: * $ref: "#/responses/cm_401" * 500: * $ref: "#/responses/cm_500" */ router.get('/api/apps', appstoreAsController.list); /** * @swagger * /apps/{id}: * get: * tags: * - AppStore * description: Gets details of an application * parameters: * - $ref: "#/parameters/appstore_app_id" * responses: * 200: * $ref: "#/responses/appstore_app" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.get('/api/apps/:id', appstoreAsController.get); /** * @swagger * /apps: * post: * tags: * - AppStore * description: Creates a new application. * parameters: * - $ref: "#/parameters/appstore_application" * responses: * 200: * $ref: "#/responses/appstore_created_app" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 500: * $ref: "#/responses/cm_500" */ router.post('/api/apps', appstoreAsController.submit); /** * @swagger * /apps/{id}: * delete: * tags: * - AppStore * description: Removes an application from the app store, it will also delete every files (avatar, artifacts) related to this application. * parameters: * - $ref: "#/parameters/appstore_app_id" * responses: * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.delete('/api/apps/:id', appstoreAsController.deleteApp); /** * @swagger * /apps/{id}/deploy: * put: * tags: * - AppStore * description: Deploys a new application to a specified target with a specified version. * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_target" * responses: * 204: * $ref: "#/responses/cm_204" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.put('/api/apps/:id/deploy', appstoreAsController.deploy); /** * @swagger * /apps/{id}/updeploy: * put: * tags: * - AppStore * description: Deploys a new version of the application * parameters: * - $ref: "#/parameters/appstore_app_id" * responses: * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.put('/api/apps/:id/updeploy', appstoreAsController.updeploy); /** * @swagger * /apps/{id}/undeploy: * put: * tags: * - AppStore * description: Undeploys an application of a specified target described in the request body. * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_target" * responses: * 204: * $ref: "#/responses/cm_204" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.put('/api/apps/:id/undeploy', appstoreAsController.undeploy); /** * @swagger * /apps/{id}/avatar: * get: * tags: * - Avatar * description: Gets the application avatar as image * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_format" * responses: * 200: * $ref: "#/responses/cm_200" * 304: * $ref: "#/responses/cm_304" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.get('/api/apps/:id/avatar', appstoreAsController.getAvatar); /** * @swagger * /apps/{id}/avatar: * post: * tags: * - Avatar * description: Uploads an avatar for the application * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_mime_type" * - $ref: "#/parameters/appstore_size" * responses: * 201: * $ref: "#/responses/appstore_created_avatar" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 412: * $ref: "#/responses/cm_412" * 500: * $ref: "#/responses/cm_500" */ router.post('/api/apps/:id/avatar', appstoreAsController.uploadAvatar); /** * @swagger * /apps/{id}/artifact/{artifactId}: * get: * tags: * - AppStore * description: Gets the application artifact related to artifactId * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_artifact_id" * responses: * 200: * $ref: "#/responses/cm_200" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.get('/api/apps/:id/artifact/:artifactId', appstoreAsController.getArtifact); /** * @swagger * /apps/{id}/artifact: * post: * tags: * - AppStore * description: Uploads a new application artifact * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_size" * - $ref: "#/parameters/appstore_mime_type" * - $ref: "#/parameters/appstore_version" * responses: * 201: * $ref: "#/responses/appstore_created_avatar" * 400: * $ref: "#/responses/cm_400" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.post('/api/apps/:id/artifact', appstoreAsController.uploadArtifact); /** * @swagger * /apps/{id}/install: * put: * tags: * - AppStore * description: Installs an application of a specific target. * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_object_type" * responses: * 205: * $ref: "#/responses/cm_205" * 400: * $ref: "#/responses/cm_400" * 403: * $ref: "#/responses/cm_500" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.put('/api/apps/:id/install', appstoreAsController.install); /** * @swagger * /apps/{id}/uninstall: * put: * tags: * - AppStore * description: Uninstalls an application of a specific target. * parameters: * - $ref: "#/parameters/appstore_app_id" * - $ref: "#/parameters/appstore_object_type" * responses: * 205: * $ref: "#/responses/cm_205" * 400: * $ref: "#/responses/cm_400" * 403: * $ref: "#/responses/cm_500" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.put('/api/apps/:id/uninstall', appstoreAsController.uninstall); return router; };