UNPKG

ais-uploader

Version:

Simple uploader library for Angular 2+

114 lines 9.61 kB
/** * @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=