mirror of
https://github.com/wkulhanek/bonob.git
synced 2025-12-22 01:43:29 +01:00
Support for register using a seed host (#51)
This commit is contained in:
@@ -1,19 +1,38 @@
|
||||
import axios from "axios";
|
||||
import _ from "underscore";
|
||||
import logger from "./logger";
|
||||
import sonos, { bonobService } from "./sonos";
|
||||
import sonos, { bonobService, Discovery } from "./sonos";
|
||||
import { URLBuilder } from "./url_builder";
|
||||
|
||||
export default (bonobUrl: URLBuilder) => 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((about) =>
|
||||
bonobService(about.service.name, about.service.sid, bonobUrl)
|
||||
)
|
||||
.then((bonobService) => sonos(true).register(bonobService));
|
||||
};
|
||||
export default (
|
||||
bonobUrl: URLBuilder,
|
||||
sonosDiscovery: Discovery = {
|
||||
auto: true,
|
||||
seedHost: undefined,
|
||||
}
|
||||
) =>
|
||||
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(sonosDiscovery).register(service));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user