box-node-sdk
Version:
Official SDK for Box Platform APIs
153 lines (152 loc) • 5.46 kB
text/typescript
import { serializeResourceScope } from './resourceScope';
import { deserializeResourceScope } from './resourceScope';
import { ResourceScope } from './resourceScope';
import { BoxSdkError } from '../box/errors';
import { SerializedData } from '../serialization/json';
import { sdIsEmpty } from '../serialization/json';
import { sdIsBoolean } from '../serialization/json';
import { sdIsNumber } from '../serialization/json';
import { sdIsString } from '../serialization/json';
import { sdIsList } from '../serialization/json';
import { sdIsMap } from '../serialization/json';
export type AccessTokenTokenTypeField = 'bearer' | string;
export type AccessTokenIssuedTokenTypeField =
| 'urn:ietf:params:oauth:token-type:access_token'
| string;
export interface AccessToken {
/**
* The requested access token. */
readonly accessToken?: string;
/**
* The time in seconds by which this token will expire. */
readonly expiresIn?: number;
/**
* The type of access token returned. */
readonly tokenType?: AccessTokenTokenTypeField;
/**
* The permissions that this access token permits,
* providing a list of resources (files, folders, etc)
* and the scopes permitted for each of those resources. */
readonly restrictedTo?: readonly ResourceScope[];
/**
* The refresh token for this access token, which can be used
* to request a new access token when the current one expires. */
readonly refreshToken?: string;
/**
* The type of downscoped access token returned. This is only
* returned if an access token has been downscoped. */
readonly issuedTokenType?: AccessTokenIssuedTokenTypeField;
readonly rawData?: SerializedData;
}
export function serializeAccessTokenTokenTypeField(
val: AccessTokenTokenTypeField,
): SerializedData {
return val;
}
export function deserializeAccessTokenTokenTypeField(
val: SerializedData,
): AccessTokenTokenTypeField {
if (val == 'bearer') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize AccessTokenTokenTypeField",
});
}
export function serializeAccessTokenIssuedTokenTypeField(
val: AccessTokenIssuedTokenTypeField,
): SerializedData {
return val;
}
export function deserializeAccessTokenIssuedTokenTypeField(
val: SerializedData,
): AccessTokenIssuedTokenTypeField {
if (val == 'urn:ietf:params:oauth:token-type:access_token') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize AccessTokenIssuedTokenTypeField",
});
}
export function serializeAccessToken(val: AccessToken): SerializedData {
return {
['access_token']: val.accessToken,
['expires_in']: val.expiresIn,
['token_type']:
val.tokenType == void 0
? val.tokenType
: serializeAccessTokenTokenTypeField(val.tokenType),
['restricted_to']:
val.restrictedTo == void 0
? val.restrictedTo
: (val.restrictedTo.map(function (item: ResourceScope): SerializedData {
return serializeResourceScope(item);
}) as readonly any[]),
['refresh_token']: val.refreshToken,
['issued_token_type']:
val.issuedTokenType == void 0
? val.issuedTokenType
: serializeAccessTokenIssuedTokenTypeField(val.issuedTokenType),
};
}
export function deserializeAccessToken(val: SerializedData): AccessToken {
if (!sdIsMap(val)) {
throw new BoxSdkError({ message: 'Expecting a map for "AccessToken"' });
}
if (!(val.access_token == void 0) && !sdIsString(val.access_token)) {
throw new BoxSdkError({
message: 'Expecting string for "access_token" of type "AccessToken"',
});
}
const accessToken: undefined | string =
val.access_token == void 0 ? void 0 : val.access_token;
if (!(val.expires_in == void 0) && !sdIsNumber(val.expires_in)) {
throw new BoxSdkError({
message: 'Expecting number for "expires_in" of type "AccessToken"',
});
}
const expiresIn: undefined | number =
val.expires_in == void 0 ? void 0 : val.expires_in;
const tokenType: undefined | AccessTokenTokenTypeField =
val.token_type == void 0
? void 0
: deserializeAccessTokenTokenTypeField(val.token_type);
if (!(val.restricted_to == void 0) && !sdIsList(val.restricted_to)) {
throw new BoxSdkError({
message: 'Expecting array for "restricted_to" of type "AccessToken"',
});
}
const restrictedTo: undefined | readonly ResourceScope[] =
val.restricted_to == void 0
? void 0
: sdIsList(val.restricted_to)
? (val.restricted_to.map(function (itm: SerializedData): ResourceScope {
return deserializeResourceScope(itm);
}) as readonly any[])
: [];
if (!(val.refresh_token == void 0) && !sdIsString(val.refresh_token)) {
throw new BoxSdkError({
message: 'Expecting string for "refresh_token" of type "AccessToken"',
});
}
const refreshToken: undefined | string =
val.refresh_token == void 0 ? void 0 : val.refresh_token;
const issuedTokenType: undefined | AccessTokenIssuedTokenTypeField =
val.issued_token_type == void 0
? void 0
: deserializeAccessTokenIssuedTokenTypeField(val.issued_token_type);
return {
accessToken: accessToken,
expiresIn: expiresIn,
tokenType: tokenType,
restrictedTo: restrictedTo,
refreshToken: refreshToken,
issuedTokenType: issuedTokenType,
} satisfies AccessToken;
}