Пример #1
0
        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
                });
            }
        }
Пример #2
0
        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}"); }
        }