public IActionResult Scan(string qRCode) { var qRCodeScanned = QRCodeScanned.Create(qRCode); _eventBus.Publish(qRCodeScanned, "QRCodeScanned"); return(Ok(qRCode)); }
public Task <bool> ScanQRCodeContinously(string message, QRCodeScanned onQrCodeScannedFunction, string closeButtonTitle = "Close", bool tryInverted = false) { var taskCompleteSource = new TaskCompletionSource <bool>(); ScanQrController.ScanContinuously(ViewHelper.CurrentActivity, message, closeButtonTitle, onQrCodeScannedFunction, taskCompleteSource, tryInverted); return(taskCompleteSource.Task); }
public static void ScanContinuously( Activity activity, string message, string closeButtonTitle, QRCodeScanned onQrCodeScannedFunction, TaskCompletionSource <bool> taskCompletionSource, bool tryInverted) { BarcodeScanner.Initialize(activity.Application); var scanner = new BarcodeScanner(); var overlayView = new ScanQrOverlayView(activity); scanner.CustomOverlay = overlayView; overlayView.SetDescriptionText(message); overlayView.SetCloseButtonText(closeButtonTitle); var position = 0; bool isScanningContinouslyExecuting = false; scanner.ScanContinuously(new MobileBarcodeScanningOptions() { DelayBetweenContinuousScans = 3000, TryInverted = tryInverted }, async result => { if (isScanningContinouslyExecuting) { return; } isScanningContinouslyExecuting = true; var scanQrUpdate = await onQrCodeScannedFunction.Invoke(position, result.Text); if (scanQrUpdate == null) { return; } if (scanQrUpdate.WillCancel) { taskCompletionSource.SetResult(true); taskCompletionSource = null; scanner.Cancel(); return; } overlayView.SetDescriptionText(scanQrUpdate.UpdateMessage); position++; isScanningContinouslyExecuting = false; }); }
private async Task WaitUntilScanned() { while (true) { string getResult = await netHandler.GETRequestAsync(qrStatusURL + "&tip=" + (qrCodeScanned ? "0" : "1"), true); if (getResult.Contains("408")) { continue; } else if (getResult.Contains("400")) { QRCodeExpired?.Invoke(this, null); return; } else if (getResult.Contains("201")) { NetworkHandler.ReadUntil(ref getResult, "base64,"); MemoryStream ms = new MemoryStream(Convert.FromBase64String(NetworkHandler.ReadUntil(ref getResult, "'"))); Image pp = Image.FromStream(ms); qrCodeScanned = true; QRCodeScanned.Invoke(this, new QRCodeScannedEventArgs() { profilePicture = pp }); } else if (getResult.Contains("200")) { NetworkHandler.ReadUntil(ref getResult, "uri=\""); redirectUri = NetworkHandler.ReadUntil(ref getResult, "\""); host = redirectUri; NetworkHandler.ReadUntil(ref host, "//"); host = NetworkHandler.ReadUntil(ref host, "/"); LoginConfirmed.Invoke(this, null); FinishLoginAsync(); break; } } }