feature/LINXD-2559: Setup Auth and Hub connection
This commit is contained in:
84
src/linx-sdk-module/index.ts
Normal file
84
src/linx-sdk-module/index.ts
Normal file
@ -0,0 +1,84 @@
|
||||
import { LogLevel, Method, Route, UserData, UserResponse } from "./models";
|
||||
import Utils from "./utils";
|
||||
import io from "socket.io-client";
|
||||
|
||||
export default class LinxSdkModule {
|
||||
utils: Utils;
|
||||
user: UserData;
|
||||
socket: any;
|
||||
|
||||
constructor(apiKey: string, host: string) {
|
||||
this.utils = new Utils(host);
|
||||
}
|
||||
|
||||
async init(user, password): Promise<boolean> {
|
||||
try {
|
||||
const login: UserResponse = await this.utils.request(Method.POST, Route.LOGIN, {
|
||||
login: user,
|
||||
password: password,
|
||||
});
|
||||
if (!login.success) {
|
||||
Utils.log("Failed to initialize SDK", LogLevel.ERROR);
|
||||
return false;
|
||||
} else {
|
||||
this.user = login.data;
|
||||
Utils.log("The SDK initialized successfully");
|
||||
this.getGroups();
|
||||
return true;
|
||||
}
|
||||
} catch (err) {
|
||||
Utils.log(JSON.stringify(err.message), LogLevel.ERROR);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
establishWsConnection() {
|
||||
const hubAddress = this.user.account.configuration.hub_address;
|
||||
|
||||
this.socket = io(hubAddress, { rejectUnauthorized: false, secure: true });
|
||||
|
||||
this.socket.on("connect", () => {
|
||||
this.sendArs(true);
|
||||
Utils.log("The connection with the WS server was successfully established");
|
||||
});
|
||||
|
||||
["connect_timeout", "connect_error", "disconnect"].forEach((handler) => {
|
||||
this.socket.on(handler, (message: string) => {
|
||||
Utils.log(message, LogLevel.ERROR);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
sendArs(ars: boolean) {
|
||||
this.socket.emit(
|
||||
"ars",
|
||||
JSON.stringify({
|
||||
ars,
|
||||
userAgent: "Dispatcher",
|
||||
asset_id: this.user.asset.id,
|
||||
account_id: this.user.account.id,
|
||||
asset_sip_id: this.user.asset.sip_id,
|
||||
fake: false,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
sendGroupMonitoring() {
|
||||
const monitoringObject = {
|
||||
asset_alias: this.user.asset.name,
|
||||
asset_id: this.user.asset.id,
|
||||
asset_sip_id: this.user.asset.sip_id,
|
||||
group_id: 1,
|
||||
group_sip_id: 100190001,
|
||||
request_ptt_groups_status: false,
|
||||
scan_group_ids: [],
|
||||
};
|
||||
this.socket.emit("group-monitoring", JSON.stringify(monitoringObject));
|
||||
}
|
||||
|
||||
async getGroups() {
|
||||
const getGroupsRoute = Route.GROUPS.replace("$1", this.user.account.id.toString());
|
||||
const groups: UserResponse = await this.utils.request(Method.GET, getGroupsRoute);
|
||||
console.log("groups", groups);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user