From ad9852f1941609f9364affc04ab6cc32f13b5364 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe <kristof.delanghe@atmire.com> Date: Tue, 11 Sep 2018 14:50:23 +0200 Subject: [PATCH] 54472: form-data intermediate commit --- src/app/core/data/comcol-data.service.ts | 14 +++++++---- src/app/core/data/data.service.ts | 24 ++++++++----------- .../core/data/dspace-object-data.service.ts | 2 +- src/app/core/data/item-data.service.ts | 4 ++-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/app/core/data/comcol-data.service.ts b/src/app/core/data/comcol-data.service.ts index c47d48dc07..c9dff8fbe1 100644 --- a/src/app/core/data/comcol-data.service.ts +++ b/src/app/core/data/comcol-data.service.ts @@ -66,19 +66,23 @@ export abstract class ComColDataService<TNormalized extends NormalizedObject, TD } } - public buildCreateParams(comcol): Observable<string> { + public buildCreateBody(comcol): Observable<any> { return comcol.owner.pipe( map((rd: RemoteData<Community | Collection>) => { - let urlParams = '?name=' + comcol.name; + const form: any = { + name: comcol.name + }; if (rd.payload.id) { - urlParams += '&parent=' + rd.payload.id; + form.parent = rd.payload.id; } if (comcol.metadata) { for (const i of Object.keys(comcol.metadata)) { - urlParams += '&' + comcol.metadata[i].key + '=' + comcol.metadata[i].value; + if (isNotEmpty(comcol.metadata[i].value)) { + form[comcol.metadata[i].key] = comcol.metadata[i].value; + } } } - return urlParams; + return form; }) ); } diff --git a/src/app/core/data/data.service.ts b/src/app/core/data/data.service.ts index 9d7422cbe1..3dc32e9e69 100644 --- a/src/app/core/data/data.service.ts +++ b/src/app/core/data/data.service.ts @@ -14,24 +14,21 @@ import { FindAllRequest, FindByIDRequest, GetRequest, - PostRequest, RestRequest } from './request.models'; import { RequestService } from './request.service'; import { NormalizedObject } from '../cache/models/normalized-object.model'; -import { distinctUntilChanged, map, share, switchMap, take, withLatestFrom } from 'rxjs/operators'; +import { distinctUntilChanged, map, take, withLatestFrom } from 'rxjs/operators'; import { configureRequest, - filterSuccessfulResponses, getRequestFromSelflink, getRequestFromUUID, + filterSuccessfulResponses, getResponseFromSelflink } from '../shared/operators'; import { ResponseCacheEntry } from '../cache/response-cache.reducer'; import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service'; import { HttpHeaders } from '@angular/common/http'; -import { DSOSuccessResponse, ErrorResponse, GenericSuccessResponse } from '../cache/response-cache.models'; +import { ErrorResponse, GenericSuccessResponse } from '../cache/response-cache.models'; import { AuthService } from '../auth/auth.service'; -import { Collection } from '../shared/collection.model'; -import { Community } from '../shared/community.model'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { NotificationOptions } from '../../shared/notifications/models/notification-options.model'; @@ -123,19 +120,18 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain> const requestId = this.requestService.generateRequestId(); const endpoint$ = this.halService.getEndpoint(this.linkPath).pipe( isNotEmptyOperator(), - distinctUntilChanged(), - withLatestFrom(this.buildCreateParams(dso)), - map(([endpointURL, params]) => endpointURL + params) + distinctUntilChanged() ); const request$ = endpoint$.pipe( take(1), - map((endpoint) => { + withLatestFrom(this.buildCreateBody(dso)), + map(([endpoint, formdata]) => { const options: HttpOptions = Object.create({}); - const headers = new HttpHeaders(); - headers.append('Authentication', this.authService.buildAuthHeader()); + let headers = new HttpHeaders(); + headers = headers.append('Content-Type','multipart/form-data'); options.headers = headers; - return new CreateRequest(requestId, endpoint, options); + return new CreateRequest(requestId, endpoint, formdata, options); }), configureRequest(this.requestService) ); @@ -162,6 +158,6 @@ export abstract class DataService<TNormalized extends NormalizedObject, TDomain> return this.rdbService.toRemoteDataObservable(requestEntry$, responseCache$, payload$); } - public abstract buildCreateParams(dso: TDomain): Observable<string>; + public abstract buildCreateBody(dso: TDomain): Observable<any>; } diff --git a/src/app/core/data/dspace-object-data.service.ts b/src/app/core/data/dspace-object-data.service.ts index eb657e1737..8bae4e56ed 100644 --- a/src/app/core/data/dspace-object-data.service.ts +++ b/src/app/core/data/dspace-object-data.service.ts @@ -36,7 +36,7 @@ class DataServiceImpl extends DataService<NormalizedDSpaceObject, DSpaceObject> return endpoint.replace(/\{\?uuid\}/,`?uuid=${resourceID}`); } - buildCreateParams(dso: DSpaceObject): Observable<string> { + buildCreateBody(dso: DSpaceObject): Observable<FormData> { return undefined; } } diff --git a/src/app/core/data/item-data.service.ts b/src/app/core/data/item-data.service.ts index 448d3fc84b..343d4efede 100644 --- a/src/app/core/data/item-data.service.ts +++ b/src/app/core/data/item-data.service.ts @@ -45,8 +45,8 @@ export class ItemDataService extends DataService<NormalizedItem, Item> { } } - buildCreateParams(dso: Item): Observable<string> { - // TODO: Build parameters for creating an Item on the REST service + buildCreateBody(dso: Item): Observable<FormData> { + // TODO: Build http body for creating an Item on the REST service return undefined; } -- GitLab