@zohoim/client-sdk 1.0.0-poc8 → 1.0.0-poc80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/es/application/services/agents/AgentService.js +21 -0
  2. package/es/application/services/agents/index.js +2 -0
  3. package/es/application/services/bots/BotService.js +26 -0
  4. package/es/application/services/bots/index.js +2 -0
  5. package/es/application/services/channels/ChannelAgentService.js +21 -0
  6. package/es/application/services/channels/ChannelService.js +21 -0
  7. package/es/application/services/channels/index.js +3 -0
  8. package/es/application/services/contacts/ContactService.js +21 -0
  9. package/es/application/services/contacts/index.js +2 -0
  10. package/es/application/services/index.js +6 -0
  11. package/es/application/services/messages/MessageService.js +56 -0
  12. package/es/application/services/messages/index.js +2 -0
  13. package/es/application/services/sessions/SessionService.js +51 -0
  14. package/es/application/services/sessions/index.js +2 -0
  15. package/es/core/constants/ModuleNames.js +6 -1
  16. package/es/core/constants/ResponseTypes.js +6 -0
  17. package/es/core/constants/index.js +6 -2
  18. package/es/core/errors/AdapterError.js +7 -0
  19. package/es/core/errors/index.js +3 -0
  20. package/es/core/utils/ResponseUtils.js +24 -0
  21. package/es/core/utils/index.js +3 -0
  22. package/es/core/utils/validateSchema.js +74 -0
  23. package/es/domain/dto/RequestBuilder.js +44 -0
  24. package/es/domain/dto/agents/getAgentsRequest.js +12 -0
  25. package/es/domain/dto/agents/index.js +1 -0
  26. package/es/domain/dto/bots/getBotRequest.js +9 -0
  27. package/es/domain/dto/bots/getBotsRequest.js +15 -0
  28. package/es/domain/dto/bots/index.js +2 -0
  29. package/es/domain/dto/channels/agents/getChannelAgentsRequest.js +13 -0
  30. package/es/domain/dto/channels/agents/index.js +1 -0
  31. package/es/domain/dto/channels/getChannelsRequest.js +23 -0
  32. package/es/domain/dto/channels/index.js +3 -0
  33. package/es/domain/dto/contacts/getContactsRequest.js +11 -0
  34. package/es/domain/dto/contacts/index.js +1 -0
  35. package/es/domain/dto/index.js +6 -0
  36. package/es/domain/dto/messages/deleteMessageRequest.js +14 -0
  37. package/es/domain/dto/messages/getFullContentRequest.js +14 -0
  38. package/es/domain/dto/messages/getMessagesRequest.js +20 -0
  39. package/es/domain/dto/messages/index.js +8 -0
  40. package/es/domain/dto/messages/initiateSessionRequest.js +21 -0
  41. package/es/domain/dto/messages/resendMessageRequest.js +14 -0
  42. package/es/domain/dto/messages/searchMessagesRequest.js +22 -0
  43. package/es/domain/dto/messages/sendAttachmentRequest.js +20 -0
  44. package/es/domain/dto/messages/sendMessageRequest.js +17 -0
  45. package/es/domain/dto/sessions/getSessionAttachmentsRequest.js +13 -0
  46. package/es/domain/dto/sessions/getSessionLastMessagesRequest.js +13 -0
  47. package/es/domain/dto/sessions/getSessionRequest.js +13 -0
  48. package/es/domain/dto/sessions/getSessionsRequest.js +26 -0
  49. package/es/domain/dto/sessions/index.js +7 -0
  50. package/es/domain/dto/sessions/markSessionAsReadRequest.js +13 -0
  51. package/es/domain/dto/sessions/updateSessionAssigneeRequest.js +12 -0
  52. package/es/domain/dto/sessions/updateSessionStatusRequest.js +17 -0
  53. package/es/domain/entities/Actor/Actor.js +29 -0
  54. package/es/domain/entities/Actor/index.js +2 -2
  55. package/es/domain/entities/Agent/Agent.js +17 -102
  56. package/es/domain/entities/Agent/index.js +1 -1
  57. package/es/domain/entities/Attachment/Attachment.js +23 -0
  58. package/es/domain/entities/Attachment/index.js +2 -0
  59. package/es/domain/entities/Bot/Bot.js +23 -0
  60. package/es/domain/entities/Bot/index.js +2 -0
  61. package/es/domain/entities/Channel/Channel.js +38 -0
  62. package/es/domain/entities/Channel/index.js +2 -0
  63. package/es/domain/entities/Contact/Contact.js +22 -0
  64. package/es/domain/entities/Contact/index.js +2 -0
  65. package/es/domain/entities/IntegrationService/IntegrationService.js +33 -0
  66. package/es/domain/entities/IntegrationService/index.js +2 -0
  67. package/es/domain/entities/Message/Action.js +19 -0
  68. package/es/domain/entities/Message/ExternalInfo.js +17 -0
  69. package/es/domain/entities/Message/Info.js +21 -0
  70. package/es/domain/entities/Message/Location.js +18 -0
  71. package/es/domain/entities/Message/Message.js +70 -0
  72. package/es/domain/entities/Message/MessageWithSession.js +21 -0
  73. package/es/domain/entities/Message/index.js +6 -0
  74. package/es/domain/entities/Session/Session.js +52 -0
  75. package/es/domain/entities/Session/index.js +2 -0
  76. package/es/domain/entities/index.js +9 -2
  77. package/es/domain/enum/actor/ActorType.js +7 -0
  78. package/es/domain/enum/actor/index.js +2 -0
  79. package/es/domain/enum/attachment/AttachmentStatus.js +5 -0
  80. package/es/domain/enum/attachment/index.js +2 -0
  81. package/es/domain/enum/bot/BotServiceType.js +7 -0
  82. package/es/domain/enum/bot/index.js +2 -0
  83. package/es/domain/enum/index.js +6 -0
  84. package/es/domain/enum/integrationServices/IntegrationServices.js +11 -0
  85. package/es/domain/enum/integrationServices/index.js +2 -0
  86. package/es/domain/enum/message/ActionSubType.js +6 -0
  87. package/es/domain/enum/message/ActionType.js +6 -0
  88. package/es/domain/enum/message/ExternalInfoAction.js +9 -0
  89. package/es/domain/enum/message/InfoAction.js +17 -0
  90. package/es/domain/enum/message/InfoSessionStatus.js +10 -0
  91. package/es/domain/enum/message/MessageContentType.js +6 -0
  92. package/es/domain/enum/message/MessageDirection.js +6 -0
  93. package/es/domain/enum/message/MessageStatus.js +11 -0
  94. package/es/domain/enum/message/MessageType.js +11 -0
  95. package/es/domain/enum/message/index.js +10 -0
  96. package/es/domain/enum/session/SessionReplyStatus.js +21 -0
  97. package/es/domain/enum/session/SessionStatus.js +10 -0
  98. package/es/domain/enum/session/index.js +3 -0
  99. package/es/domain/interfaces/IAdapter.js +6 -0
  100. package/es/domain/interfaces/index.js +3 -1
  101. package/es/domain/interfaces/repositories/agents/IAgentRepository.js +17 -0
  102. package/es/domain/interfaces/repositories/agents/index.js +2 -0
  103. package/es/domain/interfaces/repositories/bots/IBotRepository.js +23 -0
  104. package/es/domain/interfaces/repositories/bots/index.js +2 -0
  105. package/es/domain/interfaces/repositories/channels/IChannelAgentRepository.js +17 -0
  106. package/es/domain/interfaces/repositories/channels/IChannelRepository.js +17 -0
  107. package/es/domain/interfaces/repositories/channels/index.js +3 -0
  108. package/es/domain/interfaces/repositories/contacts/IContactRepository.js +17 -0
  109. package/es/domain/interfaces/repositories/contacts/index.js +2 -0
  110. package/es/domain/interfaces/repositories/index.js +6 -0
  111. package/es/domain/interfaces/repositories/messages/IMessageRepository.js +52 -0
  112. package/es/domain/interfaces/repositories/messages/index.js +2 -0
  113. package/es/domain/interfaces/repositories/sessions/ISessionRepository.js +47 -0
  114. package/es/domain/interfaces/repositories/sessions/index.js +2 -0
  115. package/es/domain/schema/actor/ActorSchema.js +37 -0
  116. package/es/domain/schema/actor/AgentSchema.js +45 -0
  117. package/es/domain/schema/actor/index.js +3 -0
  118. package/es/domain/schema/attachment/AttachmentSchema.js +33 -0
  119. package/es/domain/schema/attachment/index.js +2 -0
  120. package/es/domain/schema/bot/BotSchema.js +33 -0
  121. package/es/domain/schema/bot/index.js +2 -0
  122. package/es/domain/schema/channel/ChannelSchema.js +49 -0
  123. package/es/domain/schema/channel/index.js +2 -0
  124. package/es/domain/schema/contact/ContactSchema.js +27 -0
  125. package/es/domain/schema/contact/index.js +2 -0
  126. package/es/domain/schema/index.js +8 -0
  127. package/es/domain/schema/integrationService/IntegrationServiceSchema.js +31 -0
  128. package/es/domain/schema/integrationService/index.js +2 -0
  129. package/es/domain/schema/message/ActionSchema.js +18 -0
  130. package/es/domain/schema/message/ExternalInfoSchema.js +9 -0
  131. package/es/domain/schema/message/InfoSchema.js +24 -0
  132. package/es/domain/schema/message/LocationSchema.js +11 -0
  133. package/es/domain/schema/message/MessageSchema.js +112 -0
  134. package/es/domain/schema/message/MessageWithSessionSchema.js +10 -0
  135. package/es/domain/schema/message/index.js +7 -0
  136. package/es/domain/schema/session/SessionSchema.js +82 -0
  137. package/es/domain/schema/session/index.js +2 -0
  138. package/es/frameworks/managers/ModuleFactory.js +58 -0
  139. package/es/frameworks/managers/ModuleManager.js +44 -0
  140. package/es/frameworks/managers/index.js +2 -0
  141. package/es/frameworks/sdk/IMSDK.js +62 -0
  142. package/es/frameworks/sdk/agents/AgentSDK.js +30 -0
  143. package/es/frameworks/sdk/agents/index.js +2 -0
  144. package/es/frameworks/sdk/bots/BotSDK.js +30 -0
  145. package/es/frameworks/sdk/bots/index.js +2 -0
  146. package/es/frameworks/sdk/channels/ChannelSDK.js +37 -0
  147. package/es/frameworks/sdk/channels/index.js +2 -0
  148. package/es/frameworks/sdk/contacts/ContactSDK.js +30 -0
  149. package/es/frameworks/sdk/contacts/index.js +2 -0
  150. package/es/frameworks/sdk/index.js +2 -0
  151. package/es/frameworks/sdk/messages/MessageSDK.js +32 -0
  152. package/es/frameworks/sdk/messages/index.js +2 -0
  153. package/es/frameworks/sdk/sessions/SessionSDK.js +34 -0
  154. package/es/frameworks/sdk/sessions/index.js +2 -0
  155. package/es/index.js +12 -4
  156. package/es/infrastructure/adapters/agents/AgentAdapter.js +28 -0
  157. package/es/infrastructure/adapters/agents/index.js +2 -0
  158. package/es/infrastructure/adapters/attachments/AttachmentAdapter.js +25 -0
  159. package/es/infrastructure/adapters/attachments/index.js +2 -0
  160. package/es/infrastructure/adapters/bots/BotAdapter.js +25 -0
  161. package/es/infrastructure/adapters/bots/index.js +2 -0
  162. package/es/infrastructure/adapters/channels/ChannelAdapter.js +29 -0
  163. package/es/infrastructure/adapters/channels/ChannelAgentAdapter.js +49 -0
  164. package/es/infrastructure/adapters/channels/index.js +3 -0
  165. package/es/infrastructure/adapters/contacts/ContactAdapter.js +24 -0
  166. package/es/infrastructure/adapters/contacts/index.js +2 -0
  167. package/es/infrastructure/adapters/index.js +7 -0
  168. package/es/infrastructure/adapters/messages/MessageAdapter.js +41 -0
  169. package/es/infrastructure/adapters/messages/MessageWithSessionAdapter.js +23 -0
  170. package/es/infrastructure/adapters/messages/index.js +2 -0
  171. package/es/infrastructure/adapters/sessions/SessionAdapter.js +36 -0
  172. package/es/infrastructure/adapters/sessions/index.js +2 -0
  173. package/es/infrastructure/api/BaseAPI.js +147 -0
  174. package/es/infrastructure/api/agents/AgentAPI.js +14 -0
  175. package/es/infrastructure/api/agents/index.js +2 -0
  176. package/es/infrastructure/api/bots/BotAPI.js +24 -0
  177. package/es/infrastructure/api/bots/index.js +2 -0
  178. package/es/infrastructure/api/channels/ChannelAPI.js +14 -0
  179. package/es/infrastructure/api/channels/ChannelAgentAPI.js +22 -0
  180. package/es/infrastructure/api/channels/index.js +3 -0
  181. package/es/infrastructure/api/contacts/ContactAPI.js +14 -0
  182. package/es/infrastructure/api/contacts/index.js +2 -0
  183. package/es/infrastructure/api/index.js +6 -0
  184. package/es/infrastructure/api/messages/MessageAPI.js +84 -0
  185. package/es/infrastructure/api/messages/index.js +2 -0
  186. package/es/infrastructure/api/registry/agents/agentAPIRegistry.js +12 -0
  187. package/es/infrastructure/api/registry/agents/constructAgentEndPoint.js +10 -0
  188. package/es/infrastructure/api/registry/agents/index.js +2 -0
  189. package/es/infrastructure/api/registry/bots/botAPIRegistry.js +17 -0
  190. package/es/infrastructure/api/registry/bots/constructBotEndPoint.js +10 -0
  191. package/es/infrastructure/api/registry/bots/index.js +2 -0
  192. package/es/infrastructure/api/registry/channels/channelAPIRegistry.js +16 -0
  193. package/es/infrastructure/api/registry/channels/channelAgentAPIRegistry.js +12 -0
  194. package/es/infrastructure/api/registry/channels/constructChannelEndPoint.js +10 -0
  195. package/es/infrastructure/api/registry/channels/index.js +2 -0
  196. package/es/infrastructure/api/registry/contacts/constructContactEndPoint.js +10 -0
  197. package/es/infrastructure/api/registry/contacts/contactAPIRegistry.js +12 -0
  198. package/es/infrastructure/api/registry/contacts/index.js +2 -0
  199. package/es/infrastructure/api/registry/createAPIRegistry.js +7 -0
  200. package/es/infrastructure/api/registry/createBaseUrl.js +3 -0
  201. package/es/infrastructure/api/registry/getRegistryConfig.js +26 -0
  202. package/es/infrastructure/api/registry/index.js +2 -0
  203. package/es/infrastructure/api/registry/messages/constructMessageEndPoint.js +4 -0
  204. package/es/infrastructure/api/registry/messages/index.js +2 -0
  205. package/es/infrastructure/api/registry/messages/messageAPIRegistry.js +57 -0
  206. package/es/infrastructure/api/registry/sessions/constructSessionEndPoint.js +10 -0
  207. package/es/infrastructure/api/registry/sessions/index.js +2 -0
  208. package/es/infrastructure/api/registry/sessions/sessionAPIRegistry.js +46 -0
  209. package/es/infrastructure/api/sessions/SessionAPI.js +74 -0
  210. package/es/infrastructure/api/sessions/index.js +2 -0
  211. package/es/infrastructure/config/configRegistry.js +27 -0
  212. package/es/infrastructure/config/index.js +2 -0
  213. package/es/infrastructure/repositories/agents/AgentRepository.js +49 -0
  214. package/es/infrastructure/repositories/agents/index.js +2 -0
  215. package/es/infrastructure/repositories/bots/BotRepository.js +58 -0
  216. package/es/infrastructure/repositories/bots/index.js +2 -0
  217. package/es/infrastructure/repositories/channels/ChannelAgentRepository.js +49 -0
  218. package/es/infrastructure/repositories/channels/ChannelRepository.js +49 -0
  219. package/es/infrastructure/repositories/channels/index.js +3 -0
  220. package/es/infrastructure/repositories/contacts/ContactRepository.js +49 -0
  221. package/es/infrastructure/repositories/contacts/index.js +2 -0
  222. package/es/infrastructure/repositories/index.js +6 -0
  223. package/es/infrastructure/repositories/messages/MessageRepository.js +111 -0
  224. package/es/infrastructure/repositories/messages/index.js +2 -0
  225. package/es/infrastructure/repositories/sessions/SessionRepository.js +105 -0
  226. package/es/infrastructure/repositories/sessions/index.js +2 -0
  227. package/package.json +4 -1
  228. package/es/domain/entities/Actor/ActorType.js +0 -6
  229. package/es/domain/errors/index.js +0 -2
  230. package/es/domain/interfaces/channels/IChannelAgent.js +0 -9
  231. package/es/domain/interfaces/channels/index.js +0 -2
  232. package/es/domain/services/channels/ChannelAgentService.js +0 -16
  233. package/es/domain/services/channels/index.js +0 -2
  234. package/es/domain/services/index.js +0 -1
  235. package/es/domain/types/channels/GetChannelAgentsRequest.js +0 -7
  236. package/es/domain/types/channels/index.js +0 -2
  237. package/es/domain/types/index.js +0 -1
  238. package/es/managers/ModuleFactor.js +0 -6
  239. package/es/managers/ModuleManager.js +0 -30
  240. package/es/managers/index.js +0 -2
  241. package/es/modules/channels/index.js +0 -1
  242. package/es/modules/channels/sdk/ChannelAgentsSDK.js +0 -13
  243. package/es/modules/channels/sdk/ChannelSDK.js +0 -7
  244. package/es/modules/channels/sdk/index.js +0 -2
  245. package/es/modules/index.js +0 -1
  246. package/es/sdk/IMSDK.js +0 -19
  247. package/es/sdk/index.js +0 -2
  248. /package/es/{domain → core}/errors/ValidationError.js +0 -0
