public void AuthParamParser_Run(string value) { var @params = AuthParamParser.Parse(value); foreach (var p in @params) { Console.WriteLine($"{p.Key} = \"{p.Value}\""); } }
private async Task <bool> TrySetOAuth(string parameter) { var authParams = AuthParamParser.Parse(parameter); authParams.TryGetValue("scope", out var scope); // don't update unless we are asked for higher access if (_authorization != null && scope == _scope) { return(false); } var queryString = QueryString.Empty; if (authParams.TryGetValue("service", out var service)) { queryString = queryString.Add("service", service); } if (scope != null) { queryString = queryString.Add("scope", scope); _scope = scope; } var request = new HttpRequestMessage(HttpMethod.Get, $"{authParams["realm"]}{queryString}"); string tokenCredentials; if (HasCredentials()) { tokenCredentials = EncodeCredentials(_username, _password); } else { tokenCredentials = _dockerConfigCredentials?.GetEncodedCredentials(_registry); } if (tokenCredentials != null) { request.Headers.Authorization = new AuthenticationHeaderValue("Basic", tokenCredentials); } var response = await _tokenClient.SendAsync(request); var content = await response.Content.ReadAsStringAsync(); response.EnsureSuccessStatusCode(); var tokenResponse = JsonConvert.DeserializeObject <TokenResponse>(content); _authorization = new AuthenticationHeaderValue("Bearer", tokenResponse.token ?? tokenResponse.access_token); _logger.LogDebug($"Using Bearer token for {_registry} ({queryString})"); return(true); }