use of com.microsoft.azuretools.adauth.IDeviceLoginUI in project azure-tools-for-java by Microsoft.
the class AzureSignInAction method signInIfNotSignedInInternal.
private static Mono<Boolean> signInIfNotSignedInInternal(Project project) {
final AuthMethodManager authMethodManager = AuthMethodManager.getInstance();
final IDeviceLoginUI deviceLoginUI = new DeviceLoginUI();
return Mono.create(sink -> AzureTaskManager.getInstance().runLater(() -> {
final AuthConfiguration auth;
try {
auth = showSignInWindowAndGetAuthConfiguration(project);
} catch (InterruptedException e) {
sink.error(e);
return;
}
Single<AuthMethodDetails> single;
if (auth.getType() != AuthType.DEVICE_CODE) {
single = loginNonDeviceCodeSingle(auth);
} else {
single = loginDeviceCodeSingle().map(account -> {
AzureTaskManager.getInstance().runLater(() -> deviceLoginUI.promptDeviceCode(account.getDeviceCode()));
CompletableFuture<AuthMethodDetails> future = account.continueLogin().map(ac -> fromAccountEntity(ac.getEntity())).doFinally(signal -> deviceLoginUI.closePrompt()).toFuture();
deviceLoginUI.setFuture(future);
try {
return future.get();
} catch (Throwable ex) {
if (!(ex instanceof CancellationException)) {
ex.printStackTrace();
ErrorWindow.show(project, ex.getMessage(), SIGN_IN_ERROR);
}
return new AuthMethodDetails();
}
});
}
single.subscribeOn(rx.schedulers.Schedulers.io()).subscribe(authMethodDetails -> {
if (authMethodManager.isSignedIn()) {
authMethodManager.setAuthMethodDetails(authMethodDetails);
}
sink.success(authMethodManager.isSignedIn());
}, sink::error);
}));
}
use of com.microsoft.azuretools.adauth.IDeviceLoginUI in project azure-tools-for-java by Microsoft.
the class SignInCommandHandler method signInIfNotSignedInInternal.
private static Mono<Boolean> signInIfNotSignedInInternal(Shell projectShell) {
final AuthMethodManager authMethodManager = AuthMethodManager.getInstance();
final IDeviceLoginUI deviceLoginUI = new DeviceLoginWindow(projectShell);
return Mono.create(sink -> AzureTaskManager.getInstance().runLater(() -> {
final AuthConfiguration auth;
try {
auth = showSignInWindowAndGetAuthConfiguration(projectShell);
} catch (InterruptedException e) {
sink.error(e);
return;
}
Single<AuthMethodDetails> single;
if (auth.getType() != AuthType.DEVICE_CODE) {
single = loginNonDeviceCodeSingle(auth);
} else {
single = loginDeviceCodeSingle().map(account -> {
AzureTaskManager.getInstance().runLater(() -> deviceLoginUI.promptDeviceCode(account.getDeviceCode()));
CompletableFuture<AuthMethodDetails> future = account.continueLogin().map(ac -> fromAccountEntity(ac.getEntity())).doFinally(signal -> deviceLoginUI.closePrompt()).toFuture();
deviceLoginUI.setFuture(future);
try {
return future.get();
} catch (Throwable ex) {
if (!(ex instanceof CancellationException)) {
ex.printStackTrace();
ErrorWindow.go(projectShell, ex.getMessage(), SIGN_IN_ERROR);
}
return new AuthMethodDetails();
}
});
}
single.subscribeOn(rx.schedulers.Schedulers.io()).subscribe(authMethodDetails -> {
if (authMethodManager.isSignedIn()) {
authMethodManager.setAuthMethodDetails(authMethodDetails);
}
sink.success(authMethodManager.isSignedIn());
}, sink::error);
}));
}
Aggregations