Skip to content

Commit

Permalink
feat: create on-request data offers (#763)
Browse files Browse the repository at this point in the history
  • Loading branch information
richardtreier committed Jul 11, 2024
1 parent 4d4dac0 commit 1169df2
Show file tree
Hide file tree
Showing 35 changed files with 629 additions and 311 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ the detailed section referring to by linking pull requests or issues.
#### Minor

- Added Initiate Negotiation Confirm ToS Dialog
- Support for creating "On Request" Data Offers

#### Patch

Expand Down
88 changes: 30 additions & 58 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"@angular/router": "^14.3.0",
"@ng-apimock/core": "^3.11.0",
"@ngxs/store": "^3.8.1",
"@sovity.de/edc-client": "0.20240418.174436-main-8bfcfeb1",
"@sovity.de/edc-client": "0.20240710.120437-main-3e30bf8e",
"clean-deep": "^3.4.0",
"date-fns": "^2.30.0",
"date-fns-tz": "^2.0.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import {Injectable} from '@angular/core';
import {DataOffer} from '../../../core/services/models/data-offer';
import {UiAssetMapped} from '../../../core/services/models/ui-asset-mapped';
import {ContractAgreementCardMapped} from '../../../routes/connector-ui/contract-agreement-page/contract-agreement-cards/contract-agreement-card-mapped';
import {
ContractAgreementCardMapped
} from '../../../routes/connector-ui/contract-agreement-page/contract-agreement-cards/contract-agreement-card-mapped';
import {AssetDetailDialogData, OnAssetEditClickFn,} from './asset-detail-dialog-data';
AssetDetailDialogData,
OnAssetEditClickFn,
} from './asset-detail-dialog-data';
import {AssetPropertyGridGroupBuilder} from './asset-property-grid-group-builder';

@Injectable()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,23 @@ import {DataAddressTypeSelectMode} from './data-address-type-select-mode';
export const dataAddressTypeSelectItems = (
type: DataAddressTypeSelectMode,
): DataAddressTypeSelectItem[] => {
const items: DataAddressTypeSelectItem[] = [
const items: DataAddressTypeSelectItem[] = [];

if (type === 'Datasource-Edit') {
items.push({
id: 'Unchanged',
label: 'Leave unchanged',
});
}

if (type.startsWith('Datasource')) {
items.push({
id: 'On-Request',
label: '"On Request" Data Offer',
});
}

items.push(
{
id: 'Http',
label: 'REST-API Endpoint',
Expand All @@ -13,7 +29,7 @@ export const dataAddressTypeSelectItems = (
id: 'Custom-Data-Address-Json',
label: `Custom ${type} Config (JSON)`,
},
];
);

if (type === 'Datasink') {
items.push({
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
export type DataAddressTypeSelectMode = 'Datasource' | 'Datasink';
export type DataAddressTypeSelectMode =
| 'Datasource-Create'
| 'Datasource-Edit'
| 'Datasink';
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export class DataAddressTypeSelectComponent implements OnChanges {
cls = true;

@Input()
mode: DataAddressTypeSelectMode = 'Datasource';
mode: DataAddressTypeSelectMode = 'Datasource-Create';

items = dataAddressTypeSelectItems(this.mode);
ngOnChanges(changes: SimpleChangesTyped<DataAddressTypeSelectComponent>) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export type DataAddressType =
| 'Unchanged'
| 'Custom-Data-Address-Json'
| 'Custom-Transfer-Process-Request'
| 'On-Request'
| 'Http';
10 changes: 5 additions & 5 deletions src/app/core/services/api/edc-api.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
TransferHistoryPage,
UiAsset,
UiAssetCreateRequest,
UiAssetEditMetadataRequest,
UiAssetEditRequest,
UiContractNegotiation,
UiDataOffer,
buildEdcClient,
Expand Down Expand Up @@ -53,14 +53,14 @@ export class EdcApiService {
return from(this.edcClient.uiApi.createAsset({uiAssetCreateRequest}));
}

editAssetMetadata(
editAsset(
assetId: string,
uiAssetEditMetadataRequest: UiAssetEditMetadataRequest,
uiAssetEditRequest: UiAssetEditRequest,
): Observable<IdResponseDto> {
return from(
this.edcClient.uiApi.editAssetMetadata({
this.edcClient.uiApi.editAsset({
assetId,
uiAssetEditMetadataRequest,
uiAssetEditRequest,
}),
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import {
IdResponseDto,
UiAsset,
UiAssetCreateRequest,
UiAssetEditMetadataRequest,
UiAssetEditRequest,
UiDataSource,
} from '@sovity.de/edc-client';
import {Patcher, patchObj} from '../../../../utils/object-utils';
import {TestAssets} from './data/test-assets';
Expand Down Expand Up @@ -42,9 +43,9 @@ export const createAsset = (asset: UiAssetCreateRequest): IdResponseDto => {
};
};

export const editAssetMetadata = (
export const editAsset = (
assetId: string,
request: UiAssetEditMetadataRequest,
request: UiAssetEditRequest,
): IdResponseDto => {
const asset = patchAsset(assetId, () =>
createAssetMetadata(assetId, request),
Expand All @@ -58,25 +59,30 @@ export const editAssetMetadata = (

function createAssetMetadata(
assetId: string,
request: UiAssetCreateRequest | UiAssetEditMetadataRequest,
request: UiAssetCreateRequest | UiAssetEditRequest,
): Omit<
UiAsset,
| 'assetId'
| 'assetJsonLd'
| 'connectorEndpoint'
| 'isOwnConnector'
| 'creatorOrganizationName'
| 'httpDatasourceHintsProxyBody'
| 'httpDatasourceHintsProxyMethod'
| 'httpDatasourceHintsProxyPath'
| 'httpDatasourceHintsProxyQueryParams'
| 'participantId'
> {
const dataSource: UiDataSource | null =
(request as UiAssetCreateRequest).dataSource ??
(request as UiAssetEditRequest).dataSourceOverrideOrNull;
return {
title: request.title ?? assetId,
description: request.description,
descriptionShortText: request.description,
publisherHomepage: request.publisherHomepage,
dataSourceAvailability:
dataSource?.type === 'ON_REQUEST' ? 'ON_REQUEST' : 'LIVE',
language: request.language,
onRequestContactEmail: dataSource?.onRequest?.contactEmail,
onRequestContactEmailSubject:
dataSource?.onRequest?.contactPreferredEmailSubject,
licenseUrl: request.licenseUrl,
version: request.version,
keywords: request.keywords,
Expand All @@ -97,6 +103,14 @@ function createAssetMetadata(
dataUpdateFrequency: request.dataUpdateFrequency,
temporalCoverageFrom: request.temporalCoverageFrom,
temporalCoverageToInclusive: request.temporalCoverageToInclusive,
httpDatasourceHintsProxyMethod:
dataSource?.httpData?.enableMethodParameterization,
httpDatasourceHintsProxyPath:
dataSource?.httpData?.enablePathParameterization,
httpDatasourceHintsProxyQueryParams:
dataSource?.httpData?.enableQueryParameterization,
httpDatasourceHintsProxyBody:
dataSource?.httpData?.enableBodyParameterization,
customJsonAsString: '{}',
customJsonLdAsString: '{}',
privateCustomJsonAsString: '{}',
Expand Down
Loading

0 comments on commit 1169df2

Please sign in to comment.