/// <summary> /// Refreshes the token asynchronous. /// </summary> /// <param name="clientSettings">ApiClientSettings needed for creating a proper refresh token HTTP post call.</param> /// <returns>Returns OAuth2AccessToken</returns> public static async Task <OAuth2AccessToken> RefreshTokenAsync(ApiClientSettings clientSettings) { var postUrl = DigiKeyUriConstants.TokenEndpoint; var content = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>(OAuth2Constants.GrantType, OAuth2Constants.GrantTypes.RefreshToken), new KeyValuePair <string, string>(OAuth2Constants.ClientId, clientSettings.ClientId), new KeyValuePair <string, string>(OAuth2Constants.ClientSecret, clientSettings.ClientSecret), new KeyValuePair <string, string>(OAuth2Constants.GrantTypes.RefreshToken, clientSettings.RefreshToken), }); var httpClient = new HttpClient(); var response = await httpClient.PostAsync(postUrl, content); var responseString = await response.Content.ReadAsStringAsync(); var oAuth2AccessTokenResponse = OAuth2Helpers.ParseOAuth2AccessTokenResponse(responseString); _log.DebugFormat("RefreshToken: " + oAuth2AccessTokenResponse); clientSettings.UpdateAndSave(oAuth2AccessTokenResponse); return(oAuth2AccessTokenResponse); }
/// <summary> /// Refreshes the token asynchronous. /// </summary> /// <param name="clientSettings">ApiClientSettings needed for creating a proper refresh token HTTP post call.</param> /// <returns>Returns OAuth2AccessToken</returns> public static async Task <OAuth2AccessToken> RefreshTokenAsync(ApiClientSettings clientSettings) { var postUrl = DigiKeyUriConstants.TokenEndpoint; var content = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>(OAuth2Constants.GrantType, OAuth2Constants.GrantTypes.RefreshToken), new KeyValuePair <string, string>(OAuth2Constants.GrantTypes.RefreshToken, clientSettings.RefreshToken), }); var httpClient = new HttpClient(); var clientIdConcatSecret = OAuth2Helpers.Base64Encode(clientSettings.ClientId + ":" + clientSettings.ClientSecret); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", clientIdConcatSecret); var response = await httpClient.PostAsync(postUrl, content); var responseString = await response.Content.ReadAsStringAsync(); var oAuth2AccessTokenResponse = OAuth2Helpers.ParseOAuth2AccessTokenResponse(responseString); clientSettings.UpdateAndSave(oAuth2AccessTokenResponse); return(oAuth2AccessTokenResponse); }
/// <summary> /// OAuth2 code flow authorization with apiclient.config values /// </summary> private async void Authorize() { // read clientSettings values from apiclient.config _clientSettings = ApiClientSettings.CreateFromConfigFile(); Console.WriteLine(_clientSettings.ToString()); // start up a HttpListener for the callback(RedirectUri) from the OAuth2 server var httpListener = new HttpListener(); httpListener.Prefixes.Add(_clientSettings.RedirectUri.EnsureTrailingSlash()); Console.WriteLine($"listening to {_clientSettings.RedirectUri}"); httpListener.Start(); // Initialize our OAuth2 service var oAuth2Service = new ApiClient.OAuth2.OAuth2Service(_clientSettings); var scopes = ""; // create Authorize url and send call it thru Process.Start var authUrl = oAuth2Service.GenerateAuthUrl(scopes); Process.Start(authUrl); // get the URL returned from the callback(RedirectUri) var context = await httpListener.GetContextAsync(); // Done with the callback, so stop the HttpListener httpListener.Stop(); // exact the query parameters from the returned URL var queryString = context.Request.Url.Query; var queryColl = HttpUtility.ParseQueryString(queryString); // Grab the needed query parameter code from the query collection var code = queryColl["code"]; Console.WriteLine($"Using code {code}"); // Pass the returned code value to finish the OAuth2 authorization var result = await oAuth2Service.FinishAuthorization(code); // Check if you got an error during finishing the OAuth2 authorization if (result.IsError) { Console.WriteLine("\n\nError : {0}", result.Error); Console.WriteLine("\n\nError.Description: {0}", result.ErrorDescription); } else { // Display the Access Token and Refresh Token to the Console. Console.WriteLine(); Console.WriteLine("Access token : {0}", result.AccessToken); Console.WriteLine("Refresh token: {0}", result.RefreshToken); Console.WriteLine("Expires in : {0}", result.ExpiresIn); _clientSettings.UpdateAndSave(result); Console.WriteLine("After a good refresh"); Console.WriteLine(_clientSettings.ToString()); } }
public static SettingsViewModel Create(ApiClientSettings settings) { return(new SettingsViewModel() { ClientId = settings.ClientId, ClientSecret = settings.ClientSecret, RedirectUri = settings.RedirectUri, }); }
public void SetUp() { _settings = new ApiClientSettings { BaseUrl = "http://someurl.com" }; _httpClientFactory = Substitute.For <IHttpClientFactory>(); _httpMessageHandler = new StubHttpMessageHandler(); _httpClientFactory.CreateClient(Arg.Any <string>()) .Returns(new HttpClient(_httpMessageHandler)); _target = new ApiClient(_settings, _httpClientFactory); }
static void Main(string[] args) { var settings = ApiClientSettings.CreateFromConfigFile(); //UsingDigiKeyApiClient.Models.DigiKeyRoot Digikey = null; //using (StreamReader sr = new StreamReader("DigiKeyData.json")) //{ // string json = sr.ReadToEnd(); // Digikey = JsonConvert.DeserializeObject<Models.DigiKeyRoot>(json); //} //UsingDigiKeyApiClient.Models.MouserRoot mouser = null; //using (StreamReader sr = new StreamReader("MouserData.json")) //{ // string json = sr.ReadToEnd(); // mouser = JsonConvert.DeserializeObject<Models.MouserRoot>(json); //} }
private async Task CallKeywordSearch() { var settings = ApiClientSettings.CreateFromConfigFile(); _log.DebugFormat(settings.ToString()); Console.WriteLine(settings.ToString()); try { if (settings.ExpirationDateTime < DateTime.Now) { // Let's refresh the token var oAuth2Service = new OAuth2Service(settings); var oAuth2AccessToken = await oAuth2Service.RefreshTokenAsync(); if (oAuth2AccessToken.IsError) { // Current Refresh token is invalid or expired _log.DebugFormat("Current Refresh token is invalid or expired "); Console.WriteLine("Current Refresh token is invalid or expired "); return; } settings.UpdateAndSave(oAuth2AccessToken); _log.DebugFormat("After call to refresh"); _log.DebugFormat(settings.ToString()); Console.WriteLine("After call to refresh"); Console.WriteLine(settings.ToString()); } var client = new ApiClientService(settings); var response = await client.KeywordSearch("P5555-ND"); // In order to pretty print the json object we need to do the following var jsonFormatted = JToken.Parse(response).ToString(Formatting.Indented); Console.WriteLine($"Reponse is {jsonFormatted} "); } catch (System.Exception e) { Console.WriteLine(e); throw; } }
public AppApiClient(HttpClient httpClient, ApiClientSettings apiClientSettings, IMemoryCache memoryCache = null, ILogger <AppApiClient> logger = null) : base(httpClient, apiClientSettings, memoryCache, logger) { }
public ApiClientBase(HttpClient client, ApiClientSettings apiClientSettings, IMemoryCache memoryCache = null, ILogger logger = null) : base(client, apiClientSettings, memoryCache, logger) { InitializeRepositories(client); }
public async Task <string> Get([FromQuery] string partId, [FromQuery] string quantity, [FromQuery] string currency) { // string apiToken = "41c44903-fdc0-417c-abb9-6c79bbad03f1"; //partId =string.IsNullOrEmpty(partId)? "GRM21BR71C225KA12L" : partId; // string mouserUrl = "https://api.mouser.com/api/v1/search/partnumber"; // MouserRoot restResponse = new MouserRoot(); // HttpClient client = new HttpClient(); // Models.ValueRow pResponse = new Models.ValueRow(); //// client.DefaultRequestHeaders.Add("Content-Type", "application/json"); // try // { // pResponse.PartNumber = partId; // pResponse.Quantity =Convert.ToInt32( string.IsNullOrEmpty(quantity) ? "1" : quantity); // Models.Rootobject bodyParam = new Models.Rootobject() { SearchByPartRequest = new Models.Searchbypartrequest() { mouserPartNumber = partId } }; // string json = JsonConvert.SerializeObject(bodyParam); // mouserUrl += "?apiKey="; // mouserUrl += apiToken; // HttpRequestMessage mouserRequest = new HttpRequestMessage() // { // Method = HttpMethod.Post, // RequestUri = new Uri(mouserUrl), // Content = new StringContent(json, Encoding.UTF8, "application/json") // }; // HttpResponseMessage response = await client.SendAsync(mouserRequest).ConfigureAwait(false); // response.EnsureSuccessStatusCode(); // string responseBody = await response.Content.ReadAsStringAsync(); // restResponse = JsonConvert.DeserializeObject<MouserRoot>(responseBody); // if (restResponse.SearchResults.Parts.Count() > 0) // { // pResponse.Manufacturer = restResponse.SearchResults.Parts[0].Manufacturer; // pResponse.Mouser = new Models.Mouser() { LeadTime = restResponse.SearchResults.Parts[0].LeadTime, AvailableQuantity = restResponse.SearchResults.Parts[0].Availability ,PriceBreakups = new List<Models.PriceBreakUp>()}; // if (restResponse.SearchResults.Parts[0].PriceBreaks.Count() > 0) // { // for (int i = 0; i < restResponse.SearchResults.Parts[0].PriceBreaks.Count(); i++) // { // pResponse.Mouser.PriceBreakups.Add(new Models.PriceBreakUp() { Price = restResponse.SearchResults.Parts[0].PriceBreaks[i].Price, Quantity = restResponse.SearchResults.Parts[0].PriceBreaks[i].Quantity.ToString() }); // } // } // } // } // catch (HttpRequestException e) // { // throw; // } // return pResponse; var settings = ApiClientSettings.CreateFromConfigFile(); string jsonFormatted = ""; try { if (settings.ExpirationDateTime < DateTime.Now) { // Let's refresh the token var oAuth2Service = new OAuth2Service(settings); var oAuth2AccessToken = oAuth2Service.RefreshTokenAsync().Result; if (oAuth2AccessToken.IsError) { // Current Refresh token is invalid or expired return(null); } settings.UpdateAndSave(oAuth2AccessToken); Console.WriteLine("After call to refresh"); Console.WriteLine(settings.ToString()); } var client = new ApiClientService(settings); var response = client.KeywordSearch("LM2904M").Result; // In order to pretty print the json object we need to do the following jsonFormatted = JToken.Parse(response).ToString(Formatting.Indented); } catch (System.Exception e) { Console.WriteLine(e); throw; } return(jsonFormatted); }
public static void UpdateOAuth2Service(ApiClientSettings clientSettings) { _oAuth2Service = new OAuth2Service(clientSettings); }
public HomeController() { // Load OAuth2 settings from config file apiclient.config ClientSettings = ApiClientSettings.CreateFromConfigFile(); }
public OAuth2Service(ApiClientSettings clientSettings) { ClientSettings = clientSettings; }
public QDotAPIClient(IOptions <ApiClientSettings> optionsAccessor) { _apiClientSettings = optionsAccessor.Value; }