From 019072dfd24f37f0a4692a5a99e32f5ab6457108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 13 Oct 2021 02:42:21 +0300 Subject: [PATCH] Added upload method to generic service --- src/lib/services/generic.service.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/lib/services/generic.service.ts b/src/lib/services/generic.service.ts index d29986b..0540e77 100644 --- a/src/lib/services/generic.service.ts +++ b/src/lib/services/generic.service.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpParams } from '@angular/common/http'; +import { HttpClient, HttpEvent, HttpParams } from '@angular/common/http'; import { Injector } from '@angular/core'; import { Observable } from 'rxjs'; import { CustomHttpUrlEncodingCodec, List, RequiredParam, Validate } from '../utils'; @@ -40,7 +40,11 @@ export abstract class GenericService { } @Validate() - delete(@RequiredParam() body: unknown, modelPath = this._defaultModelPath, queryParams?: List): Observable { + delete( + @RequiredParam() body: unknown, + modelPath = this._defaultModelPath, + queryParams?: List, + ): Observable { let path = `/${encodeURI(modelPath)}`; if (typeof body === 'string') { @@ -55,6 +59,24 @@ export abstract class GenericService { }); } + @Validate() + upload(data?: Blob, modelPath = this._defaultModelPath): Observable> { + const formParams = new FormData(); + + if (data !== undefined) { + formParams.append('file', data); + } + + // TODO: Fix getHeaders()? + const headers = HeadersConfiguration.getHeaders().delete('content-type'); + + return this._http.post(`/${encodeURI(modelPath)}`, formParams, { + headers, + observe: 'events', + reportProgress: true, + }); + } + @Validate() protected _post( @RequiredParam() body: unknown,