ais-uploader
Version:
Simple uploader library for Angular 2+
152 lines • 11.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from '@angular/core';
import { HttpClient, HttpEventType } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { last, map } from 'rxjs/operators';
var AisUploaderService = /** @class */ (function () {
function AisUploaderService(http) {
this.http = http;
this._uploadingProgress$ = new BehaviorSubject(0);
}
Object.defineProperty(AisUploaderService.prototype, "uploadingProgress", {
get: /**
* @return {?}
*/
function () {
return this._uploadingProgress$.asObservable();
},
enumerable: true,
configurable: true
});
/**
* @param {?} file
* @param {?} config
* @return {?}
*/
AisUploaderService.prototype.upload = /**
* @param {?} file
* @param {?} config
* @return {?}
*/
function (file, config) {
var _this = this;
if (!file)
return null;
this._uploadingProgress$.next(0);
/** @type {?} */
var formData = new FormData();
formData.append('file', file);
return this.http.post("" + config.apiUrl, formData, {
headers: config.headers,
responseType: config.responseType,
reportProgress: true,
observe: 'events',
}).pipe(map(function (event) { return _this.getEventMessage(event); }), last());
};
/**
* @param {?} files
* @param {?} config
* @return {?}
*/
AisUploaderService.prototype.uploadMultiple = /**
* @param {?} files
* @param {?} config
* @return {?}
*/
function (files, config) {
var _this = this;
var e_1, _a;
if (!files || !files.length)
return null;
/** @type {?} */
var formData = new FormData();
try {
for (var files_1 = tslib_1.__values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) {
var file = files_1_1.value;
formData.append('file', file);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (files_1_1 && !files_1_1.done && (_a = files_1.return)) _a.call(files_1);
}
finally { if (e_1) throw e_1.error; }
}
return this.http.post("" + config.apiUrl, formData, {
headers: config.headers,
responseType: config.responseType,
reportProgress: true,
observe: 'events',
}).pipe(map(function (event) { return _this.getEventMessage(event); }), last());
};
/**
* @param {?} event
* @return {?}
*/
AisUploaderService.prototype.getEventMessage = /**
* @param {?} event
* @return {?}
*/
function (event) {
if (event.type) {
switch (event.type) {
case HttpEventType.UploadProgress:
/** @type {?} */
var percentDone = Math.round(100 * event.loaded / event.total);
this.showProgress(percentDone);
return;
case HttpEventType.Response:
this.resetProgress();
return event.body;
default:
return 0;
}
}
};
/**
* @param {?} persentage
* @return {?}
*/
AisUploaderService.prototype.showProgress = /**
* @param {?} persentage
* @return {?}
*/
function (persentage) {
this._uploadingProgress$.next(persentage);
};
/**
* @return {?}
*/
AisUploaderService.prototype.resetProgress = /**
* @return {?}
*/
function () {
};
AisUploaderService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AisUploaderService.ctorParameters = function () { return [
{ type: HttpClient }
]; };
return AisUploaderService;
}());
export { AisUploaderService };
if (false) {
/**
* @type {?}
* @private
*/
AisUploaderService.prototype._uploadingProgress$;
/**
* @type {?}
* @private
*/
AisUploaderService.prototype.http;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlzLXVwbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXMtdXBsb2FkZXIvIiwic291cmNlcyI6WyJsaWIvYWlzLXVwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDO0lBUUksNEJBQ1ksSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVBwQix3QkFBbUIsR0FBNEIsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFTdEYsQ0FBQztJQVBELHNCQUFJLGlEQUFpQjs7OztRQUFyQjtZQUNJLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25ELENBQUM7OztPQUFBOzs7Ozs7SUFPRCxtQ0FBTTs7Ozs7SUFBTixVQUFPLElBQVUsRUFBRSxNQUFzQjtRQUF6QyxpQkFjQztRQWJHLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7WUFDM0IsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFO1FBQy9CLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBRyxNQUFNLENBQUMsTUFBUSxFQUFFLFFBQVEsRUFBRTtZQUNoRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ2pDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxRQUFRO1NBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBM0IsQ0FBMkIsQ0FBQyxFQUN6QyxJQUFJLEVBQUUsQ0FDVCxDQUFDO0lBQ04sQ0FBQzs7Ozs7O0lBRUQsMkNBQWM7Ozs7O0lBQWQsVUFBZSxLQUFhLEVBQUUsTUFBc0I7UUFBcEQsaUJBZUM7O1FBZEcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7O1lBQ25DLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRTs7WUFDL0IsS0FBbUIsSUFBQSxVQUFBLGlCQUFBLEtBQUssQ0FBQSw0QkFBQSwrQ0FBRTtnQkFBckIsSUFBTSxJQUFJLGtCQUFBO2dCQUNYLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2pDOzs7Ozs7Ozs7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUcsTUFBTSxDQUFDLE1BQVEsRUFBRSxRQUFRLEVBQUU7WUFDaEQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxjQUFjLEVBQUUsSUFBSTtZQUNwQixPQUFPLEVBQUUsUUFBUTtTQUNwQixDQUFDLENBQUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQTNCLENBQTJCLENBQUMsRUFDekMsSUFBSSxFQUFFLENBQ1QsQ0FBQztJQUNOLENBQUM7Ozs7O0lBRUQsNENBQWU7Ozs7SUFBZixVQUFnQixLQUFVO1FBQ3RCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtZQUNaLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDaEIsS0FBSyxhQUFhLENBQUMsY0FBYzs7d0JBQ3ZCLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQy9CLE9BQU87Z0JBQ1gsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNyQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sQ0FBQyxDQUFDO2FBQ2hCO1NBQ0o7SUFDTCxDQUFDOzs7OztJQUVELHlDQUFZOzs7O0lBQVosVUFBYSxVQUFrQjtRQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Ozs7SUFFRCwwQ0FBYTs7O0lBQWI7SUFFQSxDQUFDOztnQkFwRUosVUFBVTs7OztnQkFMRixVQUFVOztJQTBFbkIseUJBQUM7Q0FBQSxBQXJFRCxJQXFFQztTQXBFWSxrQkFBa0I7Ozs7OztJQUMzQixpREFBc0Y7Ozs7O0lBT2xGLGtDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGxhc3QsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVXBsb2FkZXJDb25maWcgfSBmcm9tICcuL21vZGVscy91cGxvYWRlci1jb25maWcnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWlzVXBsb2FkZXJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX3VwbG9hZGluZ1Byb2dyZXNzJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcblxyXG4gICAgZ2V0IHVwbG9hZGluZ1Byb2dyZXNzKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwbG9hZGluZ1Byb2dyZXNzJC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICB1cGxvYWQoZmlsZTogRmlsZSwgY29uZmlnOiBVcGxvYWRlckNvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgaWYgKCFmaWxlKSByZXR1cm4gbnVsbDtcclxuICAgICAgICB0aGlzLl91cGxvYWRpbmdQcm9ncmVzcyQubmV4dCgwKTtcclxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtjb25maWcuYXBpVXJsfWAsIGZvcm1EYXRhLCB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGNvbmZpZy5oZWFkZXJzLFxyXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6IGNvbmZpZy5yZXNwb25zZVR5cGUsXHJcbiAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxyXG4gICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICB9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4gdGhpcy5nZXRFdmVudE1lc3NhZ2UoZXZlbnQpKSxcclxuICAgICAgICAgICAgbGFzdCgpLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBsb2FkTXVsdGlwbGUoZmlsZXM6IEZpbGVbXSwgY29uZmlnOiBVcGxvYWRlckNvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2NvbmZpZy5hcGlVcmx9YCwgZm9ybURhdGEsIHtcclxuICAgICAgICAgICAgaGVhZGVyczogY29uZmlnLmhlYWRlcnMsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxyXG4gICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB0aGlzLmdldEV2ZW50TWVzc2FnZShldmVudCkpLFxyXG4gICAgICAgICAgICBsYXN0KCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRFdmVudE1lc3NhZ2UoZXZlbnQ6IGFueSk6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dQcm9ncmVzcyhwZXJjZW50RG9uZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRQcm9ncmVzcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG93UHJvZ3Jlc3MocGVyc2VudGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdXBsb2FkaW5nUHJvZ3Jlc3MkLm5leHQocGVyc2VudGFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRQcm9ncmVzcygpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19