@esri/arcgis-rest-request
Version:
Common methods and utilities for @esri/arcgis-rest-js packages.
55 lines (54 loc) • 2.28 kB
TypeScript
import { IUser } from "../types/user.js";
import { ITokenRequestOptions } from "./ITokenRequestOptions.js";
/**
* Authentication can be supplied to `request` via {@linkcode ArcGISIdentityManager}, {@linkcode ApplicationCredentialsManager} or {@linkcode APIKeyManager}. These classes implement {@linkCode IAuthenticationManager}.
*
* ```js
* const session = new ArcGISIdentityManager({
* username: "jsmith",
* password: "123456",
* // optional
* portal: "https://[yourserver]/arcgis/sharing/rest"
* })
*
* request(url, { authentication: session })
* ```
*/
export interface IAuthenticationManager {
/**
* Defaults to 'https://www.arcgis.com/sharing/rest'.
*/
portal: string;
/**
* Returns the proper token for a given URL and request options.
* @param url The requested URL.
* @param requestOptions the requests options.
*/
getToken(url: string, requestOptions?: ITokenRequestOptions): Promise<string>;
/**
* Optional. Returns a promise that resolves with the username. Used internally by some methods to consruct URLs that require a username.
*/
getUsername?(): Promise<string>;
/**
* Optional. Returns a promise that resolves with the user. Used internally by some methods to check if the user is an admin but can be used as a generic way to get user information.
*/
getUser?(): Promise<IUser>;
/**
* Optional. Returns the proper [`credentials` option for `fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch) for a given domain.
*
* See [trusted server](https://enterprise.arcgis.com/en/portal/latest/administer/windows/configure-security.htm#ESRI_SECTION1_70CC159B3540440AB325BE5D89DBE94A).
* Used internally by underlying request methods to add support for specific security considerations.
*
* @param url The url of the request
* @returns "include" or "same-origin"
*/
getDomainCredentials?(url: string): RequestCredentials;
/**
* Optional. Should return `true` if these credentials can be refreshed and `false` if it cannot.
*/
canRefresh?: boolean;
/**
* Optional. Refresh the stored credentials.
*/
refreshCredentials?(requestOptions?: ITokenRequestOptions): Promise<this>;
}