Newer
Older
smart-home-server / webclient / src / js / sh / modules / ScriptsApi.js
/* =========================
   Scripts module
========================= */

export class ScriptsApi {
	constructor(core) {
		this.core = core;
	}

	// GET /api/v1/scripts/actions/list
	actions_list(cb) {
		return this.core.api_get("/api/v1/scripts/actions/list", cb);
	}

	// GET /api/v1/scripts/scopes/list
	scopes_list(cb) {
		return this.core.api_get("/api/v1/scripts/scopes/list", cb);
	}

	// GET /api/v1/scripts/regular/list
	regular_list(cb) {
		return this.core.api_get("/api/v1/scripts/regular/list", cb);
	}

	// GET /api/v1/scripts/scopes/name/{{filename}}
	scope_get_by_filename(filename, cb) {
		const safe = encodeURIComponent(String(filename || ""));
		return this.core.api_get(`/api/v1/scripts/scopes/name/${safe}`, cb, {
			// тут сервер может вернуть PHP-код текстом; request умеет это пережить
		});
	}

	// POST /api/v1/scripts/scopes/new
	scope_create(payload, cb) {
		// payload: { alias, filename, path }
		return this.core.api_post("/api/v1/scripts/scopes/new", payload, cb);
	}

	// POST /api/v1/scripts/scopes/update
	scope_update(payload, cb) {
		// payload: { name, filename, path }
		return this.core.api_post("/api/v1/scripts/scopes/update", payload, cb);
	}

	// GET /api/v1/scripts/actions/alias/{{alias}}/enable
	action_enable(alias, cb) {
		const safe = encodeURIComponent(String(alias || ""));
		return this.core.api_get(`/api/v1/scripts/actions/alias/${safe}/enable`, cb);
	}

	// GET /api/v1/scripts/actions/alias/{{alias}}/disable
	action_disable(alias, cb) {
		const safe = encodeURIComponent(String(alias || ""));
		return this.core.api_get(`/api/v1/scripts/actions/alias/${safe}/disable`, cb);
	}

	// GET /api/v1/scripts/actions/regular/{{alias}}/enable
	regular_enable(alias, cb) {
		const safe = encodeURIComponent(String(alias || ""));
		return this.core.api_get(`/api/v1/scripts/actions/regular/${safe}/enable`, cb);
	}

	// GET /api/v1/scripts/actions/regular/{{alias}}/disable
	regular_disable(alias, cb) {
		const safe = encodeURIComponent(String(alias || ""));
		return this.core.api_get(`/api/v1/scripts/actions/regular/${safe}/disable`, cb);
	}

	// GET /api/v1/scripts/actions/scope/{{name}}/enable
	scope_enable(name, cb) {
		const safe = encodeURIComponent(String(name || ""));
		return this.core.api_get(`/api/v1/scripts/actions/scope/${safe}/enable`, cb);
	}

	// GET /api/v1/scripts/actions/scope/{{name}}/disable
	scope_disable(name, cb) {
		const safe = encodeURIComponent(String(name || ""));
		return this.core.api_get(`/api/v1/scripts/actions/scope/${safe}/disable`, cb);
	}

	// GET /api/v1/scripts/scopes/name/{{name}}/remove
	scope_remove(name, cb) {
		const safe = encodeURIComponent(String(name || ""));
		return this.core.api_get(`/api/v1/scripts/scopes/name/${safe}/remove`, cb);
	}

	// POST /api/v1/scripts/actions/run
	run(payload, cb) {
		// payload: { alias, params: {...} }
		return this.core.api_post("/api/v1/scripts/actions/run", payload, cb);
	}
}