soundtouch-api
Version:
SoundTouch API using TypeScript
41 lines (37 loc) • 967 B
text/typescript
import {compactMap, XMLElement} from './utils';
import {Member, memberFromElement} from './member';
export interface Zone {
readonly master: string,
readonly members: Member[]
}
export function zoneFromElement(element: XMLElement): Zone | undefined {
if(!element.hasAttribute('master')) {
return undefined;
}
const master = element.getAttribute('master');
if(!master) {
return undefined;
}
return {
master,
members: compactMap(element.getList('member'), memberFromElement)
}
}
export function zoneToElement(zone: Zone): XMLElement {
const data = {
$: {
master: zone.master
},
member: zone.members.map((member: Member) => {
return {
$: {
ipaddress: member.ipAddress
},
_: member.deviceId
}
})
};
return new XMLElement({
zone: data
});
}