ItemsController.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { Request, Response } from 'express'
  2. import { inject } from 'inversify'
  3. import { BaseHttpController, controller, httpGet, httpPost } from 'inversify-express-utils'
  4. import { TYPES } from '../../Bootstrap/Types'
  5. import { ServiceProxyInterface } from '../../Service/Http/ServiceProxyInterface'
  6. import { EndpointResolverInterface } from '../../Service/Resolver/EndpointResolverInterface'
  7. @controller('/v1/items', TYPES.RequiredCrossServiceTokenMiddleware)
  8. export class ItemsController extends BaseHttpController {
  9. constructor(
  10. @inject(TYPES.ServiceProxy) private serviceProxy: ServiceProxyInterface,
  11. @inject(TYPES.EndpointResolver) private endpointResolver: EndpointResolverInterface,
  12. ) {
  13. super()
  14. }
  15. @httpPost('/')
  16. async sync(request: Request, response: Response): Promise<void> {
  17. await this.serviceProxy.callSyncingServer(
  18. request,
  19. response,
  20. this.endpointResolver.resolveEndpointOrMethodIdentifier('POST', 'items/sync'),
  21. request.body,
  22. )
  23. }
  24. @httpPost('/check-integrity')
  25. async checkIntegrity(request: Request, response: Response): Promise<void> {
  26. await this.serviceProxy.callSyncingServer(
  27. request,
  28. response,
  29. this.endpointResolver.resolveEndpointOrMethodIdentifier('POST', 'items/check-integrity'),
  30. request.body,
  31. )
  32. }
  33. @httpGet('/:uuid')
  34. async getItem(request: Request, response: Response): Promise<void> {
  35. await this.serviceProxy.callSyncingServer(
  36. request,
  37. response,
  38. this.endpointResolver.resolveEndpointOrMethodIdentifier('GET', 'items/:uuid', request.params.uuid),
  39. request.body,
  40. )
  41. }
  42. }