@solid/community-server
Version:
Community Solid Server: an open and modular implementation of the Solid specifications
30 lines • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NotificationUnsubscriber = void 0;
const global_logger_factory_1 = require("global-logger-factory");
const ResetResponseDescription_1 = require("../../http/output/response/ResetResponseDescription");
const NotFoundHttpError_1 = require("../../util/errors/NotFoundHttpError");
const OperationHttpHandler_1 = require("../OperationHttpHandler");
/**
* Allows clients to unsubscribe from notification channels.
* Should be wrapped in a route handler that only allows `DELETE` operations.
*/
class NotificationUnsubscriber extends OperationHttpHandler_1.OperationHttpHandler {
logger = (0, global_logger_factory_1.getLoggerFor)(this);
storage;
constructor(storage) {
super();
this.storage = storage;
}
async handle({ operation }) {
const id = operation.target.path;
const existed = await this.storage.delete(id);
if (!existed) {
throw new NotFoundHttpError_1.NotFoundHttpError();
}
this.logger.debug(`Deleted notification channel ${id}`);
return new ResetResponseDescription_1.ResetResponseDescription();
}
}
exports.NotificationUnsubscriber = NotificationUnsubscriber;
//# sourceMappingURL=NotificationUnsubscriber.js.map