public async Task <IamTokenCreateResult> GetIamToken(TokenRecipientOptions options, CancellationToken cancellationToken = default) { if (options == null) { throw new ArgumentNullException(nameof(options)); } ThrowIfDisposed(); cancellationToken.ThrowIfCancellationRequested(); var jsonContent = !string.IsNullOrWhiteSpace(options.JwtToken) ? JsonBodyHelper.JwtBody(options.JwtToken) : JsonBodyHelper.OauthBody(options.OauthToken); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, options.EndPoint); var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); request.Content = content; var httpOptions = new HttpClientOptions() { HttpClientTimeout = options.HttpClientTimeout, #if !NETCOREAPP EndPoint = options.EndPoint #endif }; return(await ServiceCaller.CallService <IamTokenCreateResult>(httpOptions, async (client) => { var httpResponse = await client.SendAsync(request, cancellationToken); var stream = await httpResponse.Content.ReadAsStreamAsync(); var resultContent = await new StreamReader(stream).ReadToEndAsync(); if (httpResponse.IsSuccessStatusCode) { try { return JsonBodyHelper.DeserializeResult(resultContent); } catch (Exception ex) { throw new YandexIamServiceException(resultContent, ex, httpResponse.StatusCode); } } else { throw new YandexIamServiceException(resultContent, httpResponse.StatusCode); } })); }
public static async Task <IamTokenCreateResult> GetIamTokenWithOAuth(this ITokenRecipient client, string token, CancellationToken cancellationToken = default) { return(await client.GetIamToken(TokenRecipientOptions.WithOAuthToken(token), cancellationToken)); }