public async Task AddAmoAccountAsync(int id, string name, string subdomain, string client_id, string client_secret, string redirect_uri, string code) { var acc = await amoProvider.GetAmoAccountAsync(id); if (acc is not null) { acc.name = name; acc.subdomain = subdomain; acc.client_id = client_id; acc.client_secret = client_secret; acc.redirect_uri = redirect_uri; acc.code = code; await amoProvider.UpdateAccountAsync(acc); } else { acc = new AmoAccountAuth() { name = name, subdomain = subdomain, client_id = client_id, client_secret = client_secret, redirect_uri = redirect_uri, code = code }; await amoProvider.AddAccountAsync(acc); } if (_accounts.Any(x => x.id == id)) { _accounts.First(x => x.id == id).name = name; _accounts.First(x => x.id == id).subdomain = subdomain; _accounts.First(x => x.id == id).auth = new AuthProvider(acc, amoProvider, _concurrentConnections); } else { _accounts.Add(new AmoAccount() { id = id, name = name, subdomain = subdomain, auth = new AuthProvider(acc, amoProvider, _concurrentConnections), dataProvider = dataProvider }); } }
private async Task Refresh() { try { var content = JsonConvert.SerializeObject(new { _amoAccountAuth.client_id, _amoAccountAuth.client_secret, grant_type = "refresh_token", refresh_token = _refrToken, _amoAccountAuth.redirect_uri }, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); ProcessResponse(await GetResponse(content)); await _amoProvider.UpdateAccountAsync(_amoAccountAuth); } catch (ArgumentException) { await GetNew(); } catch (InvalidOperationException) { await GetNew(); } catch (Exception e) { throw new InvalidOperationException($"Unable to refresh token: {e.Message}"); } }