From 6973c66d797563fd722db900ccf43aede7aa3e8b Mon Sep 17 00:00:00 2001 From: Kristof De Langhe <kristof.delanghe@atmire.com> Date: Wed, 12 Sep 2018 10:49:31 +0200 Subject: [PATCH] 54472: Intermediate commit --- src/app/core/data/comcol-data.service.ts | 16 ---------------- src/app/core/data/data.service.ts | 7 +++---- .../core/data/dspace-object-data.service.ts | 4 ---- src/app/core/data/item-data.service.ts | 5 ----- src/app/core/data/request.effects.ts | 2 +- .../dspace-rest-v2/dspace-rest-v2.service.ts | 18 ++++++++++++++++++ 6 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/app/core/data/comcol-data.service.ts b/src/app/core/data/comcol-data.service.ts index 8519bb2b25..0859d075ca 100644 --- a/src/app/core/data/comcol-data.service.ts +++ b/src/app/core/data/comcol-data.service.ts @@ -66,20 +66,4 @@ export abstract class ComColDataService<TNormalized extends NormalizedObject, TD } } - public buildFormData(comcol, parentUUID): FormData { - const form: FormData = new FormData(); - form.append('name', comcol.name); - if (isNotEmpty(parentUUID)) { - form.append('parent', parentUUID); - } - if (comcol.metadata) { - for (const i of Object.keys(comcol.metadata)) { - if (isNotEmpty(comcol.metadata[i].value)) { - form.append(comcol.metadata[i].key, comcol.metadata[i].value); - } - } - } - return form; - } - } diff --git a/src/app/core/data/data.service.ts b/src/app/core/data/data.service.ts index b2946b2164..13550b2358 100644 --- a/src/app/core/data/data.service.ts +++ b/src/app/core/data/data.service.ts @@ -121,12 +121,13 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain> const requestId = this.requestService.generateRequestId(); const endpoint$ = this.halService.getEndpoint(this.linkPath).pipe( isNotEmptyOperator(), - distinctUntilChanged() + distinctUntilChanged(), + map((endpoint: string) => parentUUID ? `${endpoint}?parent=${parentUUID}` : endpoint) ); const request$ = endpoint$.pipe( take(1), - map((endpoint: string) => new CreateRequest(requestId, endpoint, this.buildFormData(dso, parentUUID))), + map((endpoint: string) => new CreateRequest(requestId, endpoint, dso)), configureRequest(this.requestService) ); @@ -153,6 +154,4 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain> return this.rdbService.toRemoteDataObservable(requestEntry$, responseCache$, payload$); } - public abstract buildFormData(dso: TDomain, parentUUID: string): FormData; - } diff --git a/src/app/core/data/dspace-object-data.service.ts b/src/app/core/data/dspace-object-data.service.ts index 14540d0782..d14d7f8a0b 100644 --- a/src/app/core/data/dspace-object-data.service.ts +++ b/src/app/core/data/dspace-object-data.service.ts @@ -37,10 +37,6 @@ class DataServiceImpl extends DataService<NormalizedDSpaceObject, DSpaceObject> getFindByIDHref(endpoint, resourceID): string { return endpoint.replace(/\{\?uuid\}/,`?uuid=${resourceID}`); } - - buildFormData(dso: DSpaceObject, parentUUID: string): FormData { - return undefined; - } } @Injectable() diff --git a/src/app/core/data/item-data.service.ts b/src/app/core/data/item-data.service.ts index c3c32691ce..6b62fe6688 100644 --- a/src/app/core/data/item-data.service.ts +++ b/src/app/core/data/item-data.service.ts @@ -47,9 +47,4 @@ export class ItemDataService extends DataService<NormalizedItem, Item> { } } - buildFormData(dso: Item, parentUUID: string): FormData { - // TODO: build FormData for creating an Item - return undefined; - } - } diff --git a/src/app/core/data/request.effects.ts b/src/app/core/data/request.effects.ts index 9d27717dc6..5fadd316f4 100644 --- a/src/app/core/data/request.effects.ts +++ b/src/app/core/data/request.effects.ts @@ -38,7 +38,7 @@ export class RequestEffects { }), map((entry: RequestEntry) => entry.request), flatMap((request: RestRequest) => { - let body = request.body; + let body; if (isNotEmpty(request.body)) { const serializer = new DSpaceRESTv2Serializer(NormalizedObjectFactory.getConstructor(request.body.type)); body = serializer.serialize(request.body); diff --git a/src/app/core/dspace-rest-v2/dspace-rest-v2.service.ts b/src/app/core/dspace-rest-v2/dspace-rest-v2.service.ts index 78c93b8c08..c8cced9e8a 100644 --- a/src/app/core/dspace-rest-v2/dspace-rest-v2.service.ts +++ b/src/app/core/dspace-rest-v2/dspace-rest-v2.service.ts @@ -6,6 +6,8 @@ import { RestRequestMethod } from '../data/request.models'; import { DSpaceRESTV2Response } from './dspace-rest-v2-response.model'; import { HttpObserve } from '@angular/common/http/src/client'; +import { isNotEmpty } from '../../shared/empty.util'; +import { DSpaceObject } from '../shared/dspace-object.model'; export interface HttpOptions { body?: any; @@ -59,6 +61,9 @@ export class DSpaceRESTv2Service { request(method: RestRequestMethod, url: string, body?: any, options?: HttpOptions): Observable<DSpaceRESTV2Response> { const requestOptions: HttpOptions = {}; requestOptions.body = body; + if (method === RestRequestMethod.Post && isNotEmpty(body)) { + requestOptions.body = this.buildFormData(body); + } requestOptions.observe = 'response'; if (options && options.headers) { requestOptions.headers = Object.assign(new HttpHeaders(), options.headers); @@ -74,4 +79,17 @@ export class DSpaceRESTv2Service { }); } + buildFormData(dso: DSpaceObject): FormData { + const form: FormData = new FormData(); + form.append('name', dso.name); + if (dso.metadata) { + for (const i of Object.keys(dso.metadata)) { + if (isNotEmpty(dso.metadata[i].value)) { + form.append(dso.metadata[i].key, dso.metadata[i].value); + } + } + } + return form; + } + } -- GitLab