take whole otpauth URI

This commit is contained in:
Kyle Spearrin 2019-06-05 00:41:12 -04:00
parent c3f91761f6
commit 67da9387ff

View file

@ -51,17 +51,25 @@ namespace Bit.App.Pages
// Stop analysis until we navigate away so we don't keep reading barcodes // Stop analysis until we navigate away so we don't keep reading barcodes
_zxing.IsAnalyzing = false; _zxing.IsAnalyzing = false;
_zxing.IsScanning = false; _zxing.IsScanning = false;
if(!string.IsNullOrWhiteSpace(result?.Text) && var text = result?.Text;
Uri.TryCreate(result.Text, UriKind.Absolute, out Uri uri) && if(!string.IsNullOrWhiteSpace(text))
!string.IsNullOrWhiteSpace(uri?.Query))
{ {
var queryParts = uri.Query.Substring(1).ToLowerInvariant().Split('&'); if(text.StartsWith("otpauth://totp"))
foreach(var part in queryParts)
{ {
if(part.StartsWith("secret=")) _callback(text);
return;
}
else if(Uri.TryCreate(text, UriKind.Absolute, out Uri uri) &&
!string.IsNullOrWhiteSpace(uri?.Query))
{
var queryParts = uri.Query.Substring(1).ToLowerInvariant().Split('&');
foreach(var part in queryParts)
{ {
_callback(part.Substring(7)?.ToUpperInvariant()); if(part.StartsWith("secret="))
return; {
_callback(part.Substring(7)?.ToUpperInvariant());
return;
}
} }
} }
} }