lavva.exalushome
Version:
Library implementing communication and abstraction layers for ExalusHome system
77 lines • 2.96 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { Api } from "../Api";
import { DataFrame, Method, Status } from "../DataFrame";
import { ExalusConnectionService } from "./ExalusConnectionService";
export class HomeKitService {
constructor() {
this._connection = Api.Get(ExalusConnectionService.ServiceName);
}
GetServiceName() {
return HomeKitService.ServiceName;
}
isHomeKitPairingStatusResponse(value) {
return (typeof value === "object" &&
value !== null &&
"Paired" in value &&
typeof value.Paired === "boolean");
}
GetPairingStatusAsync() {
return __awaiter(this, void 0, void 0, function* () {
const req = new GetPairingStatusFrame();
const result = yield this._connection.SendAndWaitForResponseAsync(req, 5000, false);
if (result.Status !== Status.OK) {
return result.Status;
}
const response = new HomeKitPairingStatusResponse();
if (this.isHomeKitPairingStatusResponse(result.Data)) {
response.Paired = result.Data.Paired;
}
return response;
});
}
IsPairedAsync() {
return __awaiter(this, void 0, void 0, function* () {
const res = yield this.GetPairingStatusAsync();
if (this.isHomeKitPairingStatusResponse(res)) {
return res.Paired;
}
return res;
});
}
ResetPairingAsync() {
return __awaiter(this, void 0, void 0, function* () {
const req = new ResetPairingFrame();
const result = yield this._connection.SendAndWaitForResponseAsync(req, 5000, false);
return result.Status;
});
}
}
HomeKitService.ServiceName = "HomeKitService";
export class HomeKitPairingStatusResponse {
constructor() {
this.Paired = false;
}
}
class GetPairingStatusFrame extends DataFrame {
constructor() {
super();
this.Resource = "/homekit/pairing/status";
this.Method = Method.Get;
}
}
class ResetPairingFrame extends DataFrame {
constructor() {
super();
this.Resource = "/homekit/pairing/reset";
this.Method = Method.Post;
}
}
//# sourceMappingURL=HomeKitService.js.map