@studyportals/domain-client 3.6.0-2 → 3.6.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{bin/index.d.ts → index.d.ts} +5 -1
- package/{bin/index.js → index.js} +5 -1
- package/index.js.map +1 -0
- package/package.json +8 -8
- package/{bin/src → src}/domain-client.d.ts +0 -0
- package/{bin/src → src}/domain-client.js +0 -0
- package/{bin/src → src}/domain-client.js.map +0 -0
- package/{bin/src → src}/exceptions/bad-request-exception.d.ts +0 -0
- package/{bin/src → src}/exceptions/bad-request-exception.js +0 -0
- package/{bin/src → src}/exceptions/bad-request-exception.js.map +0 -0
- package/{bin/src → src}/exceptions/client-exception.d.ts +0 -0
- package/{bin/src → src}/exceptions/client-exception.js +0 -0
- package/{bin/src → src}/exceptions/client-exception.js.map +0 -0
- package/{bin/src → src}/exceptions/internal-server-exception.d.ts +0 -0
- package/{bin/src → src}/exceptions/internal-server-exception.js +0 -0
- package/{bin/src → src}/exceptions/internal-server-exception.js.map +0 -0
- package/{bin/src → src}/exceptions/not-found-exception.d.ts +0 -0
- package/{bin/src → src}/exceptions/not-found-exception.js +0 -0
- package/{bin/src → src}/exceptions/not-found-exception.js.map +0 -0
- package/{bin/src → src}/exceptions/property-not-available-exception.d.ts +0 -0
- package/{bin/src → src}/exceptions/property-not-available-exception.js +0 -0
- package/{bin/src → src}/exceptions/property-not-available-exception.js.map +0 -0
- package/{bin/src → src}/factories/DateFactory.d.ts +0 -0
- package/{bin/src → src}/factories/DateFactory.js +0 -0
- package/{bin/src → src}/factories/DateFactory.js.map +0 -0
- package/{bin/src → src}/factories/InternalLinkFactory.d.ts +0 -0
- package/{bin/src → src}/factories/InternalLinkFactory.js +0 -0
- package/{bin/src → src}/factories/InternalLinkFactory.js.map +1 -1
- package/{bin/src → src}/i-api-response.d.ts +0 -0
- package/{bin/src → src}/i-api-response.js +0 -0
- package/{bin/src → src}/i-api-response.js.map +0 -0
- package/{bin/src → src}/i-class-factory.d.ts +0 -0
- package/{bin/src → src}/i-class-factory.js +0 -0
- package/{bin/src → src}/i-class-factory.js.map +0 -0
- package/{bin/src → src}/i-model-description.d.ts +0 -0
- package/{bin/src → src}/i-model-description.js +0 -0
- package/{bin/src → src}/i-model-description.js.map +0 -0
- package/{bin/src → src}/model-client.d.ts +0 -0
- package/{bin/src → src}/model-client.js +0 -0
- package/{bin/src → src}/model-client.js.map +0 -0
- package/{bin/src → src}/model-factory.d.ts +0 -0
- package/{bin/src → src}/model-factory.js +2 -2
- package/{bin/src → src}/model-factory.js.map +1 -1
- package/{bin/src → src}/models/bestfit-programme/bestfit-programme-client.d.ts +0 -0
- package/{bin/src → src}/models/bestfit-programme/bestfit-programme-client.js +0 -0
- package/{bin/src → src}/models/bestfit-programme/bestfit-programme-client.js.map +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-best-fit-programme.d.ts +2 -2
- package/{bin/src → src}/models/bestfit-programme/i-best-fit-programme.js +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-best-fit-programme.js.map +0 -0
- package/{bin/src/models/common → src/models/bestfit-programme}/i-city.d.ts +0 -0
- package/{bin/src/models/common → src/models/bestfit-programme}/i-city.js +0 -0
- package/src/models/bestfit-programme/i-city.js.map +1 -0
- package/src/models/bestfit-programme/i-english-requirements.d.ts +37 -0
- package/{bin/src/models/common → src/models/bestfit-programme}/i-english-requirements.js +0 -0
- package/src/models/bestfit-programme/i-english-requirements.js.map +1 -0
- package/{bin/src → src}/models/bestfit-programme/i-g-p-a-requirement.d.ts +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-g-p-a-requirement.js +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-g-p-a-requirement.js.map +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-living-cost.d.ts +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-living-cost.js +0 -0
- package/{bin/src → src}/models/bestfit-programme/i-living-cost.js.map +0 -0
- package/{bin/src/models/common → src/models/bestfit-programme}/i-tuition-fee.d.ts +0 -0
- package/{bin/src/models/common → src/models/bestfit-programme}/i-tuition-fee.js +0 -0
- package/src/models/bestfit-programme/i-tuition-fee.js.map +1 -0
- package/src/models/common/i-city.d.ts +14 -0
- package/src/models/common/i-city.js +3 -0
- package/{bin/src → src}/models/common/i-city.js.map +0 -0
- package/{bin/src → src}/models/common/i-country.d.ts +0 -0
- package/{bin/src → src}/models/common/i-country.js +0 -0
- package/{bin/src → src}/models/common/i-country.js.map +0 -0
- package/{bin/src → src}/models/common/i-english-requirements.d.ts +0 -0
- package/src/models/common/i-english-requirements.js +3 -0
- package/{bin/src → src}/models/common/i-english-requirements.js.map +0 -0
- package/{bin/src → src}/models/common/i-internal-link.d.ts +0 -0
- package/{bin/src → src}/models/common/i-internal-link.js +0 -0
- package/{bin/src → src}/models/common/i-internal-link.js.map +0 -0
- package/{bin/src → src}/models/common/i-logo.d.ts +0 -0
- package/{bin/src → src}/models/common/i-logo.js +0 -0
- package/{bin/src → src}/models/common/i-logo.js.map +0 -0
- package/src/models/common/i-tuition-fee.d.ts +50 -0
- package/src/models/common/i-tuition-fee.js +3 -0
- package/{bin/src → src}/models/common/i-tuition-fee.js.map +0 -0
- package/{bin/src → src}/models/dotdigital-organisation/dotdigital-organisation-client.d.ts +0 -0
- package/{bin/src → src}/models/dotdigital-organisation/dotdigital-organisation-client.js +0 -0
- package/{bin/src → src}/models/dotdigital-organisation/dotdigital-organisation-client.js.map +0 -0
- package/src/models/dotdigital-organisation/i-city.d.ts +14 -0
- package/src/models/dotdigital-organisation/i-city.js +3 -0
- package/src/models/dotdigital-organisation/i-city.js.map +1 -0
- package/src/models/dotdigital-organisation/i-country.d.ts +14 -0
- package/src/models/dotdigital-organisation/i-country.js +3 -0
- package/src/models/dotdigital-organisation/i-country.js.map +1 -0
- package/src/models/dotdigital-organisation/i-dot-digital-organisation.d.ts +35 -0
- package/{bin/src → src}/models/dotdigital-organisation/i-dot-digital-organisation.js +0 -0
- package/{bin/src → src}/models/dotdigital-organisation/i-dot-digital-organisation.js.map +0 -0
- package/src/models/dotdigital-organisation/i-review.d.ts +7 -0
- package/{bin/src → src}/models/dotdigital-organisation/i-review.js +0 -0
- package/{bin/src → src}/models/dotdigital-organisation/i-review.js.map +0 -0
- package/{bin/src → src}/models/dotdigital-programme/dotdigital-programme-client.d.ts +0 -0
- package/{bin/src → src}/models/dotdigital-programme/dotdigital-programme-client.js +0 -0
- package/{bin/src → src}/models/dotdigital-programme/dotdigital-programme-client.js.map +0 -0
- package/src/models/dotdigital-programme/i-country.d.ts +14 -0
- package/src/models/dotdigital-programme/i-country.js +3 -0
- package/src/models/dotdigital-programme/i-country.js.map +1 -0
- package/{bin/src → src}/models/dotdigital-programme/i-dot-digital-programme.d.ts +0 -0
- package/{bin/src → src}/models/dotdigital-programme/i-dot-digital-programme.js +0 -0
- package/{bin/src → src}/models/dotdigital-programme/i-dot-digital-programme.js.map +0 -0
- package/src/models/dotdigital-programme/i-english-requirements.d.ts +37 -0
- package/src/models/dotdigital-programme/i-english-requirements.js +3 -0
- package/src/models/dotdigital-programme/i-english-requirements.js.map +1 -0
- package/src/models/dotdigital-programme/i-internal-link.d.ts +28 -0
- package/src/models/dotdigital-programme/i-internal-link.js +3 -0
- package/src/models/dotdigital-programme/i-internal-link.js.map +1 -0
- package/src/models/dotdigital-programme/i-logo.d.ts +14 -0
- package/src/models/dotdigital-programme/i-logo.js +3 -0
- package/src/models/dotdigital-programme/i-logo.js.map +1 -0
- package/src/models/dotdigital-programme/i-tuition-fee.d.ts +50 -0
- package/src/models/dotdigital-programme/i-tuition-fee.js +3 -0
- package/src/models/dotdigital-programme/i-tuition-fee.js.map +1 -0
- package/{bin/src → src}/models/programme-card/i-click-tracking-data.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-click-tracking-data.js +0 -0
- package/{bin/src → src}/models/programme-card/i-click-tracking-data.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-cover.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-cover.js +0 -0
- package/{bin/src → src}/models/programme-card/i-cover.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-deadline.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-deadline.js +0 -0
- package/{bin/src → src}/models/programme-card/i-deadline.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-duration.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-duration.js +0 -0
- package/{bin/src → src}/models/programme-card/i-duration.js.map +0 -0
- package/src/models/programme-card/i-internal-link.d.ts +28 -0
- package/src/models/programme-card/i-internal-link.js +3 -0
- package/src/models/programme-card/i-internal-link.js.map +1 -0
- package/{bin/src → src}/models/programme-card/i-link.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-link.js +0 -0
- package/{bin/src → src}/models/programme-card/i-link.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-location.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-location.js +0 -0
- package/{bin/src → src}/models/programme-card/i-location.js.map +0 -0
- package/src/models/programme-card/i-logo.d.ts +14 -0
- package/src/models/programme-card/i-logo.js +3 -0
- package/src/models/programme-card/i-logo.js.map +1 -0
- package/{bin/src → src}/models/programme-card/i-optional-link.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-optional-link.js +0 -0
- package/{bin/src → src}/models/programme-card/i-optional-link.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-programme-card.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-programme-card.js +0 -0
- package/{bin/src → src}/models/programme-card/i-programme-card.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-start-date.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-start-date.js +0 -0
- package/{bin/src → src}/models/programme-card/i-start-date.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-timing.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-timing.js +0 -0
- package/{bin/src → src}/models/programme-card/i-timing.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-tracked-link.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-tracked-link.js +0 -0
- package/{bin/src → src}/models/programme-card/i-tracked-link.js.map +0 -0
- package/{bin/src → src}/models/programme-card/i-tracking.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/i-tracking.js +0 -0
- package/{bin/src → src}/models/programme-card/i-tracking.js.map +0 -0
- package/src/models/programme-card/i-tuition-fee.d.ts +50 -0
- package/src/models/programme-card/i-tuition-fee.js +3 -0
- package/src/models/programme-card/i-tuition-fee.js.map +1 -0
- package/{bin/src → src}/models/programme-card/programme-card-client.d.ts +0 -0
- package/{bin/src → src}/models/programme-card/programme-card-client.js +0 -0
- package/{bin/src → src}/models/programme-card/programme-card-client.js.map +0 -0
- package/{bin/src → src}/models/search-country-faq/i-search-country-faq.d.ts +0 -0
- package/{bin/src → src}/models/search-country-faq/i-search-country-faq.js +0 -0
- package/{bin/src → src}/models/search-country-faq/i-search-country-faq.js.map +0 -0
- package/{bin/src → src}/models/search-country-faq/public-search-country-faq-client.d.ts +0 -0
- package/{bin/src → src}/models/search-country-faq/public-search-country-faq-client.js +0 -0
- package/{bin/src → src}/models/search-country-faq/public-search-country-faq-client.js.map +0 -0
- package/src/models/search-discipline/i-search-discipline.d.ts +26 -0
- package/src/models/search-discipline/i-search-discipline.js +3 -0
- package/src/models/search-discipline/i-search-discipline.js.map +1 -0
- package/src/models/search-discipline/public-search-discipline-client.d.ts +7 -0
- package/src/models/search-discipline/public-search-discipline-client.js +17 -0
- package/src/models/search-discipline/public-search-discipline-client.js.map +1 -0
- package/{bin/src → src}/models/search-projection/i-geo-targeting-configuration.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/i-geo-targeting-configuration.js +0 -0
- package/{bin/src → src}/models/search-projection/i-geo-targeting-configuration.js.map +0 -0
- package/{bin/src → src}/models/search-projection/i-geo-targeting-values.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/i-geo-targeting-values.js +0 -0
- package/{bin/src → src}/models/search-projection/i-geo-targeting-values.js.map +0 -0
- package/{bin/src → src}/models/search-projection/i-organisation-values.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/i-organisation-values.js +0 -0
- package/{bin/src → src}/models/search-projection/i-organisation-values.js.map +0 -0
- package/{bin/src → src}/models/search-projection/i-premium-values.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/i-premium-values.js +0 -0
- package/{bin/src → src}/models/search-projection/i-premium-values.js.map +0 -0
- package/{bin/src → src}/models/search-projection/i-search-projection.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/i-search-projection.js +0 -0
- package/{bin/src → src}/models/search-projection/i-search-projection.js.map +0 -0
- package/{bin/src → src}/models/search-projection/i-tuition-values.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/i-tuition-values.js +0 -0
- package/{bin/src → src}/models/search-projection/i-tuition-values.js.map +0 -0
- package/{bin/src → src}/models/search-projection/search-projection-client.d.ts +0 -0
- package/{bin/src → src}/models/search-projection/search-projection-client.js +0 -0
- package/{bin/src → src}/models/search-projection/search-projection-client.js.map +0 -0
- package/src/models/sitemap-rankings-info/i-sitemap-rankings-info.d.ts +10 -0
- package/src/models/sitemap-rankings-info/i-sitemap-rankings-info.js +3 -0
- package/src/models/sitemap-rankings-info/i-sitemap-rankings-info.js.map +1 -0
- package/src/models/sitemap-rankings-info/sitemap-rankings-info-client.d.ts +7 -0
- package/src/models/sitemap-rankings-info/sitemap-rankings-info-client.js +17 -0
- package/src/models/sitemap-rankings-info/sitemap-rankings-info-client.js.map +1 -0
- package/src/types/portal-map.d.ts +2 -0
- package/{bin/src → src}/types/portal-map.js +0 -0
- package/{bin/src → src}/types/portal-map.js.map +0 -0
- package/{bin/src → src}/types/portal-type.d.ts +0 -0
- package/{bin/src → src}/types/portal-type.js +0 -0
- package/{bin/src → src}/types/portal-type.js.map +0 -0
- package/src/{types.ts → types.d.ts} +1 -1
- package/{bin/src → src}/types.js +0 -0
- package/{bin/src → src}/types.js.map +0 -0
- package/.eslintignore +0 -3
- package/.eslintrc.js +0 -12
- package/.github/dependabot.yml +0 -17
- package/.github/stale.yml +0 -10
- package/.mocharc.yml +0 -3
- package/.nycrc +0 -15
- package/README.md +0 -117
- package/bin/index.js.map +0 -1
- package/bin/package.json +0 -54
- package/bin/src/models/dotdigital-organisation/i-dot-digital-organisation.d.ts +0 -32
- package/bin/src/models/dotdigital-organisation/i-review.d.ts +0 -7
- package/bin/src/types/portal-map.d.ts +0 -2
- package/bin/src/types.d.ts +0 -4
- package/index.ts +0 -91
- package/src/domain-client.ts +0 -70
- package/src/exceptions/bad-request-exception.ts +0 -2
- package/src/exceptions/client-exception.ts +0 -2
- package/src/exceptions/internal-server-exception.ts +0 -2
- package/src/exceptions/not-found-exception.ts +0 -2
- package/src/exceptions/property-not-available-exception.ts +0 -2
- package/src/factories/DateFactory.ts +0 -8
- package/src/factories/InternalLinkFactory.ts +0 -27
- package/src/i-api-response.ts +0 -7
- package/src/i-class-factory.ts +0 -5
- package/src/i-model-description.ts +0 -13
- package/src/model-client.ts +0 -77
- package/src/model-factory.ts +0 -94
- package/src/models/bestfit-programme/bestfit-programme-client.ts +0 -16
- package/src/models/bestfit-programme/i-best-fit-programme.ts +0 -102
- package/src/models/bestfit-programme/i-g-p-a-requirement.ts +0 -23
- package/src/models/bestfit-programme/i-living-cost.ts +0 -23
- package/src/models/common/i-city.ts +0 -16
- package/src/models/common/i-country.ts +0 -16
- package/src/models/common/i-english-requirements.ts +0 -38
- package/src/models/common/i-internal-link.ts +0 -32
- package/src/models/common/i-logo.ts +0 -16
- package/src/models/common/i-tuition-fee.ts +0 -57
- package/src/models/dotdigital-organisation/dotdigital-organisation-client.ts +0 -16
- package/src/models/dotdigital-organisation/i-dot-digital-organisation.ts +0 -59
- package/src/models/dotdigital-organisation/i-review.ts +0 -12
- package/src/models/dotdigital-programme/dotdigital-programme-client.ts +0 -16
- package/src/models/dotdigital-programme/i-dot-digital-programme.ts +0 -108
- package/src/models/programme-card/i-click-tracking-data.ts +0 -8
- package/src/models/programme-card/i-cover.ts +0 -16
- package/src/models/programme-card/i-deadline.ts +0 -23
- package/src/models/programme-card/i-duration.ts +0 -46
- package/src/models/programme-card/i-link.ts +0 -25
- package/src/models/programme-card/i-location.ts +0 -12
- package/src/models/programme-card/i-optional-link.ts +0 -27
- package/src/models/programme-card/i-programme-card.ts +0 -152
- package/src/models/programme-card/i-start-date.ts +0 -39
- package/src/models/programme-card/i-timing.ts +0 -53
- package/src/models/programme-card/i-tracked-link.ts +0 -34
- package/src/models/programme-card/i-tracking.ts +0 -55
- package/src/models/programme-card/programme-card-client.ts +0 -16
- package/src/models/search-country-faq/i-search-country-faq.ts +0 -22
- package/src/models/search-country-faq/public-search-country-faq-client.ts +0 -16
- package/src/models/search-projection/i-geo-targeting-configuration.ts +0 -44
- package/src/models/search-projection/i-geo-targeting-values.ts +0 -38
- package/src/models/search-projection/i-organisation-values.ts +0 -46
- package/src/models/search-projection/i-premium-values.ts +0 -43
- package/src/models/search-projection/i-search-projection.ts +0 -216
- package/src/models/search-projection/i-tuition-values.ts +0 -63
- package/src/models/search-projection/search-projection-client.ts +0 -16
- package/src/types/portal-map.ts +0 -3
- package/src/types/portal-type.ts +0 -7
- package/tsconfig.json +0 -39
package/.github/dependabot.yml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
version: 2
|
|
2
|
-
updates:
|
|
3
|
-
- package-ecosystem: npm
|
|
4
|
-
directory: "/"
|
|
5
|
-
schedule:
|
|
6
|
-
interval: daily
|
|
7
|
-
time: "04:00"
|
|
8
|
-
open-pull-requests-limit: 10
|
|
9
|
-
reviewers:
|
|
10
|
-
- studyportals/plop
|
|
11
|
-
labels:
|
|
12
|
-
- component-library
|
|
13
|
-
allow:
|
|
14
|
-
- dependency-name: "@studyportals/*"
|
|
15
|
-
ignore:
|
|
16
|
-
- dependency-name: "@studyportals/*"
|
|
17
|
-
update-types: ["version-update:semver-patch"]
|
package/.github/stale.yml
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
daysUntilStale: 14
|
|
2
|
-
daysUntilClose: 46
|
|
3
|
-
exemptLabels:
|
|
4
|
-
- pinned
|
|
5
|
-
staleLabel: stale
|
|
6
|
-
markComment: >
|
|
7
|
-
This issue has been automatically marked as stale because it has not had
|
|
8
|
-
recent activity. It will be closed if no further activity occurs. Thank you
|
|
9
|
-
for your contributions.
|
|
10
|
-
closeComment: false
|
package/.mocharc.yml
DELETED
package/.nycrc
DELETED
package/README.md
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# Domain Client
|
|
2
|
-
|
|
3
|
-
A lightweight client for fetching data from the Domain API and returning it as
|
|
4
|
-
strongly typed classes defined by the `Domain API`.
|
|
5
|
-
|
|
6
|
-
## Installation
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
npm install @studyportals/domain-client --save
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Publishing new version
|
|
13
|
-
To publish a new version to npm run one of the following commnads
|
|
14
|
-
```bash
|
|
15
|
-
npm run publish-beta # Increase the beta version and publishes
|
|
16
|
-
npm run publish-major # Increases the major version publishes
|
|
17
|
-
npm run publish-minor # Increases the minor version and publishes
|
|
18
|
-
npm run publish-patch # Increases the patch version and publishes
|
|
19
|
-
npm run publish-current # Publishes the current version.
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Default usage
|
|
23
|
-
|
|
24
|
-
Instantiate your client class (_ProgrammeCard client as example_) with all
|
|
25
|
-
parameters:
|
|
26
|
-
```typescript
|
|
27
|
-
const client = new ProgrammeCardClient(
|
|
28
|
-
domainApiUrl, // The url to the Domain API endpoint
|
|
29
|
-
apiKey, // The API key provided by PLOP for your implementation
|
|
30
|
-
probabilitySeed, // Number between 1 and 100 (inclusive)
|
|
31
|
-
portalMap // PortalMap mapping between PortalType and portal base url
|
|
32
|
-
);
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
A PortalMap example:
|
|
36
|
-
```typescript
|
|
37
|
-
const portalMap = new Map<PortalType, string>()
|
|
38
|
-
.set(PortalType.MASTER, 'https://42069.mastersportal.fyi')
|
|
39
|
-
.set(PortalType.PHD, 'https://42069.phdportal.fyi')
|
|
40
|
-
.set(PortalType.BACHELOR, 'https://42069.bachelorsportal.fyi')
|
|
41
|
-
.set(PortalType.SHORT, 'https://42069.shortcoursesportal.fyi')
|
|
42
|
-
.set(PortalType.DISTANCE_LEARNING, 'https://42069.distancelearningportal.fyi')
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Fetch your model using the `fetch()` method with the requested ID (_in this
|
|
46
|
-
example programme ID_):
|
|
47
|
-
```typescript
|
|
48
|
-
const card: IProgrammeCard = await client.fetch(5);
|
|
49
|
-
```
|
|
50
|
-
Or get multiple using `fetchMultiple()` with the requested IDs (_in this example
|
|
51
|
-
programme IDs_):
|
|
52
|
-
```typescript
|
|
53
|
-
const cards: IProgrammeCard[] = await client.fetchMultiple([5, 9, 13]);
|
|
54
|
-
```
|
|
55
|
-
Some functions are accompanied by a `canShow` function that indicates its
|
|
56
|
-
availability. If the value is not set the function will throw a
|
|
57
|
-
`PropertyNotAvailableException`:
|
|
58
|
-
|
|
59
|
-
```typescript
|
|
60
|
-
const card: IProgrammeCard = await client.fetch(5);
|
|
61
|
-
|
|
62
|
-
// Might throw PropertyNotAvailableException
|
|
63
|
-
const cover: ICover = card.getCover();
|
|
64
|
-
|
|
65
|
-
// Safe behaviour
|
|
66
|
-
if (card.canShowCover()) {
|
|
67
|
-
const cover: ICover = card.getCover();
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Separated usage
|
|
72
|
-
|
|
73
|
-
In some cases you might want to separate the fetching of the information from
|
|
74
|
-
the usage of that information; for instance getting the information in your
|
|
75
|
-
back-end service and passing it to the front-end application for usage.
|
|
76
|
-
|
|
77
|
-
First instantiate your client class with all parameters:
|
|
78
|
-
```typescript
|
|
79
|
-
const client = new ProgrammeCardClient(
|
|
80
|
-
domainApiUrl, // The url to the Domain API endpoint
|
|
81
|
-
apiKey, // The API key provided by PLOP for your implementation
|
|
82
|
-
probabilitySeed // Number between 1 and 100 (inclusive)
|
|
83
|
-
);
|
|
84
|
-
```
|
|
85
|
-
To do this you can use the `fetchDescription()` method instead and encode it as
|
|
86
|
-
JSON:
|
|
87
|
-
```typescript
|
|
88
|
-
const card: IModelDescription = await client.fetchDescription(5);
|
|
89
|
-
const jsonData: string = JSON.stringify(card);
|
|
90
|
-
```
|
|
91
|
-
Or use the `fetchMultipleDescriptions()` function to fetch multiple descriptions:
|
|
92
|
-
```typescript
|
|
93
|
-
const cards: IModelDescription[] = await client.fetchMultipleDescriptions([5, 9, 13]);
|
|
94
|
-
const jsonData: string = JSON.stringify(cards);
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
When you're ready to use the information in the models you can use the existing
|
|
98
|
-
client or instantiate a new one without parameters:
|
|
99
|
-
```typescript
|
|
100
|
-
const client = new ProgrammeCardClient();
|
|
101
|
-
```
|
|
102
|
-
After which you can use the `fromDescription()` and `fromDescriptions()`
|
|
103
|
-
functions to retrieve your models:
|
|
104
|
-
```typescript
|
|
105
|
-
const descriptions: IModelDescription[] = JSON.parse(jsonData);
|
|
106
|
-
const card: IProgrammeCard = client.fromDescription(descriptions[0]);
|
|
107
|
-
const cards: IProgrammeCard[] = client.fromDescriptions(descriptions);
|
|
108
|
-
```
|
|
109
|
-
Note that creating a client without providing the required parameters will
|
|
110
|
-
result in all network functionalities of the client being unavailable. In this
|
|
111
|
-
case the following functions will throw a `ClientException`:
|
|
112
|
-
```typescript
|
|
113
|
-
await client.fetch(1);
|
|
114
|
-
await client.fetchMultiple([5, 9, 13]);
|
|
115
|
-
await client.fetchDescription(1);
|
|
116
|
-
await client.fetchMultipleDescriptions([5, 9, 13]);
|
|
117
|
-
```
|
package/bin/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,kFAA4E;AA8C3E,oGA9CQ,2CAAmB,OA8CR;AA7CpB,wEAAmE;AA8ClE,gGA9CQ,kCAAe,OA8CR;AA7ChB,0FAAoF;AA8CnF,wGA9CQ,mDAAuB,OA8CR;AA7CxB,8EAAwE;AA8CvE,kGA9CQ,uCAAiB,OA8CR;AA7ClB,wGAAiG;AA8ChG,8GA9CQ,gEAA6B,OA8CR;AAjC9B,6FAAwF;AAoDvF,oGApDQ,2CAAmB,OAoDR;AA7CpB,sGAAiG;AAoDhG,uGApDQ,iDAAsB,OAoDR;AAhDvB,sGAAiG;AAoDhG,uGApDQ,iDAAsB,OAoDR;AAlDvB,+GAA0G;AAoDzG,0GApDQ,uDAAyB,OAoDR;AAlD1B,uHAAgH;AAoD/G,6GApDQ,+DAA4B,OAoDR;AAjD7B,wHAAmH;AAoDlH,6GApDQ,6DAA4B,OAoDR;AA7C7B,yDAAoD;AA+CnD,2FA/CQ,wBAAU,OA+CR"}
|
package/bin/package.json
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@studyportals/domain-client",
|
|
3
|
-
"version": "3.6.0-2",
|
|
4
|
-
"description": "Responsible for fetching data from the Domain API",
|
|
5
|
-
"main": "bin/index.js",
|
|
6
|
-
"author": "StudyPortals B.V.",
|
|
7
|
-
"contributors": [
|
|
8
|
-
"braaibander <danny@studyportals.com>"
|
|
9
|
-
],
|
|
10
|
-
"license": "BSD-3-Clause",
|
|
11
|
-
"scripts": {
|
|
12
|
-
"test": "mocha --reporter spec \"tests/**/*.test.ts\"",
|
|
13
|
-
"coverage": "nyc mocha --reporter dot \"tests/**/*.test.ts\"",
|
|
14
|
-
"lint": "eslint . --ext .ts --max-warnings=0",
|
|
15
|
-
"pre-push": "npm run test && npm run coverage && npm run lint",
|
|
16
|
-
"prepare-dist": "npm run test && rm -fR bin && npx tsc && cp package.json bin/package.json && rm -fR bin/tests",
|
|
17
|
-
"publish-beta": "npm version prerelease --preid=beta && npm run prepare-dist && npm publish bin --tag beta",
|
|
18
|
-
"publish-major": "npm version major && npm run prepare-dist && npm publish bin",
|
|
19
|
-
"publish-minor": " npm version minor && npm run prepare-dist &&npm publish bin",
|
|
20
|
-
"publish-patch": " npm version patch && npm run prepare-dist && npm publish bin",
|
|
21
|
-
"publish-current": "npm run prepare-dist && npm publish bin"
|
|
22
|
-
},
|
|
23
|
-
"husky": {
|
|
24
|
-
"hooks": {
|
|
25
|
-
"pre-push": "npm run pre-push"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"dependencies": {
|
|
29
|
-
"axios": "^0.21.0"
|
|
30
|
-
},
|
|
31
|
-
"devDependencies": {
|
|
32
|
-
"@studyportals/code-style": "^1.3.1",
|
|
33
|
-
"@testdeck/mocha": "^0.1.2",
|
|
34
|
-
"@types/axios": "^0.14.0",
|
|
35
|
-
"@types/mocha": "^8.0.4",
|
|
36
|
-
"@types/moxios": "^0.4.9",
|
|
37
|
-
"@types/node": "^14.14.8",
|
|
38
|
-
"@types/reflect-metadata": "^0.1.0",
|
|
39
|
-
"@typescript-eslint/eslint-plugin": "^4.8.1",
|
|
40
|
-
"@typescript-eslint/parser": "^4.8.1",
|
|
41
|
-
"eslint": "^7.13.0",
|
|
42
|
-
"eslint-plugin-import": "^2.22.1",
|
|
43
|
-
"eslint-plugin-mocha": "^8.0.0",
|
|
44
|
-
"husky": "^4.3.0",
|
|
45
|
-
"mocha": "^8.2.1",
|
|
46
|
-
"moxios": "^0.4.0",
|
|
47
|
-
"nyc": "^15.1.0",
|
|
48
|
-
"source-map-support": "^0.5.19",
|
|
49
|
-
"ts-node": "^9.0.0",
|
|
50
|
-
"tslint": "^6.1.3",
|
|
51
|
-
"typemoq": "^2.1.0",
|
|
52
|
-
"typescript": "^4.0.5"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ICity, ICountry, IReview } from "../../..";
|
|
2
|
-
export interface IDotDigitalOrganisation {
|
|
3
|
-
getAboutCareer(): string;
|
|
4
|
-
getAboutEducation(): string;
|
|
5
|
-
getAboutHistory(): string;
|
|
6
|
-
getAboutResearch(): string;
|
|
7
|
-
getAcademicStaff(): number;
|
|
8
|
-
getAmountOfProgrammes(): number;
|
|
9
|
-
getCity(): ICity;
|
|
10
|
-
getCountry(): ICountry;
|
|
11
|
-
getCoverUrl(): string;
|
|
12
|
-
getFemaleStudents(): number;
|
|
13
|
-
getId(): number;
|
|
14
|
-
getAverageStudentRating(): number;
|
|
15
|
-
getLogoUrl(): string;
|
|
16
|
-
getName(): string;
|
|
17
|
-
getOrganisationUrl(): string;
|
|
18
|
-
getReasons(): string[];
|
|
19
|
-
/**
|
|
20
|
-
* @return IReview[]
|
|
21
|
-
*/
|
|
22
|
-
getReviews(): IReview[];
|
|
23
|
-
getServicesHousing(): string;
|
|
24
|
-
getServicesICT(): string;
|
|
25
|
-
getServicesLibrary(): string;
|
|
26
|
-
getServicesMedical(): string;
|
|
27
|
-
getServicesStudent(): string;
|
|
28
|
-
getStudentLifeCampus(): string;
|
|
29
|
-
getStudentLifeSport(): string;
|
|
30
|
-
getStudents(): number;
|
|
31
|
-
getStudentsInternational(): number;
|
|
32
|
-
}
|
package/bin/src/types.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare type Model = Record<string, Callable>;
|
|
2
|
-
export declare type Callable = () => CallableReturnType | CallableReturnType[];
|
|
3
|
-
export declare type CallableReturnType = AcceptedType | Model;
|
|
4
|
-
export declare type AcceptedType = string | string[] | number | number[] | boolean | null | Date;
|
package/index.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { BadRequestException } from "./src/exceptions/bad-request-exception"
|
|
2
|
-
import { ClientException } from "./src/exceptions/client-exception"
|
|
3
|
-
import { InternalServerException } from "./src/exceptions/internal-server-exception"
|
|
4
|
-
import { NotFoundException } from "./src/exceptions/not-found-exception"
|
|
5
|
-
import { PropertyNotAvailableException } from "./src/exceptions/property-not-available-exception"
|
|
6
|
-
import { ICover } from "./src/models/programme-card/i-cover";
|
|
7
|
-
import { ILink } from "./src/models/programme-card/i-link";
|
|
8
|
-
import { IOptionalLink } from "./src/models/programme-card/i-optional-link";
|
|
9
|
-
import { ILocation } from "./src/models/programme-card/i-location";
|
|
10
|
-
import { IClickTrackingData } from "./src/models/programme-card/i-click-tracking-data";
|
|
11
|
-
import { ITracking } from "./src/models/programme-card/i-tracking";
|
|
12
|
-
import { IDuration } from "./src/models/programme-card/i-duration";
|
|
13
|
-
import { IDeadline } from "./src/models/programme-card/i-deadline";
|
|
14
|
-
import { IStartDate } from "./src/models/programme-card/i-start-date";
|
|
15
|
-
import { ITiming } from "./src/models/programme-card/i-timing";
|
|
16
|
-
import { ITrackedLink } from "./src/models/programme-card/i-tracked-link";
|
|
17
|
-
import { IProgrammeCard } from "./src/models/programme-card/i-programme-card";
|
|
18
|
-
import { ProgrammeCardClient } from "./src/models/programme-card/programme-card-client";
|
|
19
|
-
import { ITuitionValues } from "./src/models/search-projection/i-tuition-values";
|
|
20
|
-
import { IPremiumValues } from "./src/models/search-projection/i-premium-values";
|
|
21
|
-
import { IOrganisationValues } from "./src/models/search-projection/i-organisation-values";
|
|
22
|
-
import { IGeoTargetingConfiguration } from "./src/models/search-projection/i-geo-targeting-configuration";
|
|
23
|
-
import { IGeoTargetingValues } from "./src/models/search-projection/i-geo-targeting-values";
|
|
24
|
-
import { ISearchProjection } from "./src/models/search-projection/i-search-projection";
|
|
25
|
-
import { SearchProjectionClient } from "./src/models/search-projection/search-projection-client";
|
|
26
|
-
import { ILivingCost } from "./src/models/bestfit-programme/i-living-cost";
|
|
27
|
-
import { IGPARequirement } from "./src/models/bestfit-programme/i-g-p-a-requirement";
|
|
28
|
-
import { IBestFitProgramme } from "./src/models/bestfit-programme/i-best-fit-programme";
|
|
29
|
-
import { BestfitProgrammeClient } from "./src/models/bestfit-programme/bestfit-programme-client";
|
|
30
|
-
import { IDotDigitalProgramme } from "./src/models/dotdigital-programme/i-dot-digital-programme";
|
|
31
|
-
import { DotdigitalProgrammeClient } from "./src/models/dotdigital-programme/dotdigital-programme-client";
|
|
32
|
-
import { ISearchCountryFaq } from "./src/models/search-country-faq/i-search-country-faq";
|
|
33
|
-
import { PublicSearchCountryFaqClient } from "./src/models/search-country-faq/public-search-country-faq-client";
|
|
34
|
-
import { IReview } from "./src/models/dotdigital-organisation/i-review";
|
|
35
|
-
import { IDotDigitalOrganisation } from "./src/models/dotdigital-organisation/i-dot-digital-organisation";
|
|
36
|
-
import { DotdigitalOrganisationClient } from "./src/models/dotdigital-organisation/dotdigital-organisation-client";
|
|
37
|
-
import { IInternalLink } from "./src/models/common/i-internal-link"
|
|
38
|
-
import { ILogo } from "./src/models/common/i-logo"
|
|
39
|
-
import { ITuitionFee } from "./src/models/common/i-tuition-fee"
|
|
40
|
-
import { IEnglishRequirements } from "./src/models/common/i-english-requirements"
|
|
41
|
-
import { ICity } from "./src/models/common/i-city"
|
|
42
|
-
import { ICountry } from "./src/models/common/i-country"
|
|
43
|
-
import { PortalType } from "./src/types/portal-type"
|
|
44
|
-
import { PortalMap } from "./src/types/portal-map"
|
|
45
|
-
|
|
46
|
-
export {
|
|
47
|
-
BadRequestException,
|
|
48
|
-
ClientException,
|
|
49
|
-
InternalServerException,
|
|
50
|
-
NotFoundException,
|
|
51
|
-
PropertyNotAvailableException,
|
|
52
|
-
IInternalLink,
|
|
53
|
-
ILogo,
|
|
54
|
-
ITuitionFee,
|
|
55
|
-
IEnglishRequirements,
|
|
56
|
-
ICity,
|
|
57
|
-
ICountry,
|
|
58
|
-
ICover,
|
|
59
|
-
ILink,
|
|
60
|
-
IOptionalLink,
|
|
61
|
-
ILocation,
|
|
62
|
-
IClickTrackingData,
|
|
63
|
-
ITracking,
|
|
64
|
-
IDuration,
|
|
65
|
-
IDeadline,
|
|
66
|
-
IStartDate,
|
|
67
|
-
ITiming,
|
|
68
|
-
ITrackedLink,
|
|
69
|
-
IProgrammeCard,
|
|
70
|
-
ProgrammeCardClient,
|
|
71
|
-
ITuitionValues,
|
|
72
|
-
IPremiumValues,
|
|
73
|
-
IOrganisationValues,
|
|
74
|
-
IGeoTargetingConfiguration,
|
|
75
|
-
IGeoTargetingValues,
|
|
76
|
-
ISearchProjection,
|
|
77
|
-
SearchProjectionClient,
|
|
78
|
-
ILivingCost,
|
|
79
|
-
IGPARequirement,
|
|
80
|
-
IBestFitProgramme,
|
|
81
|
-
BestfitProgrammeClient,
|
|
82
|
-
IDotDigitalProgramme,
|
|
83
|
-
DotdigitalProgrammeClient,
|
|
84
|
-
ISearchCountryFaq,
|
|
85
|
-
PublicSearchCountryFaqClient,
|
|
86
|
-
IReview,
|
|
87
|
-
IDotDigitalOrganisation,
|
|
88
|
-
DotdigitalOrganisationClient,
|
|
89
|
-
PortalMap,
|
|
90
|
-
PortalType
|
|
91
|
-
}
|
package/src/domain-client.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import Axios from "axios";
|
|
2
|
-
|
|
3
|
-
import { BadRequestException } from "./exceptions/bad-request-exception";
|
|
4
|
-
import { InternalServerException } from "./exceptions/internal-server-exception";
|
|
5
|
-
import { NotFoundException } from "./exceptions/not-found-exception";
|
|
6
|
-
import { IApiResponse } from "./i-api-response";
|
|
7
|
-
import { IModelDescription } from "./i-model-description";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export class DomainClient {
|
|
11
|
-
|
|
12
|
-
constructor(
|
|
13
|
-
public readonly baseUrl: string,
|
|
14
|
-
public readonly apiKey: string | undefined,
|
|
15
|
-
public readonly model: string,
|
|
16
|
-
public readonly version: string,
|
|
17
|
-
public readonly isPublic: boolean,
|
|
18
|
-
public readonly seed: number
|
|
19
|
-
) {
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public async doRequest(ids: number[]): Promise<IModelDescription[]> {
|
|
23
|
-
const url = this.buildUrl(ids);
|
|
24
|
-
const config: any = { baseURL: this.baseUrl }
|
|
25
|
-
if (this.apiKey !== undefined) {
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
27
|
-
config["headers"] = {'x-api-key': this.apiKey}
|
|
28
|
-
}
|
|
29
|
-
const axiosResponse = await Axios.get(url, config);
|
|
30
|
-
const response = axiosResponse.data as IApiResponse;
|
|
31
|
-
this.handleErrors(response);
|
|
32
|
-
|
|
33
|
-
const models: IModelDescription[] = [];
|
|
34
|
-
for (const id of ids) {
|
|
35
|
-
const modelData = response.data[id];
|
|
36
|
-
if (!modelData) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
models.push(modelData);
|
|
40
|
-
}
|
|
41
|
-
return models;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
private handleErrors(response: IApiResponse): void {
|
|
45
|
-
if (!response.status) {
|
|
46
|
-
throw new InternalServerException(response.message);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (response.status === 400) {
|
|
50
|
-
throw new BadRequestException(response.message);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (response.status === 404) {
|
|
54
|
-
throw new NotFoundException(response.message);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
private buildUrl(ids: number[]): string {
|
|
59
|
-
const publicPrefix = this.shouldAddPublicPrefix() ? 'public/' : '';
|
|
60
|
-
let query = `${publicPrefix}${this.model}/${this.version}/?seed=${this.seed}`;
|
|
61
|
-
for (const id of ids) {
|
|
62
|
-
query += `&id=${id}`;
|
|
63
|
-
}
|
|
64
|
-
return query;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private shouldAddPublicPrefix(): boolean {
|
|
68
|
-
return this.isPublic && this.apiKey === undefined;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IClassFactory } from "../i-class-factory";
|
|
2
|
-
import { CallableReturnType, Model } from "../types";
|
|
3
|
-
|
|
4
|
-
export class DateFactory implements IClassFactory {
|
|
5
|
-
public create(data: Model, parameters: string[]): CallableReturnType {
|
|
6
|
-
return new Date(parameters[0]);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { IClassFactory } from "../i-class-factory";
|
|
2
|
-
import { PortalType } from "../types/portal-type";
|
|
3
|
-
import { CallableReturnType, Model } from "../types";
|
|
4
|
-
import { PortalMap } from "../types/portal-map";
|
|
5
|
-
|
|
6
|
-
export class InternalLinkFactory implements IClassFactory {
|
|
7
|
-
private portalMap: PortalMap;
|
|
8
|
-
|
|
9
|
-
constructor(portalMap: PortalMap) {
|
|
10
|
-
this.portalMap = portalMap;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public create(link: Model): CallableReturnType {
|
|
14
|
-
const portalBaseUrl = this.getPortalBaseUrl(link.getPortalType() as PortalType);
|
|
15
|
-
|
|
16
|
-
const path = link['getUrl']() as string;
|
|
17
|
-
link['getUrl'] = () => portalBaseUrl + path;
|
|
18
|
-
|
|
19
|
-
return link;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
private getPortalBaseUrl(portalType: PortalType): string {
|
|
23
|
-
const url = this.portalMap.get(portalType);
|
|
24
|
-
return url || '';
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
}
|
package/src/i-api-response.ts
DELETED
package/src/i-class-factory.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { AcceptedType } from "./types";
|
|
2
|
-
|
|
3
|
-
export interface IModelDescription {
|
|
4
|
-
class: string;
|
|
5
|
-
func: Record<string, AcceptedType | IModelDescription>;
|
|
6
|
-
parameters?: any[];
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// eslint-disable-next-line
|
|
10
|
-
export function isModelDescription(arg: any): arg is IModelDescription {
|
|
11
|
-
// eslint-disable-next-line
|
|
12
|
-
return arg && arg.class && (arg.func || arg.parameters);
|
|
13
|
-
}
|
package/src/model-client.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { DomainClient } from "./domain-client";
|
|
2
|
-
import { ClientException } from "./exceptions/client-exception";
|
|
3
|
-
import { IModelDescription } from "./i-model-description";
|
|
4
|
-
import { ModelFactory } from "./model-factory";
|
|
5
|
-
import { PortalMap } from "./types/portal-map";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export abstract class ModelClient<T> {
|
|
9
|
-
private readonly domainClient: DomainClient | null;
|
|
10
|
-
private readonly modelFactory: ModelFactory<T>;
|
|
11
|
-
|
|
12
|
-
constructor(
|
|
13
|
-
baseUrl?: string,
|
|
14
|
-
apiKey?: string,
|
|
15
|
-
seed?: number,
|
|
16
|
-
portalMap?: PortalMap
|
|
17
|
-
) {
|
|
18
|
-
if (!baseUrl || !seed) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
this.modelFactory = new ModelFactory<T>(portalMap);
|
|
23
|
-
this.domainClient = new DomainClient(
|
|
24
|
-
baseUrl,
|
|
25
|
-
apiKey,
|
|
26
|
-
this.getModelName(),
|
|
27
|
-
this.getVersion(),
|
|
28
|
-
this.isPublic(),
|
|
29
|
-
seed
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public async fetch(id: number): Promise<T> {
|
|
34
|
-
const modelDescriptions = await this.fetchDescription(id);
|
|
35
|
-
return this.modelFactory.fromDescription(modelDescriptions);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public async fetchDescription(id: number): Promise<IModelDescription> {
|
|
39
|
-
if (!this.domainClient) {
|
|
40
|
-
throw new ClientException(
|
|
41
|
-
"Offline mode active: did you provide all parameters " +
|
|
42
|
-
"in the constructor?"
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
const result = await this.domainClient.doRequest([id]);
|
|
46
|
-
return result[0];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
public async fetchMultiple(ids: number[]): Promise<T[]> {
|
|
50
|
-
const descriptions = await this.fetchMultipleDescriptions(ids);
|
|
51
|
-
return this.modelFactory.fromDescriptions(descriptions);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public async fetchMultipleDescriptions(ids: number[]): Promise<IModelDescription[]> {
|
|
55
|
-
if (!this.domainClient) {
|
|
56
|
-
throw new ClientException(
|
|
57
|
-
'Offline mode active: did you provide all parameters ' +
|
|
58
|
-
'in the constructor?'
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
return await this.domainClient.doRequest(ids);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public fromDescription(description: IModelDescription): T {
|
|
65
|
-
return this.modelFactory.fromDescription(description);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
public fromDescriptions(descriptions: IModelDescription[]): T[] {
|
|
69
|
-
return this.modelFactory.fromDescriptions(descriptions);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
protected abstract getModelName(): string;
|
|
73
|
-
|
|
74
|
-
protected abstract getVersion(): string;
|
|
75
|
-
|
|
76
|
-
public abstract isPublic(): boolean;
|
|
77
|
-
}
|