Skip to content

Commit 1331a81

Browse files
committed
feat: use case and docs
1 parent 68fcaa7 commit 1331a81

File tree

6 files changed

+85
-1
lines changed

6 files changed

+85
-1
lines changed

docs/useCases.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ The different use cases currently available in the package are classified below,
8989
- [Get Maximum Embargo Duration In Months](#get-maximum-embargo-duration-in-months)
9090
- [Get ZIP Download Limit](#get-zip-download-limit)
9191
- [Get Application Terms of Use](#get-application-terms-of-use)
92+
- [Get Available Dataset Metadata Export Formats](#get-available-dataset-metadata-export-formats)
9293
- [Contact](#Contact)
9394
- [Send Feedback to Object Contacts](#send-feedback-to-object-contacts)
9495
- [Notifications](#Notifications)
@@ -2089,6 +2090,31 @@ getApplicationTermsOfUse.execute().then((termsOfUse: string) => {
20892090

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

2093+
#### Get Available Dataset Metadata Export Formats
2094+
2095+
Returns a [DatasetMetadataExportFormats](../src/info/domain/models/DatasetMetadataExportFormats.ts) object containing the available dataset metadata export formats.
2096+
2097+
##### Example call:
2098+
2099+
```typescript
2100+
import {
2101+
getAvailableDatasetMetadataExportFormats,
2102+
DatasetMetadataExportFormats
2103+
} from '@iqss/dataverse-client-javascript'
2104+
2105+
/* ... */
2106+
2107+
getAvailableDatasetMetadataExportFormats
2108+
.execute()
2109+
.then((datasetMetadataExportFormats: DatasetMetadataExportFormats) => {
2110+
/* ... */
2111+
})
2112+
2113+
/* ... */
2114+
```
2115+
2116+
_See [use case](../src/info/domain/useCases/GetAvailableDatasetMetadataExportFormats.ts) implementation_.
2117+
20922118
## Contact
20932119

20942120
#### Send Feedback to Object Contacts
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
}

0 commit comments

Comments
 (0)