diff --git a/src/app/datasets/datasets.component.ts b/src/app/datasets/datasets.component.ts index b1979323837003c95be0172b5d2823568a24d6bc..c22c9679a2c8bf87a970a5e83ac89e4a3520638e 100644 --- a/src/app/datasets/datasets.component.ts +++ b/src/app/datasets/datasets.component.ts @@ -48,7 +48,7 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent Object = Object; - //urlrepo = "dataverse.ird.fr"; + // urlrepo = "dataverse.ird.fr"; // urlrepo = "data.inrae.fr"; constructor( @@ -198,7 +198,7 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent } } - const myHeaders: any = {}; + const myHeaders: Map<string, string> = new Map<string, string>(); const url = new URL(this.urlRepo + path); @@ -213,14 +213,14 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent url.searchParams.set(parameterName, value); break; case ParameterType.header: - myHeaders[parameterName] = value; + myHeaders.set(parameterName, value); break; - case ParameterType.cookie: - if (myHeaders.Cookie != null) { - myHeaders.Cookie = myHeaders.Cookie + `; ${parameterName}=${value}`; - } else { - myHeaders.Cookie = `${parameterName}=${value}`; - } + // case ParameterType.cookie: + // if (myHeaders.Cookie != null) { + // myHeaders.Cookie = myHeaders.Cookie + `; ${parameterName}=${value}`; + // } else { + // myHeaders.Cookie = `${parameterName}=${value}`; + // } } } @@ -228,7 +228,7 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent let result: any = null; try { - const response = await this.getRequestPromiseByHttpMethod(httpMethod as HttpMethod, requestHref, myHeaders, pathName); + const response = await this.dataSetService.getRequestPromiseByHttpMethod(httpMethod as HttpMethod, requestHref, myHeaders, pathName); switch (this.getTagByPathName(pathName, httpMethod)) { case OpenApiTag.search: @@ -247,12 +247,13 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent } getRequestPromiseByHttpMethod(httpMethod: HttpMethod, requestUrl: string, headers: any, pathName: string): Promise<any> { + const ApiUrl = `${environment.smartharvesterUrl}/harvester/api/publication/item?url=${requestUrl}`; let requestObs: Observable<any>; - console.log(this.openApi.info['x-result'] === "xml") + console.log(this.openApi.info['x-result'] === 'xml'); switch (httpMethod.toLowerCase()) { case HttpMethod.GET: - if (this.openApi.info['x-result'] === "xml" && this.getTagByPathName(pathName, httpMethod) == OpenApiTag.dataset) { + if (this.openApi.info['x-result'] === 'xml' && this.getTagByPathName(pathName, httpMethod) == OpenApiTag.dataset) { requestObs = this.httpClient.get(requestUrl, { headers, responseType: 'text' }); } else { requestObs = this.httpClient.get(requestUrl, { headers }); @@ -393,7 +394,7 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent } private getListFromDialog(searchRequestPathName: string, searchRequestHttpMethod: string, - datasetRequestPathName: string, datasetRequestHttpMethod: string) { + datasetRequestPathName: string, datasetRequestHttpMethod: string) { this.launchRequest(searchRequestPathName, searchRequestHttpMethod, false).then((response) => { this.dialog.open(DatasetsDialogComponent, { width: '100vw', @@ -420,8 +421,8 @@ export class DatasetsComponent implements OnInit, AfterViewChecked, AfterContent for (let i = 0; i < datasetId.length; i++) { this.dataSetService.saveUrls(this.getUrls(datasetRequestPathName, datasetRequestHttpMethod, datasetId[i]), datasetId[i] ); let requestPromise: Promise<void>; - if (this.openApi.info['x-result'] !== "xml") { - + if (this.openApi.info['x-result'] !== 'xml') { + if (i < 10) { requestPromise = this.launchRequest(datasetRequestPathName, datasetRequestHttpMethod, false, datasetId[i]) .then((dataset) => { diff --git a/src/app/datasets/model/requestModel.ts b/src/app/datasets/model/requestModel.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8bce7b18a91bfe3015160f252676c86f1f236ba --- /dev/null +++ b/src/app/datasets/model/requestModel.ts @@ -0,0 +1,4 @@ +export class RequestItemModel { + public header: any; + public url: URL; + } diff --git a/src/app/datasets/services/dataset-crud.service.ts b/src/app/datasets/services/dataset-crud.service.ts index b2b96b616fd4e0fd7ebcb753e4b2372ede4bb501..08181e6e50b303b0720fa826faaabbeded225ce8 100644 --- a/src/app/datasets/services/dataset-crud.service.ts +++ b/src/app/datasets/services/dataset-crud.service.ts @@ -5,6 +5,8 @@ import { TokenStorageService } from 'src/app/authentication/services/token-stora import { environment } from 'src/environments/environment'; import { ParseXmlService } from '../../services/parse-xml.service'; +import {HttpMethod} from '../../publishapi/class/http-enum'; +import {RequestItemModel} from '../model/requestModel'; const FDP_URL = environment.fdpUrl; const SMARTHARVESTER_API = environment.smartharvesterUrl; @@ -191,5 +193,32 @@ export class DatasetCrudService { return this.http.post(this.requestHistoricalBaseUrl + '/create', body, this.tokenHarvesterHeader); } + getRequestPromiseByHttpMethod(httpMethod: HttpMethod, requestUrl: string, headers: Map<string, string>, pathName: string): Promise<any> { + const ApiUrl = `${environment.smartharvesterUrl}/harvester/api/publication/item`; + let requestObs: Observable<any>; + const httpOptions = { + headers: new HttpHeaders({ + 'Content-Type': 'Application/json', + 'Authorization': 'Bearer ' + this.smartHarvesterToken + }) + }; + switch (httpMethod.toLowerCase()) { + case HttpMethod.GET: + const convMap = {}; + headers.forEach((val: string, key: string) => { + convMap[key] = val; + }); + const body = new RequestItemModel(); + body.url = new URL(requestUrl); + body.header = convMap; + requestObs = this.http.post(ApiUrl, body, httpOptions); + + + } + + return requestObs.toPromise(); + } + + }