357 lines
14 KiB
JavaScript
357 lines
14 KiB
JavaScript
import { HttpRequest as __HttpRequest } from "@smithy/protocol-http";
|
|
import { _json, collectBody, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectObject as __expectObject, expectString as __expectString, map, take, withBaseException, } from "@smithy/smithy-client";
|
|
import { InvalidRequestException, ResourceNotFoundException, TooManyRequestsException, UnauthorizedException, } from "../models/models_0";
|
|
import { SSOServiceException as __BaseException } from "../models/SSOServiceException";
|
|
export const se_GetRoleCredentialsCommand = async (input, context) => {
|
|
const { hostname, protocol = "https", port, path: basePath } = await context.endpoint();
|
|
const headers = map({}, isSerializableHeaderValue, {
|
|
"x-amz-sso_bearer_token": input.accessToken,
|
|
});
|
|
const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/federation/credentials";
|
|
const query = map({
|
|
role_name: [, __expectNonNull(input.roleName, `roleName`)],
|
|
account_id: [, __expectNonNull(input.accountId, `accountId`)],
|
|
});
|
|
let body;
|
|
return new __HttpRequest({
|
|
protocol,
|
|
hostname,
|
|
port,
|
|
method: "GET",
|
|
headers,
|
|
path: resolvedPath,
|
|
query,
|
|
body,
|
|
});
|
|
};
|
|
export const se_ListAccountRolesCommand = async (input, context) => {
|
|
const { hostname, protocol = "https", port, path: basePath } = await context.endpoint();
|
|
const headers = map({}, isSerializableHeaderValue, {
|
|
"x-amz-sso_bearer_token": input.accessToken,
|
|
});
|
|
const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/assignment/roles";
|
|
const query = map({
|
|
next_token: [, input.nextToken],
|
|
max_result: [() => input.maxResults !== void 0, () => input.maxResults.toString()],
|
|
account_id: [, __expectNonNull(input.accountId, `accountId`)],
|
|
});
|
|
let body;
|
|
return new __HttpRequest({
|
|
protocol,
|
|
hostname,
|
|
port,
|
|
method: "GET",
|
|
headers,
|
|
path: resolvedPath,
|
|
query,
|
|
body,
|
|
});
|
|
};
|
|
export const se_ListAccountsCommand = async (input, context) => {
|
|
const { hostname, protocol = "https", port, path: basePath } = await context.endpoint();
|
|
const headers = map({}, isSerializableHeaderValue, {
|
|
"x-amz-sso_bearer_token": input.accessToken,
|
|
});
|
|
const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/assignment/accounts";
|
|
const query = map({
|
|
next_token: [, input.nextToken],
|
|
max_result: [() => input.maxResults !== void 0, () => input.maxResults.toString()],
|
|
});
|
|
let body;
|
|
return new __HttpRequest({
|
|
protocol,
|
|
hostname,
|
|
port,
|
|
method: "GET",
|
|
headers,
|
|
path: resolvedPath,
|
|
query,
|
|
body,
|
|
});
|
|
};
|
|
export const se_LogoutCommand = async (input, context) => {
|
|
const { hostname, protocol = "https", port, path: basePath } = await context.endpoint();
|
|
const headers = map({}, isSerializableHeaderValue, {
|
|
"x-amz-sso_bearer_token": input.accessToken,
|
|
});
|
|
const resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/logout";
|
|
let body;
|
|
return new __HttpRequest({
|
|
protocol,
|
|
hostname,
|
|
port,
|
|
method: "POST",
|
|
headers,
|
|
path: resolvedPath,
|
|
body,
|
|
});
|
|
};
|
|
export const de_GetRoleCredentialsCommand = async (output, context) => {
|
|
if (output.statusCode !== 200 && output.statusCode >= 300) {
|
|
return de_GetRoleCredentialsCommandError(output, context);
|
|
}
|
|
const contents = map({
|
|
$metadata: deserializeMetadata(output),
|
|
});
|
|
const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body");
|
|
const doc = take(data, {
|
|
roleCredentials: _json,
|
|
});
|
|
Object.assign(contents, doc);
|
|
return contents;
|
|
};
|
|
const de_GetRoleCredentialsCommandError = async (output, context) => {
|
|
const parsedOutput = {
|
|
...output,
|
|
body: await parseErrorBody(output.body, context),
|
|
};
|
|
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
|
|
switch (errorCode) {
|
|
case "InvalidRequestException":
|
|
case "com.amazonaws.sso#InvalidRequestException":
|
|
throw await de_InvalidRequestExceptionRes(parsedOutput, context);
|
|
case "ResourceNotFoundException":
|
|
case "com.amazonaws.sso#ResourceNotFoundException":
|
|
throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);
|
|
case "TooManyRequestsException":
|
|
case "com.amazonaws.sso#TooManyRequestsException":
|
|
throw await de_TooManyRequestsExceptionRes(parsedOutput, context);
|
|
case "UnauthorizedException":
|
|
case "com.amazonaws.sso#UnauthorizedException":
|
|
throw await de_UnauthorizedExceptionRes(parsedOutput, context);
|
|
default:
|
|
const parsedBody = parsedOutput.body;
|
|
return throwDefaultError({
|
|
output,
|
|
parsedBody,
|
|
errorCode,
|
|
});
|
|
}
|
|
};
|
|
export const de_ListAccountRolesCommand = async (output, context) => {
|
|
if (output.statusCode !== 200 && output.statusCode >= 300) {
|
|
return de_ListAccountRolesCommandError(output, context);
|
|
}
|
|
const contents = map({
|
|
$metadata: deserializeMetadata(output),
|
|
});
|
|
const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body");
|
|
const doc = take(data, {
|
|
nextToken: __expectString,
|
|
roleList: _json,
|
|
});
|
|
Object.assign(contents, doc);
|
|
return contents;
|
|
};
|
|
const de_ListAccountRolesCommandError = async (output, context) => {
|
|
const parsedOutput = {
|
|
...output,
|
|
body: await parseErrorBody(output.body, context),
|
|
};
|
|
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
|
|
switch (errorCode) {
|
|
case "InvalidRequestException":
|
|
case "com.amazonaws.sso#InvalidRequestException":
|
|
throw await de_InvalidRequestExceptionRes(parsedOutput, context);
|
|
case "ResourceNotFoundException":
|
|
case "com.amazonaws.sso#ResourceNotFoundException":
|
|
throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);
|
|
case "TooManyRequestsException":
|
|
case "com.amazonaws.sso#TooManyRequestsException":
|
|
throw await de_TooManyRequestsExceptionRes(parsedOutput, context);
|
|
case "UnauthorizedException":
|
|
case "com.amazonaws.sso#UnauthorizedException":
|
|
throw await de_UnauthorizedExceptionRes(parsedOutput, context);
|
|
default:
|
|
const parsedBody = parsedOutput.body;
|
|
return throwDefaultError({
|
|
output,
|
|
parsedBody,
|
|
errorCode,
|
|
});
|
|
}
|
|
};
|
|
export const de_ListAccountsCommand = async (output, context) => {
|
|
if (output.statusCode !== 200 && output.statusCode >= 300) {
|
|
return de_ListAccountsCommandError(output, context);
|
|
}
|
|
const contents = map({
|
|
$metadata: deserializeMetadata(output),
|
|
});
|
|
const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body");
|
|
const doc = take(data, {
|
|
accountList: _json,
|
|
nextToken: __expectString,
|
|
});
|
|
Object.assign(contents, doc);
|
|
return contents;
|
|
};
|
|
const de_ListAccountsCommandError = async (output, context) => {
|
|
const parsedOutput = {
|
|
...output,
|
|
body: await parseErrorBody(output.body, context),
|
|
};
|
|
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
|
|
switch (errorCode) {
|
|
case "InvalidRequestException":
|
|
case "com.amazonaws.sso#InvalidRequestException":
|
|
throw await de_InvalidRequestExceptionRes(parsedOutput, context);
|
|
case "ResourceNotFoundException":
|
|
case "com.amazonaws.sso#ResourceNotFoundException":
|
|
throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);
|
|
case "TooManyRequestsException":
|
|
case "com.amazonaws.sso#TooManyRequestsException":
|
|
throw await de_TooManyRequestsExceptionRes(parsedOutput, context);
|
|
case "UnauthorizedException":
|
|
case "com.amazonaws.sso#UnauthorizedException":
|
|
throw await de_UnauthorizedExceptionRes(parsedOutput, context);
|
|
default:
|
|
const parsedBody = parsedOutput.body;
|
|
return throwDefaultError({
|
|
output,
|
|
parsedBody,
|
|
errorCode,
|
|
});
|
|
}
|
|
};
|
|
export const de_LogoutCommand = async (output, context) => {
|
|
if (output.statusCode !== 200 && output.statusCode >= 300) {
|
|
return de_LogoutCommandError(output, context);
|
|
}
|
|
const contents = map({
|
|
$metadata: deserializeMetadata(output),
|
|
});
|
|
await collectBody(output.body, context);
|
|
return contents;
|
|
};
|
|
const de_LogoutCommandError = async (output, context) => {
|
|
const parsedOutput = {
|
|
...output,
|
|
body: await parseErrorBody(output.body, context),
|
|
};
|
|
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
|
|
switch (errorCode) {
|
|
case "InvalidRequestException":
|
|
case "com.amazonaws.sso#InvalidRequestException":
|
|
throw await de_InvalidRequestExceptionRes(parsedOutput, context);
|
|
case "TooManyRequestsException":
|
|
case "com.amazonaws.sso#TooManyRequestsException":
|
|
throw await de_TooManyRequestsExceptionRes(parsedOutput, context);
|
|
case "UnauthorizedException":
|
|
case "com.amazonaws.sso#UnauthorizedException":
|
|
throw await de_UnauthorizedExceptionRes(parsedOutput, context);
|
|
default:
|
|
const parsedBody = parsedOutput.body;
|
|
return throwDefaultError({
|
|
output,
|
|
parsedBody,
|
|
errorCode,
|
|
});
|
|
}
|
|
};
|
|
const throwDefaultError = withBaseException(__BaseException);
|
|
const de_InvalidRequestExceptionRes = async (parsedOutput, context) => {
|
|
const contents = map({});
|
|
const data = parsedOutput.body;
|
|
const doc = take(data, {
|
|
message: __expectString,
|
|
});
|
|
Object.assign(contents, doc);
|
|
const exception = new InvalidRequestException({
|
|
$metadata: deserializeMetadata(parsedOutput),
|
|
...contents,
|
|
});
|
|
return __decorateServiceException(exception, parsedOutput.body);
|
|
};
|
|
const de_ResourceNotFoundExceptionRes = async (parsedOutput, context) => {
|
|
const contents = map({});
|
|
const data = parsedOutput.body;
|
|
const doc = take(data, {
|
|
message: __expectString,
|
|
});
|
|
Object.assign(contents, doc);
|
|
const exception = new ResourceNotFoundException({
|
|
$metadata: deserializeMetadata(parsedOutput),
|
|
...contents,
|
|
});
|
|
return __decorateServiceException(exception, parsedOutput.body);
|
|
};
|
|
const de_TooManyRequestsExceptionRes = async (parsedOutput, context) => {
|
|
const contents = map({});
|
|
const data = parsedOutput.body;
|
|
const doc = take(data, {
|
|
message: __expectString,
|
|
});
|
|
Object.assign(contents, doc);
|
|
const exception = new TooManyRequestsException({
|
|
$metadata: deserializeMetadata(parsedOutput),
|
|
...contents,
|
|
});
|
|
return __decorateServiceException(exception, parsedOutput.body);
|
|
};
|
|
const de_UnauthorizedExceptionRes = async (parsedOutput, context) => {
|
|
const contents = map({});
|
|
const data = parsedOutput.body;
|
|
const doc = take(data, {
|
|
message: __expectString,
|
|
});
|
|
Object.assign(contents, doc);
|
|
const exception = new UnauthorizedException({
|
|
$metadata: deserializeMetadata(parsedOutput),
|
|
...contents,
|
|
});
|
|
return __decorateServiceException(exception, parsedOutput.body);
|
|
};
|
|
const deserializeMetadata = (output) => ({
|
|
httpStatusCode: output.statusCode,
|
|
requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"],
|
|
extendedRequestId: output.headers["x-amz-id-2"],
|
|
cfId: output.headers["x-amz-cf-id"],
|
|
});
|
|
const collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));
|
|
const isSerializableHeaderValue = (value) => value !== undefined &&
|
|
value !== null &&
|
|
value !== "" &&
|
|
(!Object.getOwnPropertyNames(value).includes("length") || value.length != 0) &&
|
|
(!Object.getOwnPropertyNames(value).includes("size") || value.size != 0);
|
|
const parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {
|
|
if (encoded.length) {
|
|
return JSON.parse(encoded);
|
|
}
|
|
return {};
|
|
});
|
|
const parseErrorBody = async (errorBody, context) => {
|
|
const value = await parseBody(errorBody, context);
|
|
value.message = value.message ?? value.Message;
|
|
return value;
|
|
};
|
|
const loadRestJsonErrorCode = (output, data) => {
|
|
const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());
|
|
const sanitizeErrorCode = (rawValue) => {
|
|
let cleanValue = rawValue;
|
|
if (typeof cleanValue === "number") {
|
|
cleanValue = cleanValue.toString();
|
|
}
|
|
if (cleanValue.indexOf(",") >= 0) {
|
|
cleanValue = cleanValue.split(",")[0];
|
|
}
|
|
if (cleanValue.indexOf(":") >= 0) {
|
|
cleanValue = cleanValue.split(":")[0];
|
|
}
|
|
if (cleanValue.indexOf("#") >= 0) {
|
|
cleanValue = cleanValue.split("#")[1];
|
|
}
|
|
return cleanValue;
|
|
};
|
|
const headerKey = findKey(output.headers, "x-amzn-errortype");
|
|
if (headerKey !== undefined) {
|
|
return sanitizeErrorCode(output.headers[headerKey]);
|
|
}
|
|
if (data.code !== undefined) {
|
|
return sanitizeErrorCode(data.code);
|
|
}
|
|
if (data["__type"] !== undefined) {
|
|
return sanitizeErrorCode(data["__type"]);
|
|
}
|
|
};
|