public async Task <WildApricotToken> SetTokenAsync(WildApricotToken respToken, bool updateToken) { if (updateToken) { respToken.AccessToken = respToken.AccessToken; respToken.TokenExpires = respToken.TokenExpires; await _context.SaveChangesAsync(); } else { try { _context.WaTokens.Add(respToken); await _context.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine(e); throw; } } return(respToken); }
public async Task <WildApricotToken> GetTokenAsync() { var updateToken = false; var token = await _context.WaTokens.SingleOrDefaultAsync(); if (token != null) { var tokenExpires = token?.TokenExpires ?? DateTime.Now; if (DateTime.Compare(tokenExpires, DateTime.Now.AddMinutes(3)) > 0) { return(token); } updateToken = true; } var tokenResponse = await WildApricotOps.GenerateNewAccessToken(_apiKey); var newToken = new WildApricotToken { AccessToken = tokenResponse.access_token, TokenExpires = DateTime.Now.AddSeconds(tokenResponse.expires_in) }; return(await SetTokenAsync(newToken, updateToken)); }
public static async Task <HttpResponseMessage> GetRequest(string apiResource, WildApricotToken token, List <string> queryList = null) { var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.AccessToken); var apiAddr = new UriBuilder(WildApricotApiUrl + apiResource); if (queryList != null) { queryList.ForEach(query => { if (apiAddr.Query != null && apiAddr.Query.Length > 1) { apiAddr.Query = apiAddr.Query.Substring(1) + "&" + query; } else { apiAddr.Query = query; } }); } try { return(await client.GetAsync(apiAddr.ToString())); } catch (Exception e) { var message = e.Message + " " + e.InnerException; throw new Exception(message); } }
public static async Task <HttpResponseMessage> DeleteRequest(string apiResource, WildApricotToken token) { var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token.AccessToken); var apiAddr = new UriBuilder(WildApricotApiUrl + apiResource); try { return(await client.DeleteAsync(apiAddr.ToString())); } catch (Exception e) { var message = e.Message + " " + e.InnerException; throw new Exception(message); } }