AnnotatedInternalController.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { Request } from 'express'
  2. import { inject } from 'inversify'
  3. import {
  4. BaseHttpController,
  5. controller,
  6. httpGet,
  7. // eslint-disable-next-line @typescript-eslint/no-unused-vars
  8. results,
  9. } from 'inversify-express-utils'
  10. import TYPES from '../../Bootstrap/Types'
  11. import { GetSetting } from '../../Domain/UseCase/GetSetting/GetSetting'
  12. import { GetUserFeatures } from '../../Domain/UseCase/GetUserFeatures/GetUserFeatures'
  13. @controller('/internal')
  14. export class AnnotatedInternalController extends BaseHttpController {
  15. constructor(
  16. @inject(TYPES.Auth_GetUserFeatures) private doGetUserFeatures: GetUserFeatures,
  17. @inject(TYPES.Auth_GetSetting) private doGetSetting: GetSetting,
  18. ) {
  19. super()
  20. }
  21. @httpGet('/users/:userUuid/features')
  22. async getFeatures(request: Request): Promise<results.JsonResult> {
  23. const result = await this.doGetUserFeatures.execute({
  24. userUuid: request.params.userUuid,
  25. offline: false,
  26. })
  27. if (result.success) {
  28. return this.json(result)
  29. }
  30. return this.json(result, 400)
  31. }
  32. @httpGet('/users/:userUuid/settings/:settingName')
  33. async getSetting(request: Request): Promise<results.JsonResult> {
  34. const resultOrError = await this.doGetSetting.execute({
  35. userUuid: request.params.userUuid,
  36. settingName: request.params.settingName,
  37. allowSensitiveRetrieval: true,
  38. })
  39. if (resultOrError.isFailed()) {
  40. return this.json(
  41. {
  42. error: {
  43. message: resultOrError.getError(),
  44. },
  45. },
  46. 400,
  47. )
  48. }
  49. return this.json({
  50. success: true,
  51. ...resultOrError.getValue(),
  52. })
  53. }
  54. }