ItemsController.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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.ApiGateway_RequiredCrossServiceTokenMiddleware)
  8. export class ItemsController extends BaseHttpController {
  9. constructor(
  10. @inject(TYPES.ApiGateway_ServiceProxy) private serviceProxy: ServiceProxyInterface,
  11. @inject(TYPES.ApiGateway_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. @httpPost('/transition')
  34. async transition(request: Request, response: Response): Promise<void> {
  35. await this.serviceProxy.callSyncingServer(
  36. request,
  37. response,
  38. this.endpointResolver.resolveEndpointOrMethodIdentifier('POST', 'items/transition'),
  39. request.body,
  40. )
  41. }
  42. @httpGet('/:uuid')
  43. async getItem(request: Request, response: Response): Promise<void> {
  44. await this.serviceProxy.callSyncingServer(
  45. request,
  46. response,
  47. this.endpointResolver.resolveEndpointOrMethodIdentifier('GET', 'items/:uuid', request.params.uuid),
  48. request.body,
  49. )
  50. }
  51. }