simple sonos smapi soap webservice registered

This commit is contained in:
simojenki
2021-02-08 20:45:17 +11:00
parent 2ed2fce280
commit 302efd2878
8 changed files with 2298 additions and 19 deletions

View File

@@ -1,6 +1,16 @@
import express, { Express } from "express";
import * as Eta from "eta";
import { listen } from "soap";
import { readFileSync } from "fs";
import path from "path";
import { Sonos, Service } from "./sonos";
import logger from "./logger";
const WSDL_FILE = path.resolve(
__dirname,
"Sonoswsdl-1.19.4-20190411.142401-3.wsdl"
);
function server(sonos: Sonos, bonobService: Service): Express {
const app = express();
@@ -12,27 +22,69 @@ function server(sonos: Sonos, bonobService: Service): Express {
app.set("views", "./web/views");
app.get("/", (_, res) => {
Promise.all([
sonos.devices(),
sonos.services()
]).then(([devices, services]) => {
const registeredBonobService = services.find(it => it.sid == bonobService.sid);
res.render("index", {
devices,
services,
bonobService,
registeredBonobService
});
})
Promise.all([sonos.devices(), sonos.services()]).then(
([devices, services]) => {
const registeredBonobService = services.find(
(it) => it.sid == bonobService.sid
);
res.render("index", {
devices,
services,
bonobService,
registeredBonobService,
});
}
);
});
app.post("/register", (_, res) => {
sonos.register(bonobService).then(success => {
if(success) res.send("Yay")
else res.send("boo hoo")
})
sonos.register(bonobService).then((success) => {
if (success) res.send("Yay");
else res.send("boo hoo");
});
});
const sonosService = {
Sonos: {
SonosSoap: {
getSessionId: ({
username
}: {
username: string;
password: string;
}) => {
return Promise.resolve({
username,
sessionId: '123'
});
},
},
},
};
const x = listen(
app,
"/ws",
sonosService,
readFileSync(WSDL_FILE, "utf8")
);
x.log = (type, data) => {
switch (type) {
case "info":
logger.info({ data });
break;
case "warn":
logger.warn({ data });
break;
case "error":
logger.error({ data });
break;
default:
logger.debug({ data });
}
};
return app;
}