node-hue-api
Version:
Philips Hue API Library for Node.js
56 lines (55 loc) • 1.69 kB
JavaScript
import * as bridgeValidator from './bridge-validation';
import { nupnp } from './nupnp';
import { mDNSSearch } from './mDNS';
export function mdnsSearch(timeout) {
const mDNSearch = new mDNSSearch();
return mDNSearch.search(timeout)
.then((data) => {
return loadDescriptions(data);
});
}
export function nupnpSearch() {
return nupnp().then(loadConfigurations);
}
export function description(ipAddress) {
if (!ipAddress) {
return Promise.resolve(undefined);
}
return loadDescriptions([{ internalipaddress: ipAddress }])
.then((results) => {
return results[0];
});
}
function loadDescriptions(results) {
const promises = results.map(result => {
return bridgeValidator.getBridgeDescription(result);
});
return Promise.all(promises);
}
function loadConfigurations(results) {
const promises = results.map(result => {
return bridgeValidator
.getBridgeConfig(result)
.then(config => {
return {
ipaddress: config.ipaddress,
config: config
};
})
.catch(err => {
const error = {
error: {
message: err.message,
description: `Failed to connect and load configuration from the bridge at ip address ${result.internalipaddress}`,
ipaddress: result.internalipaddress,
id: result.id,
}
};
return {
ipaddress: result.internalipaddress,
error: error
};
});
});
return Promise.all(promises);
}