public async Task<Token> GeneratePersonalAccessToken(Uri targetUri, Token accessToken, VstsTokenScope tokenScope, bool requireCompactToken) { return await Task.Run(() => { return new Token("personal-access-token", TokenType.Personal); }); }
public async Task <Token> GeneratePersonalAccessToken(Uri targetUri, Token accessToken, VstsTokenScope tokenScope, bool requireCompactToken) { return(await Task.Run(() => { return new Token("personal-access-token", TokenType.Personal); })); }
public static void LoadOperationArguments(Program program, OperationArguments operationArguments) { if (program is null) { throw new ArgumentNullException(nameof(program)); } if (operationArguments is null) { throw new ArgumentNullException(nameof(operationArguments)); } if (operationArguments.TargetUri == null) { program.Die("No host information, unable to continue."); } string value; bool? yesno; if (program.TryReadBoolean(operationArguments, KeyType.ConfigNoLocal, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.ConfigNoLocal)} = '{yesno}'."); operationArguments.UseConfigLocal = yesno.Value; } if (program.TryReadBoolean(operationArguments, KeyType.ConfigNoSystem, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.ConfigNoSystem)} = '{yesno}'."); operationArguments.UseConfigSystem = yesno.Value; } // Load/re-load the Git configuration after setting the use local/system config values. operationArguments.LoadConfiguration(); // If a user-agent has been specified in the environment, set it globally. if (program.TryReadString(operationArguments, KeyType.HttpUserAgent, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.HttpUserAgent)} = '{value}'."); Global.UserAgent = value; } // Look for authority settings. if (program.TryReadString(operationArguments, KeyType.Authority, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.Authority)} = '{value}'."); if (Program.ConfigKeyComparer.Equals(value, "MSA") || Program.ConfigKeyComparer.Equals(value, "Microsoft") || Program.ConfigKeyComparer.Equals(value, "MicrosoftAccount") || Program.ConfigKeyComparer.Equals(value, "Live") || Program.ConfigKeyComparer.Equals(value, "LiveConnect") || Program.ConfigKeyComparer.Equals(value, "LiveID")) { operationArguments.Authority = AuthorityType.MicrosoftAccount; } else if (Program.ConfigKeyComparer.Equals(value, "AAD") || Program.ConfigKeyComparer.Equals(value, "Azure") || Program.ConfigKeyComparer.Equals(value, "AzureDirectory")) { operationArguments.Authority = AuthorityType.AzureDirectory; } else if (Program.ConfigKeyComparer.Equals(value, "Integrated") || Program.ConfigKeyComparer.Equals(value, "Windows") || Program.ConfigKeyComparer.Equals(value, "TFS") || Program.ConfigKeyComparer.Equals(value, "Kerberos") || Program.ConfigKeyComparer.Equals(value, "NTLM") || Program.ConfigKeyComparer.Equals(value, "SSO")) { operationArguments.Authority = AuthorityType.Ntlm; } else if (Program.ConfigKeyComparer.Equals(value, "GitHub")) { operationArguments.Authority = AuthorityType.GitHub; } else if (Program.ConfigKeyComparer.Equals(value, "Atlassian") || Program.ConfigKeyComparer.Equals(value, "Bitbucket")) { operationArguments.Authority = AuthorityType.Bitbucket; } else { operationArguments.Authority = AuthorityType.Basic; } } // Look for interactivity config settings. if (program.TryReadString(operationArguments, KeyType.Interactive, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.Interactive)} = '{value}'."); if (Program.ConfigKeyComparer.Equals(value, "always") || Program.ConfigKeyComparer.Equals(value, "true") || Program.ConfigKeyComparer.Equals(value, "force")) { operationArguments.Interactivity = Interactivity.Always; } else if (Program.ConfigKeyComparer.Equals(value, "never") || Program.ConfigKeyComparer.Equals(value, "false")) { operationArguments.Interactivity = Interactivity.Never; } } // Look for credential validation config settings. if (program.TryReadBoolean(operationArguments, KeyType.Validate, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.Validate)} = '{yesno}'."); operationArguments.ValidateCredentials = yesno.Value; } // Look for write log config settings. if (program.TryReadBoolean(operationArguments, KeyType.Writelog, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.Writelog)} = '{yesno}'."); operationArguments.WriteLog = yesno.Value; } // Look for modal prompt config settings. if (program.TryReadBoolean(operationArguments, KeyType.ModalPrompt, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.ModalPrompt)} = '{yesno}'."); operationArguments.UseModalUi = yesno.Value; } // Look for credential preservation config settings. if (program.TryReadBoolean(operationArguments, KeyType.PreserveCredentials, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.PreserveCredentials)} = '{yesno}'."); operationArguments.PreserveCredentials = yesno.Value; } // Look for HTTP path usage config settings. if (program.TryReadBoolean(operationArguments, KeyType.HttpPath, out yesno)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.HttpPath)} = '{value}'."); operationArguments.UseHttpPath = yesno.Value; } // Look for HTTP proxy config settings. if ((operationArguments.TargetUri.Scheme.Equals(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase) && program.TryReadString(operationArguments, KeyType.HttpsProxy, out value)) || program.TryReadString(operationArguments, KeyType.HttpProxy, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.HttpProxy)} = '{value}'."); operationArguments.SetProxy(value); } // Check environment variables just-in-case. else if ((operationArguments.EnvironmentVariables.TryGetValue("GCM_HTTP_PROXY", out value) && !string.IsNullOrWhiteSpace(value))) { Git.Trace.WriteLine($"GCM_HTTP_PROXY = '{value}'."); var keyName = (operationArguments.TargetUri.Scheme.Equals(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) ? "HTTPS_PROXY" : "HTTP_PROXY"; var warning = $"WARNING: the 'GCM_HTTP_PROXY' variable has been deprecated, use '{ keyName }' instead."; Git.Trace.WriteLine(warning); program.WriteLine(warning); operationArguments.SetProxy(value); } // Check the git-config http.proxy setting just-in-case. else { Configuration.Entry entry; if (operationArguments.GitConfiguration.TryGetEntry("http", operationArguments.QueryUri, "proxy", out entry) && !string.IsNullOrWhiteSpace(entry.Value)) { Git.Trace.WriteLine($"http.proxy = '{entry.Value}'."); operationArguments.SetProxy(entry.Value); } } // Look for custom namespace config settings. if (program.TryReadString(operationArguments, KeyType.Namespace, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.Namespace)} = '{value}'."); operationArguments.CustomNamespace = value; } // Look for custom token duration settings. if (program.TryReadString(operationArguments, KeyType.TokenDuration, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.TokenDuration)} = '{value}'."); int hours; if (int.TryParse(value, out hours)) { operationArguments.TokenDuration = TimeSpan.FromHours(hours); } } // Look for custom VSTS scope settings if (program.TryReadString(operationArguments, KeyType.VstsScope, out value)) { Git.Trace.WriteLine($"{program.KeyTypeName(KeyType.VstsScope)} = '{value}'."); VstsTokenScope vstsTokenScope = VstsTokenScope.None; var scopes = value.Split(TokenScopeSeparatorCharacters.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < scopes.Length; i += 1) { scopes[i] = scopes[i].Trim(); if (VstsTokenScope.Find(scopes[i], out VstsTokenScope scope)) { vstsTokenScope = vstsTokenScope | scope; } else { Git.Trace.WriteLine($"Unknown VSTS Token scope: '{scopes[i]}'."); } } operationArguments.VstsTokenScope = vstsTokenScope; } }
/// <summary> /// Generates a personal access token for use with Visual Studio Team Services. /// <para/> /// Returns the acquired token if successful; otherwise <see langword="null"/>; /// </summary> /// <param name="targetUri">The uniform resource indicator of the resource access tokens are being requested for.</param> /// <param name="accessToken">Access token granted by the identity authority (Azure).</param> /// <param name="tokenScope">The requested access scopes to be granted to the token.</param> /// <param name="requireCompactToken">`<see langword="true"/>` if requesting a compact format token; otherwise `<see langword="false"/>`.</param> /// <param name="tokenDuration"> /// The requested lifetime of the requested token. /// <para/> /// The authority granting the token decides the actual lifetime of any token granted, regardless of the duration requested. /// </param> public async Task <Token> GeneratePersonalAccessToken(TargetUri targetUri, Token accessToken, VstsTokenScope tokenScope, bool requireCompactToken, TimeSpan?tokenDuration) { return(await Task.FromResult(new Token("personal-access-token", TokenType.Personal))); }