ais-uploader
Version:
Simple uploader library for Angular 2+
114 lines • 9.61 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { HttpClient, HttpEventType } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { last, map } from 'rxjs/operators';
export class AisUploaderService {
/**
* @param {?} http
*/
constructor(http) {
this.http = http;
this._uploadingProgress$ = new BehaviorSubject(0);
}
/**
* @return {?}
*/
get uploadingProgress() {
return this._uploadingProgress$.asObservable();
}
/**
* @param {?} file
* @param {?} config
* @return {?}
*/
upload(file, config) {
if (!file)
return null;
this._uploadingProgress$.next(0);
/** @type {?} */
const 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(event => this.getEventMessage(event)), last());
}
/**
* @param {?} files
* @param {?} config
* @return {?}
*/
uploadMultiple(files, config) {
if (!files || !files.length)
return null;
/** @type {?} */
const formData = new FormData();
for (const file of files) {
formData.append('file', file);
}
return this.http.post(`${config.apiUrl}`, formData, {
headers: config.headers,
responseType: config.responseType,
reportProgress: true,
observe: 'events',
}).pipe(map(event => this.getEventMessage(event)), last());
}
/**
* @param {?} event
* @return {?}
*/
getEventMessage(event) {
if (event.type) {
switch (event.type) {
case HttpEventType.UploadProgress:
/** @type {?} */
const 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 {?}
*/
showProgress(persentage) {
this._uploadingProgress$.next(persentage);
}
/**
* @return {?}
*/
resetProgress() {
}
}
AisUploaderService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
AisUploaderService.ctorParameters = () => [
{ type: HttpClient }
];
if (false) {
/**
* @type {?}
* @private
*/
AisUploaderService.prototype._uploadingProgress$;
/**
* @type {?}
* @private
*/
AisUploaderService.prototype.http;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlzLXVwbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXMtdXBsb2FkZXIvIiwic291cmNlcyI6WyJsaWIvYWlzLXVwbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsTUFBTSxPQUFPLGtCQUFrQjs7OztJQU8zQixZQUNZLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFQcEIsd0JBQW1CLEdBQTRCLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBU3RGLENBQUM7Ozs7SUFQRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzs7Ozs7SUFPRCxNQUFNLENBQUMsSUFBVSxFQUFFLE1BQXNCO1FBQ3JDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Y0FDM0IsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFO1FBQy9CLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFO1lBQ2hELE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7WUFDakMsY0FBYyxFQUFFLElBQUk7WUFDcEIsT0FBTyxFQUFFLFFBQVE7U0FDcEIsQ0FBQyxDQUFDLElBQUksQ0FDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3pDLElBQUksRUFBRSxDQUNULENBQUM7SUFDTixDQUFDOzs7Ozs7SUFFRCxjQUFjLENBQUMsS0FBYSxFQUFFLE1BQXNCO1FBQ2hELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDOztjQUNuQyxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUU7UUFDL0IsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDdEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRTtZQUNoRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1lBQ2pDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxRQUFRO1NBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN6QyxJQUFJLEVBQUUsQ0FDVCxDQUFDO0lBQ04sQ0FBQzs7Ozs7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUN0QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDWixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hCLEtBQUssYUFBYSxDQUFDLGNBQWM7OzBCQUN2QixXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO29CQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMvQixPQUFPO2dCQUNYLEtBQUssYUFBYSxDQUFDLFFBQVE7b0JBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUN0QjtvQkFDSSxPQUFPLENBQUMsQ0FBQzthQUNoQjtTQUNKO0lBQ0wsQ0FBQzs7Ozs7SUFFRCxZQUFZLENBQUMsVUFBa0I7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7O0lBRUQsYUFBYTtJQUViLENBQUM7OztZQXBFSixVQUFVOzs7O1lBTEYsVUFBVTs7Ozs7OztJQU9mLGlEQUFzRjs7Ozs7SUFPbEYsa0NBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbGFzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBVcGxvYWRlckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3VwbG9hZGVyLWNvbmZpZyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBaXNVcGxvYWRlclNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBfdXBsb2FkaW5nUHJvZ3Jlc3MkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuXHJcbiAgICBnZXQgdXBsb2FkaW5nUHJvZ3Jlc3MoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdXBsb2FkaW5nUHJvZ3Jlc3MkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIHVwbG9hZChmaWxlOiBGaWxlLCBjb25maWc6IFVwbG9hZGVyQ29uZmlnKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBpZiAoIWZpbGUpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHRoaXMuX3VwbG9hZGluZ1Byb2dyZXNzJC5uZXh0KDApO1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2NvbmZpZy5hcGlVcmx9YCwgZm9ybURhdGEsIHtcclxuICAgICAgICAgICAgaGVhZGVyczogY29uZmlnLmhlYWRlcnMsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgICAgIG9ic2VydmU6ICdldmVudHMnLFxyXG4gICAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB0aGlzLmdldEV2ZW50TWVzc2FnZShldmVudCkpLFxyXG4gICAgICAgICAgICBsYXN0KCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGxvYWRNdWx0aXBsZShmaWxlczogRmlsZVtdLCBjb25maWc6IFVwbG9hZGVyQ29uZmlnKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBpZiAoIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGgpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7Y29uZmlnLmFwaVVybH1gLCBmb3JtRGF0YSwge1xyXG4gICAgICAgICAgICBoZWFkZXJzOiBjb25maWcuaGVhZGVycyxcclxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiBjb25maWcucmVzcG9uc2VUeXBlLFxyXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHRoaXMuZ2V0RXZlbnRNZXNzYWdlKGV2ZW50KSksXHJcbiAgICAgICAgICAgIGxhc3QoKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEV2ZW50TWVzc2FnZShldmVudDogYW55KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJjZW50RG9uZSA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzKHBlcmNlbnREb25lKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldFByb2dyZXNzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3dQcm9ncmVzcyhwZXJzZW50YWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91cGxvYWRpbmdQcm9ncmVzcyQubmV4dChwZXJzZW50YWdlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFByb2dyZXNzKCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxufVxyXG4iXX0=