@@ -0,0 +1,147 @@
1
+ import { ResponseTypes } from "../../core/constants";
2
+ import { ResponseUtils } from "../../core/utils";
3
+ import configRegistry from "../config/configRegistry";
4
+ import { getRegistryConfig } from "./registry";
5
+ export default class BaseAPI {
6
+ constructor() {
7
+ let {
8
+ module,
9
+ configProvider = configRegistry,
10
+ registryProvider = {
11
+ getRegistryConfig
12
+ }
13
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
14
+ this.configProvider = configProvider;
15
+ this.registryProvider = registryProvider;
16
+ this.httpClient = this.configProvider.getHttpClient();
17
+ this.baseURL = this.configProvider.getBaseURL();
18
+ this.module = module;
19
+ }
20
+
21
+ replacePathParams(url, params) {
22
+ let _url = url;
23
+ Object.entries(params).forEach(_ref => {
24
+ let [key, value] = _ref;
25
+ _url = url.replace(`:${key}`, value);
26
+ });
27
+ return _url;
28
+ }
29
+
30
+ buildUrl(_ref2) {
31
+ let {
32
+ url,
33
+ params,
34
+ query
35
+ } = _ref2;
36
+
37
+ const _params = params || {};
38
+
39
+ const _query = query || {};
40
+
41
+ let _url = this.replacePathParams(url, _params);
42
+
43
+ if (this.baseURL) {
44
+ _url = `${this.baseURL}${_url}`;
45
+ }
46
+
47
+ const queryString = this.buildQuery(_query);
48
+
49
+ if (queryString) {
50
+ return `${_url}?${queryString}`;
51
+ }
52
+
53
+ return _url;
54
+ }
55
+
56
+ buildQuery(query) {
57
+ const filteredQuery = Object.entries(query).filter(_ref3 => {
58
+ let [, value] = _ref3;
59
+ return value !== undefined && value !== null && value !== '';
60
+ }).reduce((acc, _ref4) => {
61
+ let [key, value] = _ref4;
62
+ acc[key] = value;
63
+ return acc;
64
+ }, {});
65
+ return Object.entries(filteredQuery).map(_ref5 => {
66
+ let [key, value] = _ref5;
67
+ return `${key}=${value}`;
68
+ }).join('&');
69
+ }
70
+
71
+ async request(_ref6) {
72
+ let {
73
+ request,
74
+ operation,
75
+ header
76
+ } = _ref6;
77
+ const config = this.registryProvider.getRegistryConfig(this.module, operation);
78
+
79
+ if (!config) {
80
+ throw new Error(`Operation "${operation}" not found in registry for module "${this.module}"`);
81
+ }
82
+
83
+ const url = this.buildUrl({
84
+ url: config.endpoint,
85
+ params: request.params || {},
86
+ query: request.query || {}
87
+ });
88
+ const httpRequest = await this.httpClient.request({
89
+ url,
90
+ method: config.method,
91
+ header,
92
+ payload: request.body || {}
93
+ });
94
+ return httpRequest;
95
+ }
96
+
97
+ createAPIProxy(customAPI, defaultAPI) {
98
+ // If no custom API provided, just use default
99
+ if (!customAPI) {
100
+ return defaultAPI;
101
+ } // Create a proxy for method delegation
102
+
103
+
104
+ return new Proxy({}, {
105
+ get: (target, prop) => {
106
+ // For methods, check if custom implementation exists
107
+ if (typeof prop === 'string' && typeof customAPI[prop] === 'function' && this.isMethodOverridden(customAPI, prop)) {
108
+ // Use custom implementation if available
109
+ return customAPI[prop].bind(customAPI);
110
+ } // Fall back to default implementation
111
+
112
+
113
+ return defaultAPI[prop].bind(defaultAPI);
114
+ }
115
+ });
116
+ }
117
+
118
+ isMethodOverridden(customAPI, methodName) {
119
+ const customPrototype = Object.getPrototypeOf(customAPI);
120
+ return typeof customAPI[methodName] === 'function' && // Method is defined directly on custom prototype
121
+ Object.prototype.hasOwnProperty.call(customPrototype, methodName);
122
+ }
123
+
124
+ async executeAPICall(_ref7) {
125
+ let {
126
+ operation,
127
+ request,
128
+ apiProxy,
129
+ customAPI,
130
+ adapter,
131
+ responseType = ResponseTypes.SINGLE
132
+ } = _ref7;
133
+ const response = await apiProxy[operation](request);
134
+ const isOverridden = this.isMethodOverridden(customAPI, operation);
135
+
136
+ if (isOverridden) {
137
+ return response;
138
+ }
139
+
140
+ if (responseType === ResponseTypes.NONE || !adapter) {
141
+ return response;
142
+ }
143
+
144
+ return responseType === ResponseTypes.LIST ? ResponseUtils.adaptListResponse(response, adapter.adapt) : ResponseUtils.adaptSingleResponse(response, adapter.adapt);
145
+ }
146
+
147
+ }
@@ -0,0 +1,14 @@
1
+ import { getAgentsRequest } from "../../../domain/dto";
2
+ import { IAgentRepository } from "../../../domain/interfaces/repositories";
3
+ export default class AgentAPI extends IAgentRepository {
4
+ async getAgents() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getAgentsRequest();
6
+ const operation = 'getAgents';
7
+ const httpRequest = await this.request({
8
+ request,
9
+ operation
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ }
@@ -0,0 +1,2 @@
1
+ import AgentAPI from "./AgentAPI";
2
+ export { AgentAPI };
@@ -0,0 +1,24 @@
1
+ import { getBotsRequest, getBotRequest } from "../../../domain/dto";
2
+ import { IBotRepository } from "../../../domain/interfaces/repositories";
3
+ export default class BotAPI extends IBotRepository {
4
+ async getBots() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getBotsRequest();
6
+ const operation = 'getBots';
7
+ const httpRequest = await this.request({
8
+ request,
9
+ operation
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ async getBot() {
15
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getBotRequest();
16
+ const operation = 'getBot';
17
+ const httpRequest = await this.request({
18
+ request,
19
+ operation
20
+ });
21
+ return httpRequest;
22
+ }
23
+
24
+ }
@@ -0,0 +1,2 @@
1
+ import BotAPI from "./BotAPI";
2
+ export { BotAPI };
@@ -0,0 +1,14 @@
1
+ import { getChannelsRequest } from "../../../domain/dto";
2
+ import { IChannelRepository } from "../../../domain/interfaces/repositories";
3
+ export default class ChannelAPI extends IChannelRepository {
4
+ async getChannels() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getChannelsRequest();
6
+ const operation = 'getChannels';
7
+ const httpRequest = await this.request({
8
+ request,
9
+ operation
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ }
@@ -0,0 +1,22 @@
1
+ import { getChannelAgentsRequest } from "../../../domain/dto";
2
+ import { IChannelAgentRepository } from "../../../domain/interfaces/repositories";
3
+ export default class ChannelAgentAPI extends IChannelAgentRepository {
4
+ async getAgents() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getChannelAgentsRequest();
6
+ const {
7
+ searchStr
8
+ } = request.query;
9
+
10
+ if (searchStr) {
11
+ request.query.searchStr = `*${encodeURIComponent(searchStr)}*`;
12
+ }
13
+
14
+ const operation = 'getAgents';
15
+ const httpRequest = await this.request({
16
+ request,
17
+ operation
18
+ });
19
+ return httpRequest;
20
+ }
21
+
22
+ }
@@ -0,0 +1,3 @@
1
+ import ChannelAgentAPI from "./ChannelAgentAPI";
2
+ import ChannelAPI from "./ChannelAPI";
3
+ export { ChannelAgentAPI, ChannelAPI };
@@ -0,0 +1,14 @@
1
+ import { getContactsRequest } from "../../../domain/dto";
2
+ import { IContactRepository } from "../../../domain/interfaces/repositories";
3
+ export default class ContactAPI extends IContactRepository {
4
+ async getContacts() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getContactsRequest();
6
+ const operation = 'getContacts';
7
+ const httpRequest = await this.request({
8
+ request,
9
+ operation
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ }
@@ -0,0 +1,2 @@
1
+ import ContactAPI from "./ContactAPI";
2
+ export { ContactAPI };
@@ -0,0 +1,6 @@
1
+ export * from "./channels";
2
+ export * from "./sessions";
3
+ export * from "./bots";
4
+ export * from "./messages";
5
+ export * from "./agents";
6
+ export * from "./contacts";
@@ -0,0 +1,84 @@
1
+ import { getMessagesRequest, deleteMessageRequest, getFullContentRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, initiateSessionRequest, searchMessagesRequest } from "../../../domain/dto";
2
+ import { IMessageRepository } from "../../../domain/interfaces/repositories";
3
+ export default class MessageAPI extends IMessageRepository {
4
+ async getMessages() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getMessagesRequest();
6
+ const operation = 'getMessages';
7
+ const httpRequest = await this.request({
8
+ operation,
9
+ request
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ async getFullContent() {
15
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getFullContentRequest();
16
+ const operation = 'getFullContent';
17
+ const httpRequest = await this.request({
18
+ operation,
19
+ request
20
+ });
21
+ return httpRequest;
22
+ }
23
+
24
+ async sendMessage() {
25
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sendMessageRequest();
26
+ const operation = 'sendMessage';
27
+ const httpRequest = await this.request({
28
+ operation,
29
+ request
30
+ });
31
+ return httpRequest;
32
+ }
33
+
34
+ async sendAttachment() {
35
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sendAttachmentRequest();
36
+ const operation = 'sendAttachment';
37
+ const httpRequest = await this.request({
38
+ operation,
39
+ request
40
+ });
41
+ return httpRequest;
42
+ }
43
+
44
+ async resendMessage() {
45
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : resendMessageRequest();
46
+ const operation = 'resendMessage';
47
+ const httpRequest = await this.request({
48
+ operation,
49
+ request
50
+ });
51
+ return httpRequest;
52
+ }
53
+
54
+ async deleteMessage() {
55
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : deleteMessageRequest();
56
+ const operation = 'deleteMessage';
57
+ const httpRequest = await this.request({
58
+ operation,
59
+ request
60
+ });
61
+ return httpRequest;
62
+ }
63
+
64
+ async initiateSession() {
65
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initiateSessionRequest();
66
+ const operation = 'initiateSession';
67
+ const httpRequest = await this.request({
68
+ operation,
69
+ request
70
+ });
71
+ return httpRequest;
72
+ }
73
+
74
+ async searchMessages() {
75
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : searchMessagesRequest();
76
+ const operation = 'searchMessages';
77
+ const httpRequest = await this.request({
78
+ operation,
79
+ request
80
+ });
81
+ return httpRequest;
82
+ }
83
+
84
+ }
@@ -0,0 +1,2 @@
1
+ import MessageAPI from "./MessageAPI";
2
+ export { MessageAPI };
@@ -0,0 +1,12 @@
1
+ import { HTTP_METHODS } from "../../../../core/constants";
2
+ import { getAgentsRequest } from "../../../../domain/dto";
3
+ import createAPIRegistry from "../createAPIRegistry";
4
+ import constructAgentEndPoint from "./constructAgentEndPoint";
5
+
6
+ function getAgents() {
7
+ return createAPIRegistry(constructAgentEndPoint(), HTTP_METHODS.GET, getAgentsRequest());
8
+ }
9
+
10
+ export default {
11
+ getAgents
12
+ };
@@ -0,0 +1,10 @@
1
+ import createBaseUrl from "../createBaseUrl";
2
+ export default function constructAgentEndPoint(extra) {
3
+ const base = '/users';
4
+
5
+ if (extra) {
6
+ return createBaseUrl(base + extra);
7
+ }
8
+
9
+ return createBaseUrl(base);
10
+ }
@@ -0,0 +1,2 @@
1
+ import agentAPIRegistry from "./agentAPIRegistry";
2
+ export { agentAPIRegistry };
@@ -0,0 +1,17 @@
1
+ import { HTTP_METHODS } from "../../../../core/constants";
2
+ import { getBotsRequest, getBotRequest } from "../../../../domain/dto";
3
+ import createAPIRegistry from "../createAPIRegistry";
4
+ import constructBotEndPoint from "./constructBotEndPoint";
5
+
6
+ function getBots() {
7
+ return createAPIRegistry(constructBotEndPoint(), HTTP_METHODS.GET, getBotsRequest());
8
+ }
9
+
10
+ function getBot() {
11
+ return createAPIRegistry(constructBotEndPoint('/:botId'), HTTP_METHODS.GET, getBotRequest());
12
+ }
13
+
14
+ export default {
15
+ getBots,
16
+ getBot
17
+ };
@@ -0,0 +1,10 @@
1
+ import createBaseUrl from "../createBaseUrl";
2
+ export default function constructBotEndPoint(extra) {
3
+ const base = '/bots';
4
+
5
+ if (extra) {
6
+ return createBaseUrl(base + extra);
7
+ }
8
+
9
+ return createBaseUrl(base);
10
+ }
@@ -0,0 +1,2 @@
1
+ import botAPIRegistry from "./botAPIRegistry";
2
+ export { botAPIRegistry };
@@ -0,0 +1,16 @@
1
+ import { HTTP_METHODS } from "../../../../core/constants";
2
+ import { getChannelsRequest } from "../../../../domain/dto";
3
+ import createAPIRegistry from "../createAPIRegistry";
4
+ import channelAgentAPIRegistry from "./channelAgentAPIRegistry";
5
+ import constructChannelEndPoint from "./constructChannelEndPoint";
6
+
7
+ function getChannels() {
8
+ return createAPIRegistry(constructChannelEndPoint(), HTTP_METHODS.GET, getChannelsRequest());
9
+ }
10
+
11
+ const channelAPIRegistry = {
12
+ getChannels,
13
+ agents: { ...channelAgentAPIRegistry
14
+ }
15
+ };
16
+ export default channelAPIRegistry;
@@ -0,0 +1,12 @@
1
+ import { HTTP_METHODS } from "../../../../core/constants";
2
+ import { getChannelAgentsRequest } from "../../../../domain/dto";
3
+ import createAPIRegistry from "../createAPIRegistry";
4
+ import constructChannelEndPoint from "./constructChannelEndPoint";
5
+
6
+ function getAgents() {
7
+ return createAPIRegistry(constructChannelEndPoint('/:channelId/agents'), HTTP_METHODS.GET, getChannelAgentsRequest());
8
+ }
9
+
10
+ export default {
11
+ getAgents
12
+ };
@@ -0,0 +1,10 @@
1
+ import createBaseUrl from "../createBaseUrl";
2
+ export default function constructChannelEndPoint(extra) {
3
+ const base = '/channels';
4
+
5
+ if (extra) {
6
+ return createBaseUrl(base + extra);
7
+ }
8
+
9
+ return createBaseUrl(base);
10
+ }
@@ -0,0 +1,2 @@
1
+ import channelAPIRegistry from "./channelAPIRegistry";
2
+ export { channelAPIRegistry };
@@ -0,0 +1,10 @@
1
+ import createBaseUrl from "../createBaseUrl";
2
+ export default function constructContactEndPoint(extra) {
3
+ const base = '/contacts';
4
+
5
+ if (extra) {
6
+ return createBaseUrl(base + extra);
7
+ }
8
+
9
+ return createBaseUrl(base);
10
+ }
@@ -0,0 +1,12 @@
1
+ import { HTTP_METHODS } from "../../../../core/constants";
2
+ import { getContactsRequest } from "../../../../domain/dto";
3
+ import createAPIRegistry from "../createAPIRegistry";
4
+ import constructContactEndPoint from "./constructContactEndPoint";
5
+
6
+ function getContacts() {
7
+ return createAPIRegistry(constructContactEndPoint(), HTTP_METHODS.GET, getContactsRequest());
8
+ }
9
+
10
+ export default {
11
+ getContacts
12
+ };
@@ -0,0 +1,2 @@
1
+ import contactAPIRegistry from "./contactAPIRegistry";
2
+ export { contactAPIRegistry };
@@ -0,0 +1,7 @@
1
+ export default function createAPIRegistry(endpoint, method, requestDefinition) {
2
+ return {
3
+ endpoint,
4
+ method,
5
+ ...requestDefinition
6
+ };
7
+ }
@@ -0,0 +1,3 @@
1
+ export default function createBaseUrl(path) {
2
+ return `/api/v1${path}`;
3
+ }
@@ -0,0 +1,26 @@
1
+ import selectn from 'selectn';
2
+ import { channelAPIRegistry } from "./channels";
3
+ import { sessionAPIRegistry } from "./sessions";
4
+ import { botAPIRegistry } from "./bots";
5
+ import { messageAPIRegistry } from "./messages";
6
+ import { agentAPIRegistry } from "./agents";
7
+ import { contactAPIRegistry } from "./contacts";
8
+ import { ModuleNames } from "../../../core/constants";
9
+ const APIRegistry = {
10
+ [ModuleNames.CHANNELS]: channelAPIRegistry,
11
+ [ModuleNames.SESSIONS]: sessionAPIRegistry,
12
+ [ModuleNames.BOTS]: botAPIRegistry,
13
+ [ModuleNames.MESSAGES]: messageAPIRegistry,
14
+ [ModuleNames.AGENTS]: agentAPIRegistry,
15
+ [ModuleNames.CONTACTS]: contactAPIRegistry
16
+ };
17
+ export default function getRegistryConfig(module, operation) {
18
+ const moduleConfig = selectn(module, APIRegistry);
19
+
20
+ if (!moduleConfig) {
21
+ return null;
22
+ }
23
+
24
+ const operationConfig = moduleConfig[operation];
25
+ return operationConfig ? operationConfig() : null;
26
+ }
@@ -0,0 +1,2 @@
1
+ import getRegistryConfig from "./getRegistryConfig";
2
+ export { getRegistryConfig };
@@ -0,0 +1,4 @@
1
+ import constructSessionEndPoint from "../sessions/constructSessionEndPoint";
2
+ export default function constructMessageEndPoint(extra) {
3
+ return constructSessionEndPoint(extra);
4
+ }
@@ -0,0 +1,2 @@
1
+ import messageAPIRegistry from "./messageAPIRegistry";
2
+ export { messageAPIRegistry };
@@ -0,0 +1,57 @@
1
+ import { HTTP_METHODS } from "../../../../core/constants";
2
+ import { deleteMessageRequest, getFullContentRequest, getMessagesRequest, initiateSessionRequest, resendMessageRequest, sendAttachmentRequest, sendMessageRequest, searchMessagesRequest } from "../../../../domain/dto";
3
+ import constructChannelEndPoint from "../channels/constructChannelEndPoint";
4
+ import constructMessageEndPoint from "./constructMessageEndPoint";
5
+ import createAPIRegistry from "../createAPIRegistry";
6
+ import createBaseUrl from "../createBaseUrl";
7
+ const SINGLE_SESSION_URL = '/:sessionId';
8
+ const MESSAGES_URL = `${SINGLE_SESSION_URL}/messages`;
9
+ const SINGLE_MESSAGE_URL = `${MESSAGES_URL}/:messageId`;
10
+ const FULL_CONTENT_URL = `${SINGLE_MESSAGE_URL}/fullContent`;
11
+ const RESEND_MESSAGE_URL = `${SINGLE_MESSAGE_URL}/resend`;
12
+ const ATTACHMENTS_URL = `${SINGLE_SESSION_URL}/attachments`;
13
+ const INITIATE_SESSION_URL = '/:channelId/initiateSession';
14
+ const SEARCH_MESSAGES_URL = '/messages/search';
15
+
16
+ function getMessages() {
17
+ return createAPIRegistry(constructMessageEndPoint(MESSAGES_URL), HTTP_METHODS.GET, getMessagesRequest());
18
+ }
19
+
20
+ function getFullContent() {
21
+ return createAPIRegistry(constructMessageEndPoint(FULL_CONTENT_URL), HTTP_METHODS.GET, getFullContentRequest());
22
+ }
23
+
24
+ function sendMessage() {
25
+ return createAPIRegistry(constructMessageEndPoint(MESSAGES_URL), HTTP_METHODS.POST, sendMessageRequest());
26
+ }
27
+
28
+ function sendAttachment() {
29
+ return createAPIRegistry(constructMessageEndPoint(ATTACHMENTS_URL), HTTP_METHODS.POST, sendAttachmentRequest());
30
+ }
31
+
32
+ function resendMessage() {
33
+ return createAPIRegistry(constructMessageEndPoint(RESEND_MESSAGE_URL), HTTP_METHODS.POST, resendMessageRequest());
34
+ }
35
+
36
+ function deleteMessage() {
37
+ return createAPIRegistry(constructMessageEndPoint(SINGLE_MESSAGE_URL), HTTP_METHODS.DELETE, deleteMessageRequest());
38
+ }
39
+
40
+ function initiateSession() {
41
+ return createAPIRegistry(constructChannelEndPoint(INITIATE_SESSION_URL), HTTP_METHODS.POST, initiateSessionRequest());
42
+ }
43
+
44
+ function searchMessages() {
45
+ return createAPIRegistry(createBaseUrl(SEARCH_MESSAGES_URL), HTTP_METHODS.GET, searchMessagesRequest());
46
+ }
47
+
48
+ export default {
49
+ getMessages,
50
+ getFullContent,
51
+ sendMessage,
52
+ sendAttachment,
53
+ resendMessage,
54
+ deleteMessage,
55
+ initiateSession,
56
+ searchMessages
57
+ };
@@ -0,0 +1,10 @@
1
+ import createBaseUrl from "../createBaseUrl";
2
+ export default function constructSessionEndPoint(extra) {
3
+ const base = '/sessions';
4
+
5
+ if (extra) {
6
+ return createBaseUrl(base + extra);
7
+ }
8
+
9
+ return createBaseUrl(base);
10
+ }
@@ -0,0 +1,2 @@
1
+ import sessionAPIRegistry from "./sessionAPIRegistry";
2
+ export { sessionAPIRegistry };