working rss feed to nostr publish
This commit is contained in:
+61
@@ -0,0 +1,61 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.fromSSO = void 0;
|
||||
const property_provider_1 = require("@smithy/property-provider");
|
||||
const shared_ini_file_loader_1 = require("@smithy/shared-ini-file-loader");
|
||||
const isSsoProfile_1 = require("./isSsoProfile");
|
||||
const resolveSSOCredentials_1 = require("./resolveSSOCredentials");
|
||||
const validateSsoProfile_1 = require("./validateSsoProfile");
|
||||
const fromSSO = (init = {}) => async () => {
|
||||
const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, ssoSession } = init;
|
||||
const profileName = (0, shared_ini_file_loader_1.getProfileName)(init);
|
||||
if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {
|
||||
const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init);
|
||||
const profile = profiles[profileName];
|
||||
if (!profile) {
|
||||
throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} was not found.`);
|
||||
}
|
||||
if (!(0, isSsoProfile_1.isSsoProfile)(profile)) {
|
||||
throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);
|
||||
}
|
||||
if (profile === null || profile === void 0 ? void 0 : profile.sso_session) {
|
||||
const ssoSessions = await (0, shared_ini_file_loader_1.loadSsoSessionData)(init);
|
||||
const session = ssoSessions[profile.sso_session];
|
||||
const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;
|
||||
if (ssoRegion && ssoRegion !== session.sso_region) {
|
||||
throw new property_provider_1.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, false);
|
||||
}
|
||||
if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {
|
||||
throw new property_provider_1.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, false);
|
||||
}
|
||||
profile.sso_region = session.sso_region;
|
||||
profile.sso_start_url = session.sso_start_url;
|
||||
}
|
||||
const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = (0, validateSsoProfile_1.validateSsoProfile)(profile);
|
||||
return (0, resolveSSOCredentials_1.resolveSSOCredentials)({
|
||||
ssoStartUrl: sso_start_url,
|
||||
ssoSession: sso_session,
|
||||
ssoAccountId: sso_account_id,
|
||||
ssoRegion: sso_region,
|
||||
ssoRoleName: sso_role_name,
|
||||
ssoClient: ssoClient,
|
||||
profile: profileName,
|
||||
});
|
||||
}
|
||||
else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {
|
||||
throw new property_provider_1.CredentialsProviderError("Incomplete configuration. The fromSSO() argument hash must include " +
|
||||
'"ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"');
|
||||
}
|
||||
else {
|
||||
return (0, resolveSSOCredentials_1.resolveSSOCredentials)({
|
||||
ssoStartUrl,
|
||||
ssoSession,
|
||||
ssoAccountId,
|
||||
ssoRegion,
|
||||
ssoRoleName,
|
||||
ssoClient,
|
||||
profile: profileName,
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.fromSSO = fromSSO;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const tslib_1 = require("tslib");
|
||||
tslib_1.__exportStar(require("./fromSSO"), exports);
|
||||
tslib_1.__exportStar(require("./isSsoProfile"), exports);
|
||||
tslib_1.__exportStar(require("./types"), exports);
|
||||
tslib_1.__exportStar(require("./validateSsoProfile"), exports);
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.isSsoProfile = void 0;
|
||||
const isSsoProfile = (arg) => arg &&
|
||||
(typeof arg.sso_start_url === "string" ||
|
||||
typeof arg.sso_account_id === "string" ||
|
||||
typeof arg.sso_session === "string" ||
|
||||
typeof arg.sso_region === "string" ||
|
||||
typeof arg.sso_role_name === "string");
|
||||
exports.isSsoProfile = isSsoProfile;
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.resolveSSOCredentials = void 0;
|
||||
const client_sso_1 = require("@aws-sdk/client-sso");
|
||||
const token_providers_1 = require("@aws-sdk/token-providers");
|
||||
const property_provider_1 = require("@smithy/property-provider");
|
||||
const shared_ini_file_loader_1 = require("@smithy/shared-ini-file-loader");
|
||||
const SHOULD_FAIL_CREDENTIAL_CHAIN = false;
|
||||
const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, profile, }) => {
|
||||
let token;
|
||||
const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;
|
||||
if (ssoSession) {
|
||||
try {
|
||||
const _token = await (0, token_providers_1.fromSso)({ profile })();
|
||||
token = {
|
||||
accessToken: _token.token,
|
||||
expiresAt: new Date(_token.expiration).toISOString(),
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
throw new property_provider_1.CredentialsProviderError(e.message, SHOULD_FAIL_CREDENTIAL_CHAIN);
|
||||
}
|
||||
}
|
||||
else {
|
||||
try {
|
||||
token = await (0, shared_ini_file_loader_1.getSSOTokenFromFile)(ssoStartUrl);
|
||||
}
|
||||
catch (e) {
|
||||
throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, SHOULD_FAIL_CREDENTIAL_CHAIN);
|
||||
}
|
||||
}
|
||||
if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {
|
||||
throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, SHOULD_FAIL_CREDENTIAL_CHAIN);
|
||||
}
|
||||
const { accessToken } = token;
|
||||
const sso = ssoClient || new client_sso_1.SSOClient({ region: ssoRegion });
|
||||
let ssoResp;
|
||||
try {
|
||||
ssoResp = await sso.send(new client_sso_1.GetRoleCredentialsCommand({
|
||||
accountId: ssoAccountId,
|
||||
roleName: ssoRoleName,
|
||||
accessToken,
|
||||
}));
|
||||
}
|
||||
catch (e) {
|
||||
throw property_provider_1.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);
|
||||
}
|
||||
const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration } = {} } = ssoResp;
|
||||
if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {
|
||||
throw new property_provider_1.CredentialsProviderError("SSO returns an invalid temporary credential.", SHOULD_FAIL_CREDENTIAL_CHAIN);
|
||||
}
|
||||
return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration) };
|
||||
};
|
||||
exports.resolveSSOCredentials = resolveSSOCredentials;
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.validateSsoProfile = void 0;
|
||||
const property_provider_1 = require("@smithy/property-provider");
|
||||
const validateSsoProfile = (profile) => {
|
||||
const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;
|
||||
if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {
|
||||
throw new property_provider_1.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", ` +
|
||||
`"sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, false);
|
||||
}
|
||||
return profile;
|
||||
};
|
||||
exports.validateSsoProfile = validateSsoProfile;
|
||||
Reference in New Issue
Block a user