Skip to content

Commit 4405fc0

Browse files
committed
Merge branch 'develop' into feat/317-get-dataset-templates
2 parents 8720bdc + 39aa3da commit 4405fc0

File tree

19 files changed

+439
-2
lines changed

19 files changed

+439
-2
lines changed

docs/useCases.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ The different use cases currently available in the package are classified below,
9090
- [Get Maximum Embargo Duration In Months](#get-maximum-embargo-duration-in-months)
9191
- [Get ZIP Download Limit](#get-zip-download-limit)
9292
- [Get Application Terms of Use](#get-application-terms-of-use)
93+
- [Get Available Dataset Metadata Export Formats](#get-available-dataset-metadata-export-formats)
94+
- [Licenses](#Licenses)
95+
- [Get Available Standard License Terms](#get-available-standard-license-terms)
9396
- [Contact](#Contact)
9497
- [Send Feedback to Object Contacts](#send-feedback-to-object-contacts)
9598
- [Notifications](#Notifications)
@@ -2108,6 +2111,51 @@ getApplicationTermsOfUse.execute().then((termsOfUse: string) => {
21082111

21092112
_See [use case](../src/info/domain/useCases/GetApplicationTermsOfUse.ts) implementation_.
21102113

2114+
#### Get Available Dataset Metadata Export Formats
2115+
2116+
Returns a [DatasetMetadataExportFormats](../src/info/domain/models/DatasetMetadataExportFormats.ts) object containing the available dataset metadata export formats.
2117+
2118+
##### Example call:
2119+
2120+
```typescript
2121+
import {
2122+
getAvailableDatasetMetadataExportFormats,
2123+
DatasetMetadataExportFormats
2124+
} from '@iqss/dataverse-client-javascript'
2125+
2126+
/* ... */
2127+
2128+
getAvailableDatasetMetadataExportFormats
2129+
.execute()
2130+
.then((datasetMetadataExportFormats: DatasetMetadataExportFormats) => {
2131+
/* ... */
2132+
})
2133+
2134+
/* ... */
2135+
```
2136+
2137+
_See [use case](../src/info/domain/useCases/GetAvailableDatasetMetadataExportFormats.ts) implementation_.
2138+
2139+
## Licenses
2140+
2141+
### Get Available Standard License Terms
2142+
2143+
Returns a list of available standard licenses that can be selected for a dataset.
2144+
2145+
##### Example call:
2146+
2147+
```typescript
2148+
import { getAvailableStandardLicenses, License } from '@iqss/dataverse-client-javascript'
2149+
2150+
/* ... */
2151+
2152+
getAvailableStandardLicenses.execute().then((licenses: License[]) => {
2153+
/* ... */
2154+
})
2155+
```
2156+
2157+
_See [use case](../src/licenses/domain/useCases/GetAvailableStandardLicenses.ts) implementation_.
2158+
21112159
## Contact
21122160

21132161
#### Send Feedback to Object Contacts

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ export * from './files'
1010
export * from './contactInfo'
1111
export * from './notifications'
1212
export * from './search'
13+
export * from './licenses'
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export type DatasetMetadataExportFormats = Record<string, DatasetMetadataExportFormat>
2+
3+
type DatasetMetadataExportFormat = DatasetMetadataExportFormatBase | XmlDatasetMetadataExportFormat
4+
5+
interface DatasetMetadataExportFormatBase {
6+
displayName: string
7+
mediaType: string
8+
isHarvestable: boolean
9+
isVisibleInUserInterface: boolean
10+
}
11+
12+
interface XmlDatasetMetadataExportFormat extends DatasetMetadataExportFormatBase {
13+
XMLNameSpace: string
14+
XMLSchemaLocation: string
15+
XMLSchemaVersion: string
16+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import { DatasetMetadataExportFormats } from '../models/DatasetMetadataExportFormats'
12
import { DataverseVersion } from '../models/DataverseVersion'
23

34
export interface IDataverseInfoRepository {
45
getDataverseVersion(): Promise<DataverseVersion>
56
getZipDownloadLimit(): Promise<number>
67
getMaxEmbargoDurationInMonths(): Promise<number>
78
getApplicationTermsOfUse(lang?: string): Promise<string>
9+
getAvailableDatasetMetadataExportFormats(): Promise<DatasetMetadataExportFormats>
810
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { UseCase } from '../../../core/domain/useCases/UseCase'
2+
import { DatasetMetadataExportFormats } from '../models/DatasetMetadataExportFormats'
3+
import { IDataverseInfoRepository } from '../repositories/IDataverseInfoRepository'
4+
5+
export class GetAvailableDatasetMetadataExportFormats
6+
implements UseCase<DatasetMetadataExportFormats>
7+
{
8+
private dataverseInfoRepository: IDataverseInfoRepository
9+
10+
constructor(dataverseInfoRepository: IDataverseInfoRepository) {
11+
this.dataverseInfoRepository = dataverseInfoRepository
12+
}
13+
14+
/**
15+
* Returns a DatasetMetadataExportFormats object containing the available dataset metadata export formats.
16+
*
17+
* @returns {Promise<DatasetMetadataExportFormats>}
18+
*/
19+
async execute(): Promise<DatasetMetadataExportFormats> {
20+
return await this.dataverseInfoRepository.getAvailableDatasetMetadataExportFormats()
21+
}
22+
}

src/info/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,24 @@ import { GetDataverseVersion } from './domain/useCases/GetDataverseVersion'
33
import { GetZipDownloadLimit } from './domain/useCases/GetZipDownloadLimit'
44
import { GetMaxEmbargoDurationInMonths } from './domain/useCases/GetMaxEmbargoDurationInMonths'
55
import { GetApplicationTermsOfUse } from './domain/useCases/GetApplicationTermsOfUse'
6+
import { GetAvailableDatasetMetadataExportFormats } from './domain/useCases/GetAvailableDatasetMetadataExportFormats'
67

78
const dataverseInfoRepository = new DataverseInfoRepository()
89

910
const getDataverseVersion = new GetDataverseVersion(dataverseInfoRepository)
1011
const getZipDownloadLimit = new GetZipDownloadLimit(dataverseInfoRepository)
1112
const getMaxEmbargoDurationInMonths = new GetMaxEmbargoDurationInMonths(dataverseInfoRepository)
1213
const getApplicationTermsOfUse = new GetApplicationTermsOfUse(dataverseInfoRepository)
14+
const getAvailableDatasetMetadataExportFormats = new GetAvailableDatasetMetadataExportFormats(
15+
dataverseInfoRepository
16+
)
1317

1418
export {
1519
getDataverseVersion,
1620
getZipDownloadLimit,
1721
getMaxEmbargoDurationInMonths,
18-
getApplicationTermsOfUse
22+
getApplicationTermsOfUse,
23+
getAvailableDatasetMetadataExportFormats
1924
}
25+
26+
export { DatasetMetadataExportFormats } from './domain/models/DatasetMetadataExportFormats'

src/info/infra/repositories/DataverseInfoRepository.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ApiRepository } from '../../../core/infra/repositories/ApiRepository'
22
import { IDataverseInfoRepository } from '../../domain/repositories/IDataverseInfoRepository'
33
import { DataverseVersion } from '../../domain/models/DataverseVersion'
44
import { AxiosResponse } from 'axios'
5+
import { DatasetMetadataExportFormats } from '../../domain/models/DatasetMetadataExportFormats'
56

67
export class DataverseInfoRepository extends ApiRepository implements IDataverseInfoRepository {
78
private readonly infoResourceName: string = 'info'
@@ -55,4 +56,14 @@ export class DataverseInfoRepository extends ApiRepository implements IDataverse
5556
throw error
5657
})
5758
}
59+
60+
public async getAvailableDatasetMetadataExportFormats(): Promise<DatasetMetadataExportFormats> {
61+
return this.doGet(this.buildApiEndpoint(this.infoResourceName, `exportFormats`))
62+
.then((response: AxiosResponse<{ data: DatasetMetadataExportFormats }>) => {
63+
return response.data.data
64+
})
65+
.catch((error) => {
66+
throw error
67+
})
68+
}
5869
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export interface License {
2+
id: number
3+
name: string
4+
shortDescription?: string
5+
uri: string
6+
iconUri?: string
7+
active: boolean
8+
isDefault: boolean
9+
sortOrder: number
10+
rightsIdentifier?: string
11+
rightsIdentifierScheme?: string
12+
schemeUri?: string
13+
languageCode?: string
14+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { License } from '../models/License'
2+
3+
export interface ILicensesRepository {
4+
getAvailableStandardLicenses(): Promise<License[]>
5+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export interface LicensePayload {
2+
id: number
3+
name: string
4+
shortDescription?: string
5+
uri: string
6+
iconUrl?: string
7+
active: boolean
8+
isDefault: boolean
9+
sortOrder: number
10+
rightsIdentifier?: string
11+
rightsIdentifierScheme?: string
12+
schemeUri?: string
13+
languageCode?: string
14+
}

0 commit comments

Comments
 (0)