in plugin/src/software/aws/toolkits/eclipse/amazonq/views/LoginViewActionHandler.java [32:98]
public final void handleCommand(final ParsedCommand parsedCommand, final Browser browser) {
Object params = parsedCommand.getParams();
switch (parsedCommand.getCommand()) {
case LOGIN_BUILDER_ID:
case LOGIN_IDC:
if (isLoginTaskRunning) {
loginTask.cancel(true);
}
isLoginTaskRunning = true;
loginTask = ThreadingUtils.executeAsyncTaskAndReturnFuture(() -> {
try {
if (parsedCommand.getCommand() == Command.LOGIN_BUILDER_ID) {
Activator.getLoginService().login(LoginType.BUILDER_ID, new LoginParams()).get();
} else {
LoginIdcParams loginIdcParams = JSON_HANDLER.convertObject(params, LoginIdcParams.class);
var url = loginIdcParams.getUrl();
var region = loginIdcParams.getRegion();
if (StringUtils.isEmpty(url) || StringUtils.isEmpty(region)) {
throw new IllegalArgumentException("Url/Region parameters cannot be null or empty");
}
Activator.getLoginService().login(LoginType.IAM_IDENTITY_CENTER,
new LoginParams().setLoginIdcParams(loginIdcParams)).get();
}
isLoginTaskRunning = false;
} catch (Exception e) {
isLoginTaskRunning = false;
Activator.getLogger().error("Failed to update token", e);
}
});
break;
case CANCEL_LOGIN:
if (isLoginTaskRunning) {
loginTask.cancel(true);
isLoginTaskRunning = false;
}
break;
case ON_LOAD:
OidcServiceMetadata oidcMetadata = new OidcServiceMetadata();
String regions = "["
+ oidcMetadata.regions().stream().filter(region -> region.metadata().partition().id().equals("aws"))
.map(AwsRegion::from).map(AwsRegion::toString).collect(Collectors.joining(","))
+ "]";
var js = String.format("""
{
stage: '%s',
regions: %s,
cancellable: false,
idcInfo: {
profileName: '',
startUrl: '',
region: 'us-east-1'
},
feature: 'q',
existConnections: []
}
""", "START", regions).stripIndent();
browser.execute("changeTheme(" + THEME_DETECTOR.isDarkTheme() + ");");
browser.execute(String.format("ideClient.prepareUi(%s)", js));
browser.execute("ideClient.updateAuthorization('')");
browser.execute("document.oncontextmenu = e => e.preventDefault();");
break;
default:
Activator.getLogger()
.error("Unexpected command received from Amazon Q Login: " + parsedCommand.getCommand());
break;
}
}