internal bool BitbucketOAuthPrompt(string title, TargetUri targetUri, Bitbucket.AuthenticationResultType resultType, string username) => _bitbucketOauthPrompt(this, title, targetUri, resultType, username);
public static bool OAuthPrompt(Program program, string title, TargetUri targetUri, Bitbucket.AuthenticationResultType resultType, string username) { const int BufferReadSize = 16 * 1024; Debug.Assert(targetUri != null); var buffer = new StringBuilder(BufferReadSize); uint read = 0; uint written = 0; string accessToken = null; var fileAccessFlags = NativeMethods.FileAccess.GenericRead | NativeMethods.FileAccess.GenericWrite; var fileAttributes = NativeMethods.FileAttributes.Normal; var fileCreationDisposition = NativeMethods.FileCreationDisposition.OpenExisting; var fileShareFlags = NativeMethods.FileShare.Read | NativeMethods.FileShare.Write; using (var stdout = NativeMethods.CreateFile(NativeMethods.ConsoleOutName, fileAccessFlags, fileShareFlags, IntPtr.Zero, fileCreationDisposition, fileAttributes, IntPtr.Zero)) { using (var stdin = NativeMethods.CreateFile(NativeMethods.ConsoleInName, fileAccessFlags, fileShareFlags, IntPtr.Zero, fileCreationDisposition, fileAttributes, IntPtr.Zero)) { buffer.AppendLine() .Append(title) .Append(" OAuth Access Token: "); if (!NativeMethods.WriteConsole(stdout, buffer, (uint)buffer.Length, out written, IntPtr.Zero)) { var error = Marshal.GetLastWin32Error(); throw new Win32Exception(error, "Unable to write to standard output (" + NativeMethods.Win32Error.GetText(error) + ")."); } buffer.Clear(); // read input from the user if (!NativeMethods.ReadConsole(stdin, buffer, BufferReadSize, out read, IntPtr.Zero)) { var error = Marshal.GetLastWin32Error(); throw new Win32Exception(error, "Unable to read from standard input (" + NativeMethods.Win32Error.GetText(error) + ")."); } accessToken = buffer.ToString(0, (int)read); accessToken = accessToken.Trim(Program.NewLineChars); } } return(accessToken != null); }
public static bool OAuthPrompt(Program program, string title, TargetUri targetUri, Bitbucket.AuthenticationResultType resultType, string username) { const int BufferReadSize = 16 * 1024; Debug.Assert(targetUri != null); var buffer = new StringBuilder(BufferReadSize); uint read = 0; uint written = 0; string accessToken = null; var fileAccessFlags = FileAccess.GenericRead | FileAccess.GenericWrite; var fileAttributes = FileAttributes.Normal; var fileCreationDisposition = FileCreationDisposition.OpenExisting; var fileShareFlags = FileShare.Read | FileShare.Write; using (var stdout = CreateFile(fileName: ConsoleOutName, desiredAccess: fileAccessFlags, shareMode: fileShareFlags, securityAttributes: IntPtr.Zero, creationDisposition: fileCreationDisposition, flagsAndAttributes: fileAttributes, templateFile: IntPtr.Zero)) using (var stdin = CreateFile(fileName: ConsoleInName, desiredAccess: fileAccessFlags, shareMode: fileShareFlags, securityAttributes: IntPtr.Zero, creationDisposition: fileCreationDisposition, flagsAndAttributes: fileAttributes, templateFile: IntPtr.Zero)) { buffer.AppendLine() .Append(title) .Append(" OAuth Access Token: "); if (!WriteConsole(buffer: buffer, consoleOutputHandle: stdout, numberOfCharsToWrite: (uint)buffer.Length, numberOfCharsWritten: out written, reserved: IntPtr.Zero)) { var error = Marshal.GetLastWin32Error(); throw new Win32Exception(error, "Unable to write to standard output (" + Win32Error.GetText(error) + ")."); } buffer.Clear(); // read input from the user if (!ReadConsole(buffer: buffer, consoleInputHandle: stdin, numberOfCharsToRead: BufferReadSize, numberOfCharsRead: out read, reserved: IntPtr.Zero)) { var error = Marshal.GetLastWin32Error(); throw new Win32Exception(error, "Unable to read from standard input (" + Win32Error.GetText(error) + ")."); } accessToken = buffer.ToString(0, (int)read); accessToken = accessToken.Trim(program.NewLineChars); } return(accessToken != null); }