ducimusipsa 1.0.0
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/.prettierignore +2 -0
- package/.travis.yml +34 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +3 -0
- package/demos/ago-node-cli/README.md +29 -0
- package/demos/ago-node-cli/ago.js +32 -0
- package/demos/ago-node-cli/index.js +11 -0
- package/demos/ago-node-cli/lib/item-export-command.js +48 -0
- package/demos/ago-node-cli/lib/item-search-command.js +35 -0
- package/demos/ago-node-cli/package-lock.json +180 -0
- package/demos/ago-node-cli/package.json +30 -0
- package/demos/attachments/README.md +5 -0
- package/demos/attachments/index.html +164 -0
- package/demos/attachments/package-lock.json +182 -0
- package/demos/attachments/package.json +18 -0
- package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
- package/demos/batch-geocoder-node/README.md +15 -0
- package/demos/batch-geocoder-node/batch-geocode.js +115 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package-lock.json +109 -0
- package/demos/batch-geocoder-node/package.json +38 -0
- package/demos/express/README.md +15 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package-lock.json +428 -0
- package/demos/express/package.json +18 -0
- package/demos/express/server.js +33 -0
- package/demos/feature-service-browser/README.md +6 -0
- package/demos/feature-service-browser/index.html +122 -0
- package/demos/feature-service-browser/package-lock.json +182 -0
- package/demos/feature-service-browser/package.json +18 -0
- package/demos/geocoder-browser/README.md +10 -0
- package/demos/geocoder-browser/config.js.template +1 -0
- package/demos/geocoder-browser/index.html +131 -0
- package/demos/geocoder-browser/package-lock.json +182 -0
- package/demos/geocoder-browser/package.json +19 -0
- package/demos/geocoder-browser/post-sign-in.html +25 -0
- package/demos/jsapi-integration/README.md +25 -0
- package/demos/jsapi-integration/config.js +6 -0
- package/demos/jsapi-integration/index.html +85 -0
- package/demos/jsapi-integration/package-lock.json +184 -0
- package/demos/jsapi-integration/package.json +19 -0
- package/demos/oauth2-browser/README.md +14 -0
- package/demos/oauth2-browser/authenticate.html +32 -0
- package/demos/oauth2-browser/config.js.template +6 -0
- package/demos/oauth2-browser/index.html +202 -0
- package/demos/oauth2-browser/logo.svg +4 -0
- package/demos/oauth2-browser/package-lock.json +163 -0
- package/demos/oauth2-browser/package.json +18 -0
- package/demos/oauth2-browser/style.css +36 -0
- package/demos/oauth2-browser-retry/README.md +25 -0
- package/demos/oauth2-browser-retry/authenticate.html +21 -0
- package/demos/oauth2-browser-retry/index.html +116 -0
- package/demos/oauth2-browser-retry/logo.svg +4 -0
- package/demos/vue/.env.example +11 -0
- package/demos/vue/.eslintrc.js +17 -0
- package/demos/vue/.postcssrc.js +5 -0
- package/demos/vue/README.md +17 -0
- package/demos/vue/babel.config.js +3 -0
- package/demos/vue/package-lock.json +11323 -0
- package/demos/vue/package.json +33 -0
- package/demos/vue/public/favicon.ico +0 -0
- package/demos/vue/public/index.html +24 -0
- package/demos/vue/src/assets/logo.svg +29 -0
- package/demos/vue/src/components/App.vue +308 -0
- package/demos/vue/src/components/Authenticate.vue +65 -0
- package/demos/vue/src/components/Loader.vue +230 -0
- package/demos/vue/src/main.js +92 -0
- package/docs/FAQ.md +28 -0
- package/docs/HISTORY.md +62 -0
- package/docs/acetate.config.js +223 -0
- package/docs/build-typedoc.js +303 -0
- package/docs/src/_layout.html +82 -0
- package/docs/src/api/_declaration.html +496 -0
- package/docs/src/api/_layout.html +127 -0
- package/docs/src/api/_package.html +13 -0
- package/docs/src/api/index.html +23 -0
- package/docs/src/guides/_layout.html +24 -0
- package/docs/src/guides/amd-requirejs-dojo.md +40 -0
- package/docs/src/guides/babel-and-rollup.md +30 -0
- package/docs/src/guides/babel-and-webpack.md +30 -0
- package/docs/src/guides/browser-authentication.md +41 -0
- package/docs/src/guides/browserify.md +9 -0
- package/docs/src/guides/cli-authentication.md +9 -0
- package/docs/src/guides/client-server-authentication.md +9 -0
- package/docs/src/guides/from-a-cdn.md +36 -0
- package/docs/src/guides/index.md +52 -0
- package/docs/src/guides/node.md +70 -0
- package/docs/src/guides/package-overview.md +8 -0
- package/docs/src/guides/server-authentication.md +9 -0
- package/docs/src/guides/typescript-and-webpack.md +9 -0
- package/docs/src/img/icons.png +0 -0
- package/docs/src/img/icons@2x.png +0 -0
- package/docs/src/index.html +12 -0
- package/docs/src/js/api-search.js +112 -0
- package/docs/src/js/nav-toggle.js +41 -0
- package/docs/src/sass/_highlight.scss +96 -0
- package/docs/src/sass/_icons.scss +157 -0
- package/docs/src/sass/style.scss +169 -0
- package/jasmine.json +7 -0
- package/karma.conf.js +100 -0
- package/lerna.json +8 -0
- package/notes/README.md +88 -0
- package/package.json +129 -0
- package/packages/arcgis-rest-auth/README.md +67 -0
- package/packages/arcgis-rest-auth/package-lock.json +11 -0
- package/packages/arcgis-rest-auth/package.json +53 -0
- package/packages/arcgis-rest-auth/src/ApplicationSession.ts +108 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +880 -0
- package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
- package/packages/arcgis-rest-auth/src/fetch-token.ts +52 -0
- package/packages/arcgis-rest-auth/src/generate-token.ts +39 -0
- package/packages/arcgis-rest-auth/src/index.ts +8 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +1005 -0
- package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
- package/packages/arcgis-rest-auth/test/generateToken.test.ts +130 -0
- package/packages/arcgis-rest-auth/test/utils.ts +14 -0
- package/packages/arcgis-rest-auth/tsconfig.json +6 -0
- package/packages/arcgis-rest-common/README.md +57 -0
- package/packages/arcgis-rest-common/package-lock.json +11 -0
- package/packages/arcgis-rest-common/package.json +41 -0
- package/packages/arcgis-rest-common/src/index.ts +10 -0
- package/packages/arcgis-rest-common/src/types/feature.ts +14 -0
- package/packages/arcgis-rest-common/src/types/geometry.ts +47 -0
- package/packages/arcgis-rest-common/src/types/symbol.ts +21 -0
- package/packages/arcgis-rest-common/src/util/location.ts +19 -0
- package/packages/arcgis-rest-common/test/location.test.ts +73 -0
- package/packages/arcgis-rest-common/tsconfig.json +6 -0
- package/packages/arcgis-rest-common-types/README.md +64 -0
- package/packages/arcgis-rest-common-types/package.json +40 -0
- package/packages/arcgis-rest-common-types/src/group.ts +54 -0
- package/packages/arcgis-rest-common-types/src/index.ts +469 -0
- package/packages/arcgis-rest-common-types/src/item.ts +47 -0
- package/packages/arcgis-rest-common-types/src/webmap.ts +1267 -0
- package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
- package/packages/arcgis-rest-feature-service/README.md +73 -0
- package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service/package.json +53 -0
- package/packages/arcgis-rest-feature-service/src/add.ts +90 -0
- package/packages/arcgis-rest-feature-service/src/addAttachment.ts +64 -0
- package/packages/arcgis-rest-feature-service/src/decodeValues.ts +129 -0
- package/packages/arcgis-rest-feature-service/src/delete.ts +97 -0
- package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +67 -0
- package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
- package/packages/arcgis-rest-feature-service/src/getLayer.ts +27 -0
- package/packages/arcgis-rest-feature-service/src/helpers.ts +50 -0
- package/packages/arcgis-rest-feature-service/src/index.ts +14 -0
- package/packages/arcgis-rest-feature-service/src/query.ts +183 -0
- package/packages/arcgis-rest-feature-service/src/queryRelated.ts +94 -0
- package/packages/arcgis-rest-feature-service/src/update.ts +90 -0
- package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +73 -0
- package/packages/arcgis-rest-feature-service/test/attachments.test.ts +203 -0
- package/packages/arcgis-rest-feature-service/test/crud.test.ts +263 -0
- package/packages/arcgis-rest-feature-service/test/decodeValues.test.ts +67 -0
- package/packages/arcgis-rest-feature-service/test/getLayer.test.ts +31 -0
- package/packages/arcgis-rest-feature-service/test/mocks/cvdQueryResponse.ts +225 -0
- package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +281 -0
- package/packages/arcgis-rest-feature-service/test/mocks/fields.ts +779 -0
- package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
- package/packages/arcgis-rest-feature-service/test/mocks/service.ts +259 -0
- package/packages/arcgis-rest-feature-service/test/query.test.ts +140 -0
- package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
- package/packages/arcgis-rest-feature-service-admin/README.md +69 -0
- package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service-admin/package.json +56 -0
- package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +74 -0
- package/packages/arcgis-rest-feature-service-admin/src/create.ts +207 -0
- package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
- package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +353 -0
- package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/layerDefinition.ts +79 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
- package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
- package/packages/arcgis-rest-geocoder/README.md +83 -0
- package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
- package/packages/arcgis-rest-geocoder/package.json +55 -0
- package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
- package/packages/arcgis-rest-geocoder/src/geocode.ts +130 -0
- package/packages/arcgis-rest-geocoder/src/helpers.ts +80 -0
- package/packages/arcgis-rest-geocoder/src/index.ts +8 -0
- package/packages/arcgis-rest-geocoder/src/reverse.ts +83 -0
- package/packages/arcgis-rest-geocoder/src/suggest.ts +69 -0
- package/packages/arcgis-rest-geocoder/test/bulk.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/geocode.test.ts +176 -0
- package/packages/arcgis-rest-geocoder/test/helpers.test.ts +111 -0
- package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +629 -0
- package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
- package/packages/arcgis-rest-geocoder/test/suggest.test.ts +98 -0
- package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
- package/packages/arcgis-rest-groups/README.md +67 -0
- package/packages/arcgis-rest-groups/package-lock.json +11 -0
- package/packages/arcgis-rest-groups/package.json +55 -0
- package/packages/arcgis-rest-groups/src/create.ts +34 -0
- package/packages/arcgis-rest-groups/src/get.ts +95 -0
- package/packages/arcgis-rest-groups/src/helpers.ts +27 -0
- package/packages/arcgis-rest-groups/src/index.ts +11 -0
- package/packages/arcgis-rest-groups/src/notification.ts +77 -0
- package/packages/arcgis-rest-groups/src/protect.ts +40 -0
- package/packages/arcgis-rest-groups/src/remove.ts +23 -0
- package/packages/arcgis-rest-groups/src/search.ts +64 -0
- package/packages/arcgis-rest-groups/src/update.ts +36 -0
- package/packages/arcgis-rest-groups/test/crud.test.ts +134 -0
- package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
- package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
- package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
- package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
- package/packages/arcgis-rest-groups/test/search.test.ts +85 -0
- package/packages/arcgis-rest-groups/tsconfig.json +6 -0
- package/packages/arcgis-rest-items/README.md +69 -0
- package/packages/arcgis-rest-items/package-lock.json +11 -0
- package/packages/arcgis-rest-items/package.json +55 -0
- package/packages/arcgis-rest-items/src/add.ts +103 -0
- package/packages/arcgis-rest-items/src/create.ts +110 -0
- package/packages/arcgis-rest-items/src/get.ts +79 -0
- package/packages/arcgis-rest-items/src/helpers.ts +147 -0
- package/packages/arcgis-rest-items/src/index.ts +11 -0
- package/packages/arcgis-rest-items/src/protect.ts +38 -0
- package/packages/arcgis-rest-items/src/remove.ts +58 -0
- package/packages/arcgis-rest-items/src/search.ts +78 -0
- package/packages/arcgis-rest-items/src/update.ts +134 -0
- package/packages/arcgis-rest-items/test/add.test.ts +256 -0
- package/packages/arcgis-rest-items/test/create.test.ts +371 -0
- package/packages/arcgis-rest-items/test/get.test.ts +181 -0
- package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
- package/packages/arcgis-rest-items/test/mocks/item.ts +35 -0
- package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
- package/packages/arcgis-rest-items/test/mocks/search.ts +62 -0
- package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
- package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
- package/packages/arcgis-rest-items/test/search.test.ts +159 -0
- package/packages/arcgis-rest-items/test/update.test.ts +450 -0
- package/packages/arcgis-rest-items/tsconfig.json +6 -0
- package/packages/arcgis-rest-request/README.md +68 -0
- package/packages/arcgis-rest-request/package-lock.json +11 -0
- package/packages/arcgis-rest-request/package.json +45 -0
- package/packages/arcgis-rest-request/src/index.ts +15 -0
- package/packages/arcgis-rest-request/src/request.ts +358 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
- package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/append-custom-params.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +34 -0
- package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
- package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
- package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
- package/packages/arcgis-rest-request/src/utils/params.ts +52 -0
- package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
- package/packages/arcgis-rest-request/src/utils/retryAuthError.ts +9 -0
- package/packages/arcgis-rest-request/src/utils/warn.ts +11 -0
- package/packages/arcgis-rest-request/test/mocks/errors.ts +68 -0
- package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
- package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
- package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
- package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
- package/packages/arcgis-rest-request/test/request.test.ts +323 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
- package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
- package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
- package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
- package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
- package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -0
- package/packages/arcgis-rest-request/tsconfig.json +6 -0
- package/packages/arcgis-rest-routing/README.md +71 -0
- package/packages/arcgis-rest-routing/package-lock.json +11 -0
- package/packages/arcgis-rest-routing/package.json +54 -0
- package/packages/arcgis-rest-routing/src/helpers.ts +16 -0
- package/packages/arcgis-rest-routing/src/index.ts +4 -0
- package/packages/arcgis-rest-routing/src/solveRoute.ts +102 -0
- package/packages/arcgis-rest-routing/test/mocks/responses.ts +825 -0
- package/packages/arcgis-rest-routing/test/solveRoute.test.ts +267 -0
- package/packages/arcgis-rest-routing/tsconfig.json +6 -0
- package/packages/arcgis-rest-sharing/README.md +70 -0
- package/packages/arcgis-rest-sharing/package-lock.json +11 -0
- package/packages/arcgis-rest-sharing/package.json +60 -0
- package/packages/arcgis-rest-sharing/src/access.ts +85 -0
- package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
- package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
- package/packages/arcgis-rest-sharing/src/index.ts +5 -0
- package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
- package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
- package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
- package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -0
- package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
- package/packages/arcgis-rest-users/README.md +74 -0
- package/packages/arcgis-rest-users/package-lock.json +11 -0
- package/packages/arcgis-rest-users/package.json +54 -0
- package/packages/arcgis-rest-users/src/get.ts +69 -0
- package/packages/arcgis-rest-users/src/index.ts +6 -0
- package/packages/arcgis-rest-users/src/invitation.ts +166 -0
- package/packages/arcgis-rest-users/src/notification.ts +73 -0
- package/packages/arcgis-rest-users/test/get.test.ts +99 -0
- package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
- package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
- package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
- package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
- package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
- package/packages/arcgis-rest-users/tsconfig.json +6 -0
- package/support/changelog.js +394 -0
- package/support/deploy-doc-site.js +16 -0
- package/support/dev.sh +6 -0
- package/support/publish.sh +43 -0
- package/support/test-helpers.js +8 -0
- package/tsconfig.json +69 -0
- package/tslint.json +16 -0
- package/umd-base-profile.js +82 -0
- package/umd-production-profile.js +13 -0
@@ -0,0 +1,358 @@
|
|
1
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { encodeFormData } from "./utils/encode-form-data";
|
5
|
+
import { encodeQueryString } from "./utils/encode-query-string";
|
6
|
+
import { requiresFormData } from "./utils/process-params";
|
7
|
+
import { ArcGISRequestError } from "./utils/ArcGISRequestError";
|
8
|
+
import { IRetryAuthError } from "./utils/retryAuthError";
|
9
|
+
import { HTTPMethods, IParams, ITokenRequestOptions } from "./utils/params";
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Authentication can be supplied to `request` via [`UserSession`](../../auth/UserSession/) or [`ApplicationSession`](../../auth/ApplicationSession/). Both classes extend `IAuthenticationManager`.
|
13
|
+
* ```js
|
14
|
+
* const session = new UserSession({
|
15
|
+
* username: "jsmith",
|
16
|
+
* password: "123456",
|
17
|
+
* // optional
|
18
|
+
* portal: "https://[yourserver]/arcgis/sharing/rest"
|
19
|
+
* })
|
20
|
+
*
|
21
|
+
* request(url, { authentication: session })
|
22
|
+
* ```
|
23
|
+
*/
|
24
|
+
export interface IAuthenticationManager {
|
25
|
+
/**
|
26
|
+
* Defaults to 'https://www.arcgis.com/sharing/rest'.
|
27
|
+
*/
|
28
|
+
portal: string;
|
29
|
+
getToken(url: string, requestOptions?: ITokenRequestOptions): Promise<string>;
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* Options for the `request()` method.
|
34
|
+
*/
|
35
|
+
export interface IRequestOptions {
|
36
|
+
/**
|
37
|
+
* Additional parameters to pass in the request.
|
38
|
+
*/
|
39
|
+
params?: IParams;
|
40
|
+
|
41
|
+
/**
|
42
|
+
* The HTTP method to send the request with.
|
43
|
+
*/
|
44
|
+
httpMethod?: HTTPMethods;
|
45
|
+
|
46
|
+
/**
|
47
|
+
* The instance of `IAuthenticationManager` to use to authenticate this request.
|
48
|
+
*/
|
49
|
+
authentication?: IAuthenticationManager;
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Base url for the portal you want to make the request to. Defaults to 'https://www.arcgis.com/sharing/rest'.
|
53
|
+
*/
|
54
|
+
portal?: string;
|
55
|
+
|
56
|
+
/**
|
57
|
+
* The implementation of `fetch` to use. Defaults to a global `fetch`.
|
58
|
+
*/
|
59
|
+
fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
|
60
|
+
|
61
|
+
/**
|
62
|
+
* If the length of a GET request's URL exceeds `maxUrlLength` the request will use POST instead.
|
63
|
+
*/
|
64
|
+
maxUrlLength?: number;
|
65
|
+
}
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Generic method for making HTTP requests to ArcGIS REST API endpoints.
|
69
|
+
*
|
70
|
+
* ```js
|
71
|
+
* import { request } from '@esri/arcgis-rest-request';
|
72
|
+
*
|
73
|
+
* request('https://www.arcgis.com/sharing/rest')
|
74
|
+
* .then((response) => {
|
75
|
+
* console.log(response.currentVersion); // => 5.2
|
76
|
+
* });
|
77
|
+
* ```
|
78
|
+
*
|
79
|
+
* ```js
|
80
|
+
* import { request, HTTPMethods } from '@esri/arcgis-rest-request';
|
81
|
+
*
|
82
|
+
* request('https://www.arcgis.com/sharing/rest', {
|
83
|
+
* httpMethod: "GET"
|
84
|
+
* }).then((response) => {
|
85
|
+
* console.log(response.currentVersion); // => 5.2
|
86
|
+
* });
|
87
|
+
* ```
|
88
|
+
*
|
89
|
+
* ```js
|
90
|
+
* import { request, HTTPMethods } from '@esri/arcgis-rest-request';
|
91
|
+
*
|
92
|
+
* request('https://www.arcgis.com/sharing/rest/search', {
|
93
|
+
* params: { q: 'parks' }
|
94
|
+
* }).then((response) => {
|
95
|
+
* console.log(response.total); // => 78379
|
96
|
+
* });
|
97
|
+
* ```
|
98
|
+
*
|
99
|
+
* @param url - The URL of the ArcGIS REST API endpoint.
|
100
|
+
* @param requestOptions - Options for the request, including parameters relevant to the endpoint.
|
101
|
+
* @returns A Promise that will resolve with the data from the response.
|
102
|
+
*/
|
103
|
+
export function request(
|
104
|
+
url: string,
|
105
|
+
requestOptions: IRequestOptions = { params: { f: "json" } }
|
106
|
+
): Promise<any> {
|
107
|
+
const options: IRequestOptions = {
|
108
|
+
httpMethod: "POST",
|
109
|
+
...requestOptions
|
110
|
+
};
|
111
|
+
|
112
|
+
const missingGlobals: string[] = [];
|
113
|
+
const recommendedPackages: string[] = [];
|
114
|
+
|
115
|
+
// don't check for a global fetch if a custom implementation was passed through
|
116
|
+
if (!options.fetch && typeof fetch !== "undefined") {
|
117
|
+
options.fetch = fetch.bind(Function("return this")());
|
118
|
+
} else {
|
119
|
+
missingGlobals.push("`fetch`");
|
120
|
+
recommendedPackages.push("`isomorphic-fetch`");
|
121
|
+
}
|
122
|
+
|
123
|
+
if (typeof Promise === "undefined") {
|
124
|
+
missingGlobals.push("`Promise`");
|
125
|
+
recommendedPackages.push("`es6-promise`");
|
126
|
+
}
|
127
|
+
|
128
|
+
if (typeof FormData === "undefined") {
|
129
|
+
missingGlobals.push("`FormData`");
|
130
|
+
recommendedPackages.push("`isomorphic-form-data`");
|
131
|
+
}
|
132
|
+
|
133
|
+
if (
|
134
|
+
!options.fetch ||
|
135
|
+
typeof Promise === "undefined" ||
|
136
|
+
typeof FormData === "undefined"
|
137
|
+
) {
|
138
|
+
throw new Error(
|
139
|
+
`\`arcgis-rest-request\` requires global variables for \`fetch\`, \`Promise\` and \`FormData\` to be present in the global scope. You are missing ${missingGlobals.join(
|
140
|
+
", "
|
141
|
+
)}. We recommend installing the ${recommendedPackages.join(
|
142
|
+
", "
|
143
|
+
)} modules at the root of your application to add these to the global scope. See https://bit.ly/2KNwWaJ for more info.`
|
144
|
+
);
|
145
|
+
}
|
146
|
+
|
147
|
+
const { httpMethod, authentication } = options;
|
148
|
+
|
149
|
+
const params: IParams = {
|
150
|
+
...{ f: "json" },
|
151
|
+
...requestOptions.params
|
152
|
+
};
|
153
|
+
|
154
|
+
const fetchOptions: RequestInit = {
|
155
|
+
method: httpMethod,
|
156
|
+
// ensures behavior mimics XMLHttpRequest. needed to support sending IWA cookies
|
157
|
+
credentials: "same-origin"
|
158
|
+
};
|
159
|
+
|
160
|
+
return (authentication
|
161
|
+
? authentication.getToken(url, {
|
162
|
+
fetch: options.fetch
|
163
|
+
})
|
164
|
+
: Promise.resolve("")
|
165
|
+
)
|
166
|
+
.then(token => {
|
167
|
+
if (token.length) {
|
168
|
+
params.token = token;
|
169
|
+
}
|
170
|
+
|
171
|
+
if (fetchOptions.method === "GET") {
|
172
|
+
// encode the parameters into the query string
|
173
|
+
const queryParams = encodeQueryString(params);
|
174
|
+
// dont append a '?' unless parameters are actually present
|
175
|
+
const urlWithQueryString =
|
176
|
+
queryParams === "" ? url : url + "?" + encodeQueryString(params);
|
177
|
+
|
178
|
+
if (
|
179
|
+
options.maxUrlLength &&
|
180
|
+
urlWithQueryString.length > options.maxUrlLength
|
181
|
+
) {
|
182
|
+
// the consumer specified a maximum length for URLs
|
183
|
+
// and this would exceed it, so use post instead
|
184
|
+
fetchOptions.method = "POST";
|
185
|
+
} else {
|
186
|
+
// just use GET
|
187
|
+
url = urlWithQueryString;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
|
191
|
+
if (fetchOptions.method === "POST") {
|
192
|
+
fetchOptions.body = encodeFormData(params);
|
193
|
+
}
|
194
|
+
|
195
|
+
fetchOptions.headers = {};
|
196
|
+
|
197
|
+
/* istanbul ignore next - karma reports coverage on browser tests only */
|
198
|
+
if (typeof window === "undefined") {
|
199
|
+
fetchOptions.headers["referer"] = "@esri/arcgis-rest";
|
200
|
+
}
|
201
|
+
|
202
|
+
/* istanbul ignore else blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */
|
203
|
+
if (!requiresFormData(params)) {
|
204
|
+
fetchOptions.headers["Content-Type"] =
|
205
|
+
"application/x-www-form-urlencoded";
|
206
|
+
}
|
207
|
+
|
208
|
+
return options.fetch(url, fetchOptions);
|
209
|
+
})
|
210
|
+
.then(response => {
|
211
|
+
if (!response.ok) {
|
212
|
+
// server responded w/ an actual error (404, 500, etc)
|
213
|
+
const { status, statusText } = response;
|
214
|
+
throw new ArcGISRequestError(
|
215
|
+
statusText,
|
216
|
+
`HTTP ${status}`,
|
217
|
+
response,
|
218
|
+
url,
|
219
|
+
options
|
220
|
+
);
|
221
|
+
}
|
222
|
+
switch (params.f) {
|
223
|
+
case "json":
|
224
|
+
return response.json();
|
225
|
+
case "geojson":
|
226
|
+
return response.json();
|
227
|
+
case "html":
|
228
|
+
return response.text();
|
229
|
+
case "text":
|
230
|
+
return response.text();
|
231
|
+
/* istanbul ignore next blob responses are difficult to make cross platform we will just have to trust that isomorphic fetch will do its job */
|
232
|
+
case "image":
|
233
|
+
return response.blob();
|
234
|
+
/* istanbul ignore next */
|
235
|
+
case "zip":
|
236
|
+
return response.blob();
|
237
|
+
/* istanbul ignore next */
|
238
|
+
default:
|
239
|
+
// hopefully we never need to handle JSON payloads when no f= parameter is set
|
240
|
+
return response.blob();
|
241
|
+
}
|
242
|
+
})
|
243
|
+
.then(data => {
|
244
|
+
if (params.f === "json" || params.f === "geojson") {
|
245
|
+
return checkForErrors(data, url, params, options);
|
246
|
+
} else {
|
247
|
+
return data;
|
248
|
+
}
|
249
|
+
});
|
250
|
+
}
|
251
|
+
|
252
|
+
export class ArcGISAuthError extends ArcGISRequestError {
|
253
|
+
/**
|
254
|
+
* Create a new `ArcGISAuthError` object.
|
255
|
+
*
|
256
|
+
* @param message - The error message from the API
|
257
|
+
* @param code - The error code from the API
|
258
|
+
* @param response - The original response from the API that caused the error
|
259
|
+
* @param url - The original url of the request
|
260
|
+
* @param options - The original options of the request
|
261
|
+
*/
|
262
|
+
constructor(
|
263
|
+
message = "AUTHENTICATION_ERROR",
|
264
|
+
code: string | number = "AUTHENTICATION_ERROR_CODE",
|
265
|
+
response?: any,
|
266
|
+
url?: string,
|
267
|
+
options?: IRequestOptions
|
268
|
+
) {
|
269
|
+
super(message, code, response, url, options);
|
270
|
+
this.name = "ArcGISAuthError";
|
271
|
+
this.message =
|
272
|
+
code === "AUTHENTICATION_ERROR_CODE" ? message : `${code}: ${message}`;
|
273
|
+
}
|
274
|
+
|
275
|
+
retry(getSession: IRetryAuthError, retryLimit = 3) {
|
276
|
+
let tries = 0;
|
277
|
+
|
278
|
+
const retryRequest = (resolve: any, reject: any) => {
|
279
|
+
getSession(this.url, this.options)
|
280
|
+
.then(session => {
|
281
|
+
const newOptions = {
|
282
|
+
...this.options,
|
283
|
+
...{ authentication: session }
|
284
|
+
};
|
285
|
+
|
286
|
+
tries = tries + 1;
|
287
|
+
return request(this.url, newOptions);
|
288
|
+
})
|
289
|
+
.then(response => {
|
290
|
+
resolve(response);
|
291
|
+
})
|
292
|
+
.catch(e => {
|
293
|
+
if (e.name === "ArcGISAuthError" && tries < retryLimit) {
|
294
|
+
retryRequest(resolve, reject);
|
295
|
+
} else if (e.name === "ArcGISAuthError" && tries >= retryLimit) {
|
296
|
+
reject(this);
|
297
|
+
} else {
|
298
|
+
reject(e);
|
299
|
+
}
|
300
|
+
});
|
301
|
+
};
|
302
|
+
|
303
|
+
return new Promise((resolve, reject) => {
|
304
|
+
retryRequest(resolve, reject);
|
305
|
+
});
|
306
|
+
}
|
307
|
+
}
|
308
|
+
|
309
|
+
/**
|
310
|
+
* Checks for errors in a JSON response from the ArcGIS REST API. If there are no errors, it will return the `data` passed in. If there is an error, it will throw an `ArcGISRequestError` or `ArcGISAuthError`.
|
311
|
+
*
|
312
|
+
* @param data The response JSON to check for errors.
|
313
|
+
* @param url The url of the original request
|
314
|
+
* @param params The parameters of the original request
|
315
|
+
* @param options The options of the original request
|
316
|
+
* @returns The data that was passed in the `data` parameter
|
317
|
+
*/
|
318
|
+
export function checkForErrors(
|
319
|
+
response: any,
|
320
|
+
url?: string,
|
321
|
+
params?: IParams,
|
322
|
+
options?: IRequestOptions
|
323
|
+
): any {
|
324
|
+
// this is an error message from billing.arcgis.com backend
|
325
|
+
if (response.code >= 400) {
|
326
|
+
const { message, code } = response;
|
327
|
+
throw new ArcGISRequestError(message, code, response, url, options);
|
328
|
+
}
|
329
|
+
|
330
|
+
// error from ArcGIS Online or an ArcGIS Portal or server instance.
|
331
|
+
if (response.error) {
|
332
|
+
const { message, code, messageCode } = response.error;
|
333
|
+
const errorCode = messageCode || code || "UNKNOWN_ERROR_CODE";
|
334
|
+
|
335
|
+
if (code === 498 || code === 499 || messageCode === "GWM_0003") {
|
336
|
+
throw new ArcGISAuthError(message, errorCode, response, url, options);
|
337
|
+
}
|
338
|
+
|
339
|
+
throw new ArcGISRequestError(message, errorCode, response, url, options);
|
340
|
+
}
|
341
|
+
|
342
|
+
// error from a status check
|
343
|
+
if (response.status === "failed" || response.status === "failure") {
|
344
|
+
let message: string;
|
345
|
+
let code: string = "UNKNOWN_ERROR_CODE";
|
346
|
+
|
347
|
+
try {
|
348
|
+
message = JSON.parse(response.statusMessage).message;
|
349
|
+
code = JSON.parse(response.statusMessage).code;
|
350
|
+
} catch (e) {
|
351
|
+
message = response.statusMessage || response.message;
|
352
|
+
}
|
353
|
+
|
354
|
+
throw new ArcGISRequestError(message, code, response, url, options);
|
355
|
+
}
|
356
|
+
|
357
|
+
return response;
|
358
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { IRequestOptions } from "../request";
|
5
|
+
|
6
|
+
// TypeScript 2.1 no longer allows you to extend built in types. See https://github.com/Microsoft/TypeScript/issues/12790#issuecomment-265981442
|
7
|
+
// and https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
8
|
+
//
|
9
|
+
// This code is from MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types.
|
10
|
+
export class ArcGISRequestError {
|
11
|
+
/**
|
12
|
+
* The name of this error. Will always be `"ArcGISRequestError"` to conform with the [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) class.
|
13
|
+
*/
|
14
|
+
name: string;
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Formatted error message. See the [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) class for more details.
|
18
|
+
*/
|
19
|
+
message: string;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* The errror message return from the request.
|
23
|
+
*/
|
24
|
+
originalMessage: string;
|
25
|
+
|
26
|
+
/**
|
27
|
+
* The error code returned from the request.
|
28
|
+
*/
|
29
|
+
code: string | number;
|
30
|
+
|
31
|
+
/**
|
32
|
+
* The original JSON response the caused the error.
|
33
|
+
*/
|
34
|
+
response: any;
|
35
|
+
|
36
|
+
/**
|
37
|
+
* The URL of the original request that caused the error
|
38
|
+
*/
|
39
|
+
url: string;
|
40
|
+
|
41
|
+
/**
|
42
|
+
* The options of the original request that caused the error
|
43
|
+
*/
|
44
|
+
options: IRequestOptions;
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Create a new `ArcGISRequestError` object.
|
48
|
+
*
|
49
|
+
* @param message - The error message from the API
|
50
|
+
* @param code - The error code from the API
|
51
|
+
* @param response - The original response from the API that caused the error
|
52
|
+
* @param url - The original url of the request
|
53
|
+
* @param options - The original options and parameters of the request
|
54
|
+
*/
|
55
|
+
constructor(
|
56
|
+
message?: string,
|
57
|
+
code?: string | number,
|
58
|
+
response?: any,
|
59
|
+
url?: string,
|
60
|
+
options?: IRequestOptions
|
61
|
+
) {
|
62
|
+
message = message || "UNKNOWN_ERROR";
|
63
|
+
code = code || "UNKNOWN_ERROR_CODE";
|
64
|
+
|
65
|
+
this.name = "ArcGISRequestError";
|
66
|
+
this.message =
|
67
|
+
code === "UNKNOWN_ERROR_CODE" ? message : `${code}: ${message}`;
|
68
|
+
this.originalMessage = message;
|
69
|
+
this.code = code;
|
70
|
+
this.response = response;
|
71
|
+
this.url = url;
|
72
|
+
this.options = options;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
ArcGISRequestError.prototype = Object.create(Error.prototype);
|
76
|
+
ArcGISRequestError.prototype.constructor = ArcGISRequestError;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Enum describing the different errors that might be thrown by a request.
|
6
|
+
*
|
7
|
+
* ```ts
|
8
|
+
* import { request, ErrorTypes } from '@esri/arcgis-rest-request';
|
9
|
+
*
|
10
|
+
* request("...").catch((e) => {
|
11
|
+
* switch(e.name) {
|
12
|
+
* case ErrorType.ArcGISRequestError:
|
13
|
+
* // handle a general error from the API
|
14
|
+
* break;
|
15
|
+
*
|
16
|
+
* case ErrorType.ArcGISAuthError:
|
17
|
+
* // handle an authentication error
|
18
|
+
* break;
|
19
|
+
*
|
20
|
+
* default:
|
21
|
+
* // handle some other error (usually a network error)
|
22
|
+
* }
|
23
|
+
* });
|
24
|
+
* ```
|
25
|
+
*/
|
26
|
+
export enum ErrorTypes {
|
27
|
+
ArcGISRequestError = "ArcGISRequestError",
|
28
|
+
ArcGISAuthError = "ArcGISAuthError"
|
29
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { IRequestOptions } from "../request";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Helper for methods with lots of first order request options to pass them through as request parameters.
|
8
|
+
*/
|
9
|
+
export function appendCustomParams(
|
10
|
+
oldOptions: IRequestOptions,
|
11
|
+
newOptions: IRequestOptions
|
12
|
+
) {
|
13
|
+
// only pass query parameters through in the request, not generic IRequestOptions props
|
14
|
+
Object.keys(oldOptions).forEach(function(key: string) {
|
15
|
+
if (
|
16
|
+
key !== "url" &&
|
17
|
+
key !== "params" &&
|
18
|
+
key !== "authentication" &&
|
19
|
+
key !== "httpMethod" &&
|
20
|
+
key !== "fetch" &&
|
21
|
+
key !== "portal" &&
|
22
|
+
key !== "maxUrlLength" &&
|
23
|
+
key !== "endpoint" &&
|
24
|
+
key !== "decodeValues"
|
25
|
+
) {
|
26
|
+
newOptions.params[key] = (oldOptions as { [key: string]: any })[key];
|
27
|
+
}
|
28
|
+
});
|
29
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { processParams, requiresFormData } from "./process-params";
|
5
|
+
import { encodeQueryString } from "./encode-query-string";
|
6
|
+
/**
|
7
|
+
* Encodes parameters in a [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object in browsers or in a [FormData](https://github.com/form-data/form-data) in Node.js
|
8
|
+
*
|
9
|
+
* @param params An object to be encoded.
|
10
|
+
* @returns The complete [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object.
|
11
|
+
*/
|
12
|
+
export function encodeFormData(params: any): FormData | string {
|
13
|
+
const useFormData = requiresFormData(params);
|
14
|
+
const newParams = processParams(params);
|
15
|
+
if (useFormData) {
|
16
|
+
const formData = new FormData();
|
17
|
+
Object.keys(newParams).forEach((key: any) => {
|
18
|
+
if (typeof Blob !== "undefined" && newParams[key] instanceof Blob) {
|
19
|
+
/* To name the Blob:
|
20
|
+
1. look to an alternate request parameter called 'fileName'
|
21
|
+
2. see if 'name' has been tacked onto the Blob manually
|
22
|
+
3. if all else fails, use the request parameter
|
23
|
+
*/
|
24
|
+
const filename = newParams["fileName"] || newParams[key].name || key;
|
25
|
+
formData.append(key, newParams[key], filename);
|
26
|
+
} else {
|
27
|
+
formData.append(key, newParams[key]);
|
28
|
+
}
|
29
|
+
});
|
30
|
+
return formData;
|
31
|
+
} else {
|
32
|
+
return encodeQueryString(params);
|
33
|
+
}
|
34
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { processParams } from "./process-params";
|
5
|
+
|
6
|
+
export function encodeParam(key: string, value: any) {
|
7
|
+
return encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
8
|
+
}
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Encodes the passed object as a query string.
|
12
|
+
*
|
13
|
+
* @param params An object to be encoded.
|
14
|
+
* @returns An encoded query string.
|
15
|
+
*/
|
16
|
+
export function encodeQueryString(params: any): string {
|
17
|
+
const newParams = processParams(params);
|
18
|
+
return Object.keys(newParams)
|
19
|
+
.map((key: any) => {
|
20
|
+
return encodeParam(key, newParams[key]);
|
21
|
+
})
|
22
|
+
.join("&");
|
23
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
import { IRequestOptions } from "../request";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Helper that returns the appropriate portal url for a given request. `requestOptions.portal` is given
|
7
|
+
* precedence over `authentication.portal`. If neither are present, `www.arcgis.com/sharing/rest` is returned.
|
8
|
+
*
|
9
|
+
* @param requestOptions - Request options that may have authentication manager
|
10
|
+
* @returns Portal url to be used in API requests
|
11
|
+
*/
|
12
|
+
export function getPortalUrl(requestOptions: IRequestOptions = {}): string {
|
13
|
+
// use portal in options if specified
|
14
|
+
if (requestOptions.portal) {
|
15
|
+
return requestOptions.portal;
|
16
|
+
}
|
17
|
+
|
18
|
+
// if auth was passed, use that portal
|
19
|
+
if (requestOptions.authentication) {
|
20
|
+
return requestOptions.authentication.portal;
|
21
|
+
}
|
22
|
+
|
23
|
+
// default to arcgis.com
|
24
|
+
return "https://www.arcgis.com/sharing/rest";
|
25
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { request, IRequestOptions } from "../request";
|
5
|
+
|
6
|
+
import { getPortalUrl } from "./get-portal-url";
|
7
|
+
|
8
|
+
export interface IPortal {
|
9
|
+
id: string;
|
10
|
+
isPortal: boolean;
|
11
|
+
name: string;
|
12
|
+
[key: string]: any;
|
13
|
+
}
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Get the portal
|
17
|
+
* @param requestOptions
|
18
|
+
*/
|
19
|
+
export function getSelf(requestOptions?: IRequestOptions): Promise<IPortal> {
|
20
|
+
// just delegate to getPortal w/o an id
|
21
|
+
return getPortal(null, requestOptions);
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Get a portal by id. If no id is passed, it will call portals/self
|
26
|
+
* @param id
|
27
|
+
* @param requestOptions
|
28
|
+
*/
|
29
|
+
export function getPortal(
|
30
|
+
id?: string,
|
31
|
+
requestOptions?: IRequestOptions
|
32
|
+
): Promise<IPortal> {
|
33
|
+
// construct the search url
|
34
|
+
const idOrSelf = id ? id : "self";
|
35
|
+
const url = `${getPortalUrl(requestOptions)}/portals/${idOrSelf}`;
|
36
|
+
|
37
|
+
// default to a GET request
|
38
|
+
const options: IRequestOptions = {
|
39
|
+
...{ httpMethod: "GET" },
|
40
|
+
...requestOptions
|
41
|
+
};
|
42
|
+
|
43
|
+
// send the request
|
44
|
+
return request(url, options);
|
45
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
/**
|
5
|
+
* HTTP methods used by the ArcGIS REST API.
|
6
|
+
*/
|
7
|
+
export type HTTPMethods = "GET" | "POST";
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Valid response formats for the `f` parameter.
|
11
|
+
*/
|
12
|
+
export type ResponseFormats =
|
13
|
+
| "json"
|
14
|
+
| "geojson"
|
15
|
+
| "text"
|
16
|
+
| "html"
|
17
|
+
| "image"
|
18
|
+
| "zip";
|
19
|
+
|
20
|
+
export type GrantTypes =
|
21
|
+
| "authorization_code"
|
22
|
+
| "refresh_token"
|
23
|
+
| "client_credentials"
|
24
|
+
| "exchange_refresh_token";
|
25
|
+
|
26
|
+
export interface IParams {
|
27
|
+
f?: ResponseFormats;
|
28
|
+
[key: string]: any;
|
29
|
+
}
|
30
|
+
|
31
|
+
export interface IGenerateTokenParams extends IParams {
|
32
|
+
username?: string;
|
33
|
+
password?: string;
|
34
|
+
expiration?: number;
|
35
|
+
token?: string;
|
36
|
+
serverUrl?: string;
|
37
|
+
}
|
38
|
+
|
39
|
+
export interface IFetchTokenParams extends IParams {
|
40
|
+
client_id: string;
|
41
|
+
client_secret?: string;
|
42
|
+
grant_type: GrantTypes;
|
43
|
+
redirect_uri?: string;
|
44
|
+
refresh_token?: string;
|
45
|
+
code?: string;
|
46
|
+
}
|
47
|
+
|
48
|
+
export interface ITokenRequestOptions {
|
49
|
+
params?: IGenerateTokenParams | IFetchTokenParams;
|
50
|
+
httpMethod?: HTTPMethods;
|
51
|
+
fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
|
52
|
+
}
|