mirror of
https://github.com/wkulhanek/bonob.git
synced 2025-12-21 17:33:29 +01:00
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import axios from "axios";
|
|
import _ from "underscore";
|
|
import logger from "./logger";
|
|
import sonos, { bonobService } from "./sonos";
|
|
import { URLBuilder } from "./url_builder";
|
|
|
|
export default (
|
|
bonobUrl: URLBuilder,
|
|
seedHost?: string
|
|
) =>
|
|
async () => {
|
|
const about = bonobUrl.append({ pathname: "/about" });
|
|
logger.info(`Fetching bonob service about from ${about}`);
|
|
return axios
|
|
.get(about.href())
|
|
.then((res) => {
|
|
if (res.status == 200) return res.data;
|
|
else throw `Unexpected response status ${res.status} from ${about}`;
|
|
})
|
|
.then((res) => {
|
|
const name = _.get(res, ["service", "name"]);
|
|
const sid = _.get(res, ["service", "sid"]);
|
|
if (!name || !sid) {
|
|
throw `Unexpected response from ${about.href()}, expected service.name and service.sid`;
|
|
}
|
|
return {
|
|
name,
|
|
sid: Number.parseInt(sid),
|
|
};
|
|
})
|
|
.then(({ name, sid }: { name: string; sid: number }) =>
|
|
bonobService(name, sid, bonobUrl)
|
|
)
|
|
.then((service) => sonos({ enabled: true, seedHost }).register(service));
|
|
};
|