Send payload daemon-daemon
- Add type in inteface with jamid to send data via sendAccountTextMessage
- Add route to server
Gitlab: #52
Change-Id: I4694f37ae22097bf7776f2e3698d3c080b2cff02
diff --git a/server/src/jamid/jami-signal-interfaces.ts b/server/src/jamid/jami-signal-interfaces.ts
index 5c62482..f868150 100644
--- a/server/src/jamid/jami-signal-interfaces.ts
+++ b/server/src/jamid/jami-signal-interfaces.ts
@@ -39,3 +39,9 @@
address: string;
username: string;
}
+
+export interface IncomingAccountMessage {
+ accountId: string;
+ from: string;
+ message: Record<string, string>;
+}
diff --git a/server/src/jamid/jami-swig.ts b/server/src/jamid/jami-swig.ts
index 8797b96..26ac694 100644
--- a/server/src/jamid/jami-swig.ts
+++ b/server/src/jamid/jami-swig.ts
@@ -67,6 +67,8 @@
getAccountList(): StringVect;
+ sendAccountTextMessage(accountId: string, contactId: string, message: StringMap): void;
+
lookupName(accountId: string, nameserver: string, username: string): boolean;
lookupAddress(accountId: string, nameserver: string, address: string): boolean;
registerName(accountId: string, password: string, username: string): boolean;
diff --git a/server/src/jamid/jamid.ts b/server/src/jamid/jamid.ts
index 1b7ba40..a865777 100644
--- a/server/src/jamid/jamid.ts
+++ b/server/src/jamid/jamid.ts
@@ -22,6 +22,7 @@
import { JamiSignal } from './jami-signal.js';
import {
+ IncomingAccountMessage,
NameRegistrationEnded,
RegisteredNameFound,
RegistrationStateChanged,
@@ -62,11 +63,16 @@
handlers.RegisteredNameFound = (accountId: string, state: number, address: string, username: string) =>
onRegisteredNameFound.next({ accountId, state, address, username });
+ const onIncomingAccountMessage = new Subject<IncomingAccountMessage>();
+ handlers.IncomingAccountMessage = (accountId: string, from: string, message: Record<string, string>) =>
+ onIncomingAccountMessage.next({ accountId, from, message });
+
this.events = {
onVolatileDetailsChanged: onVolatileDetailsChanged.asObservable(),
onRegistrationStateChanged: onRegistrationStateChanged.asObservable(),
onNameRegistrationEnded: onNameRegistrationEnded.asObservable(),
onRegisteredNameFound: onRegisteredNameFound.asObservable(),
+ onIncomingAccountMessage: onIncomingAccountMessage.asObservable(),
};
this.events.onVolatileDetailsChanged.subscribe(({ accountId, details }) => {
@@ -82,6 +88,9 @@
);
this.events.onNameRegistrationEnded.subscribe((ctx) => log.debug('[1] Received onNameRegistrationEnded with', ctx));
this.events.onRegisteredNameFound.subscribe((ctx) => log.debug('[1] Received onRegisteredNameFound with', ctx));
+ this.events.onIncomingAccountMessage.subscribe((ctx) =>
+ log.debug('[1] Received onIncomingAccountMessage with', ctx)
+ );
this.usernamesToAccountIds = new Map<string, string>();
@@ -139,6 +148,12 @@
return stringVectToArray(this.jamiSwig.getAccountList());
}
+ sendAccountTextMessage(accountId: string, contactId: string, type: string, message: string) {
+ const messageStringMap: StringMap = new this.jamiSwig.StringMap();
+ messageStringMap.set(type, message);
+ this.jamiSwig.sendAccountTextMessage(accountId, contactId, messageStringMap);
+ }
+
async lookupUsername(username: string) {
const hasRingNs = this.jamiSwig.lookupName('', '', username);
if (!hasRingNs) {
diff --git a/server/src/routers/account-router.ts b/server/src/routers/account-router.ts
index 0798fa7..7344e85 100644
--- a/server/src/routers/account-router.ts
+++ b/server/src/routers/account-router.ts
@@ -15,13 +15,21 @@
* License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
-import { Router } from 'express';
-import { AccountDetails } from 'jami-web-common';
+import { Request, Router } from 'express';
+import { ParamsDictionary } from 'express-serve-static-core';
+import { AccountDetails, HttpStatusCode } from 'jami-web-common';
import { Container } from 'typedi';
import { Jamid } from '../jamid/jamid.js';
import { authenticateToken } from '../middleware/auth.js';
+interface SendAccountTextMessageApi {
+ from?: string;
+ to?: string;
+ type?: string;
+ data?: string;
+}
+
const jamid = Container.get(Jamid);
export const accountRouter = Router();
@@ -50,3 +58,13 @@
jamid.setAccountDetails(res.locals.accountId, newAccountDetails);
res.end();
});
+
+accountRouter.post('/send-account-message', (req: Request<ParamsDictionary, any, SendAccountTextMessageApi>, res) => {
+ const { from, to, type, data } = req.body;
+ if (!from || !to || !type || !data) {
+ res.status(HttpStatusCode.BadRequest).send('Missing arguments in request');
+ return;
+ }
+ jamid.sendAccountTextMessage(from, to, type, data);
+ res.end();
+});