You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 line
5.1 KiB

  1. # Copyright 2014-2016 OpenMarket Ltd
  2. # Copyright 2018 New Vector Ltd
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. from typing import TYPE_CHECKING, Callable
  16. from synapse.http.server import HttpServer, JsonResource
  17. from synapse.rest import admin
  18. from synapse.rest.client import (
  19. account,
  20. account_data,
  21. account_validity,
  22. appservice_ping,
  23. auth,
  24. auth_issuer,
  25. capabilities,
  26. devices,
  27. directory,
  28. events,
  29. filter,
  30. initial_sync,
  31. keys,
  32. knock,
  33. login,
  34. login_token_request,
  35. logout,
  36. mutual_rooms,
  37. notifications,
  38. openid,
  39. password_policy,
  40. presence,
  41. profile,
  42. push_rule,
  43. pusher,
  44. read_marker,
  45. receipts,
  46. register,
  47. relations,
  48. rendezvous,
  49. report_event,
  50. room,
  51. room_keys,
  52. room_upgrade_rest_servlet,
  53. sendtodevice,
  54. sync,
  55. tags,
  56. thirdparty,
  57. tokenrefresh,
  58. user_directory,
  59. versions,
  60. voip,
  61. )
  62. if TYPE_CHECKING:
  63. from synapse.server import HomeServer
  64. RegisterServletsFunc = Callable[["HomeServer", HttpServer], None]
  65. class ClientRestResource(JsonResource):
  66. """Matrix Client API REST resource.
  67. This gets mounted at various points under /_matrix/client, including:
  68. * /_matrix/client/r0
  69. * /_matrix/client/api/v1
  70. * /_matrix/client/unstable
  71. * etc
  72. """
  73. def __init__(self, hs: "HomeServer"):
  74. JsonResource.__init__(self, hs, canonical_json=False)
  75. self.register_servlets(self, hs)
  76. @staticmethod
  77. def register_servlets(client_resource: HttpServer, hs: "HomeServer") -> None:
  78. # Some servlets are only registered on the main process (and not worker
  79. # processes).
  80. is_main_process = hs.config.worker.worker_app is None
  81. versions.register_servlets(hs, client_resource)
  82. # Deprecated in r0
  83. initial_sync.register_servlets(hs, client_resource)
  84. room.register_deprecated_servlets(hs, client_resource)
  85. # Partially deprecated in r0
  86. events.register_servlets(hs, client_resource)
  87. room.register_servlets(hs, client_resource)
  88. login.register_servlets(hs, client_resource)
  89. profile.register_servlets(hs, client_resource)
  90. presence.register_servlets(hs, client_resource)
  91. directory.register_servlets(hs, client_resource)
  92. voip.register_servlets(hs, client_resource)
  93. if is_main_process:
  94. pusher.register_servlets(hs, client_resource)
  95. push_rule.register_servlets(hs, client_resource)
  96. if is_main_process:
  97. logout.register_servlets(hs, client_resource)
  98. sync.register_servlets(hs, client_resource)
  99. filter.register_servlets(hs, client_resource)
  100. account.register_servlets(hs, client_resource)
  101. register.register_servlets(hs, client_resource)
  102. if is_main_process:
  103. auth.register_servlets(hs, client_resource)
  104. receipts.register_servlets(hs, client_resource)
  105. read_marker.register_servlets(hs, client_resource)
  106. room_keys.register_servlets(hs, client_resource)
  107. keys.register_servlets(hs, client_resource)
  108. if is_main_process:
  109. tokenrefresh.register_servlets(hs, client_resource)
  110. tags.register_servlets(hs, client_resource)
  111. account_data.register_servlets(hs, client_resource)
  112. if is_main_process:
  113. report_event.register_servlets(hs, client_resource)
  114. openid.register_servlets(hs, client_resource)
  115. notifications.register_servlets(hs, client_resource)
  116. devices.register_servlets(hs, client_resource)
  117. if is_main_process:
  118. thirdparty.register_servlets(hs, client_resource)
  119. sendtodevice.register_servlets(hs, client_resource)
  120. user_directory.register_servlets(hs, client_resource)
  121. if is_main_process:
  122. room_upgrade_rest_servlet.register_servlets(hs, client_resource)
  123. capabilities.register_servlets(hs, client_resource)
  124. if is_main_process:
  125. account_validity.register_servlets(hs, client_resource)
  126. relations.register_servlets(hs, client_resource)
  127. password_policy.register_servlets(hs, client_resource)
  128. knock.register_servlets(hs, client_resource)
  129. appservice_ping.register_servlets(hs, client_resource)
  130. # moving to /_synapse/admin
  131. if is_main_process:
  132. admin.register_servlets_for_client_rest_resource(hs, client_resource)
  133. # unstable
  134. if is_main_process:
  135. mutual_rooms.register_servlets(hs, client_resource)
  136. login_token_request.register_servlets(hs, client_resource)
  137. rendezvous.register_servlets(hs, client_resource)
  138. auth_issuer.register_servlets(hs, client_resource)