UNPKG

ns2-front-module-common

Version:
136 lines 4.7 kB
import { Injectable } from "@angular/core"; import { HttpService } from "./http.service"; import { CurrentUserService } from "./current-user.service"; var StorageService = (function () { function StorageService(userService, http) { this.userService = userService; this.http = http; } StorageService.prototype.setStorageEndPoint = function (url) { this.storageEndPoint = url; }; /** * Удаление файла со стораджа * * @param guid * @returns {Promise<T>} */ StorageService.prototype.deleteFile = function (guid) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.storageEndPoint + 'files/' + guid; _this.http.delete(url).subscribe(function (data) { resolve(); }, function (err) { reject(err); }); }); }; /** * Post file to storage * * @param file * @returns {Promise<T>} */ StorageService.prototype.postFile = function (file) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.storageEndPoint + 'files'; var formData = new FormData(); var xhr = new XMLHttpRequest(); formData.append('data', file, file.name); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { try { if (xhr.status === 200) { resolve(JSON.parse(xhr.response)); } else { var error = JSON.parse(xhr.response); reject(error && error.data ? error.data : error); } } catch (err) { reject(err); } } }; xhr.open('POST', url, true); xhr.send(formData); }); }; /** * Заменить вложение * * @param guid * @param file * @returns {Promise<T>} */ StorageService.prototype.changeAttachment = function (guid, file) { var _this = this; return new Promise(function (resolve, reject) { var url = _this.storageEndPoint + 'files/' + guid + '/change'; var formData = new FormData(); var xhr = new XMLHttpRequest(); formData.append('data', file, file.name); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { try { if (xhr.status === 200) { resolve(JSON.parse(xhr.response)); } else { var error = JSON.parse(xhr.response); reject(error && error.data ? error.data : error); } } catch (err) { reject(err); } } }; xhr.open('POST', url, true); xhr.setRequestHeader(CurrentUserService.USER_TOKEN_NAME, _this.userService.getToken()); xhr.send(formData); }); }; /** * Возвращает безопасный стиль * для масштабированной картинки * * @param {string} imageGuid * @param {number} width * @param {number} height * @param {string} mode * @param {number} quality * @returns {String} */ StorageService.prototype.getScaledImageUrl = function (imageGuid, width, height, mode, quality) { if (mode === void 0) { mode = 'outbound'; } if (quality === void 0) { quality = 95; } var url = this.storageEndPoint + 'images/scale/' + imageGuid + '/' + width + '/' + height; url += mode ? '/' + mode : ''; url += quality ? '/' + quality : ''; return url; }; /** * Возвращает путь до картинки на storage * * @param {string} imageGuid * @returns {string} */ StorageService.prototype.getImageUrl = function (imageGuid) { return this.storageEndPoint + 'files/' + imageGuid; }; return StorageService; }()); export { StorageService }; StorageService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ StorageService.ctorParameters = function () { return [ { type: CurrentUserService, }, { type: HttpService, }, ]; }; //# sourceMappingURL=storage.service.js.map