Пример #1
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(PlatoTwitterSettings settings, IViewProviderContext context)
        {
            var model = new TwitterSettingsViewModel();

            // Validate model
            if (!await context.Updater.TryUpdateModelAsync(model))
            {
                return(await BuildEditAsync(settings, context));
            }

            // Update settings
            if (context.Updater.ModelState.IsValid)
            {
                // Encrypt the secret
                var consumerSecret    = string.Empty;
                var accessTokenSecret = string.Empty;

                if (!string.IsNullOrWhiteSpace(model.ConsumerSecret))
                {
                    try
                    {
                        consumerSecret = _encrypter.Encrypt(model.ConsumerSecret);
                    }
                    catch (Exception e)
                    {
                        if (_logger.IsEnabled(LogLevel.Error))
                        {
                            _logger.LogError(e, $"There was a problem encrypting the Twitter consumer secret. {e.Message}");
                        }
                    }
                }

                if (!string.IsNullOrWhiteSpace(model.AccessTokenSecret))
                {
                    try
                    {
                        accessTokenSecret = _encrypter.Encrypt(model.AccessTokenSecret);
                    }
                    catch (Exception e)
                    {
                        if (_logger.IsEnabled(LogLevel.Error))
                        {
                            _logger.LogError(e, $"There was a problem encrypting the Twitter access token secret. {e.Message}");
                        }
                    }
                }

                // Create the model
                settings = new PlatoTwitterSettings()
                {
                    ConsumerKey       = model.ConsumerKey,
                    ConsumerSecret    = consumerSecret,
                    CallbackPath      = model.CallbackPath,
                    AccessToken       = model.AccessToken,
                    AccessTokenSecret = accessTokenSecret
                };

                // Persist the settings
                var result = await _twitterSettingsStore.SaveAsync(settings);

                if (result != null)
                {
                    // Recycle shell context to ensure changes take effect
                    _platoHost.RecycleShellContext(_shellSettings);
                }
            }

            return(await BuildEditAsync(settings, context));
        }
Пример #2
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(TwitterSettings settings, IViewProviderContext context)
        {
            var model = new TwitterSettingsViewModel();

            // Validate model
            if (!await context.Updater.TryUpdateModelAsync(model))
            {
                return(await BuildEditAsync(settings, context));
            }

            // Update settings
            if (context.Updater.ModelState.IsValid)
            {
                // Encrypt the secret
                var consumerSecret    = string.Empty;
                var accessTokenSecret = string.Empty;

                if (!string.IsNullOrWhiteSpace(model.ConsumerSecret))
                {
                    try
                    {
                        var protector = _dataProtectionProvider.CreateProtector(nameof(TwitterOptionsConfiguration));
                        consumerSecret = protector.Protect(model.ConsumerSecret);
                    }
                    catch (Exception e)
                    {
                        _logger.LogError($"There was a problem encrypting the Twitter app secret. {e.Message}");
                    }
                }

                if (!string.IsNullOrWhiteSpace(model.AccessTokenSecret))
                {
                    try
                    {
                        var protector = _dataProtectionProvider.CreateProtector(nameof(TwitterOptionsConfiguration));
                        accessTokenSecret = protector.Protect(model.AccessTokenSecret);
                    }
                    catch (Exception e)
                    {
                        _logger.LogError($"There was a problem encrypting the Twitter app secret. {e.Message}");
                    }
                }

                // Create the model
                settings = new TwitterSettings()
                {
                    ConsumerKey       = model.ConsumerKey,
                    ConsumerSecret    = consumerSecret,
                    AccessToken       = model.AccessToken,
                    AccessTokenSecret = accessTokenSecret
                };

                // Persist the settings
                var result = await _TwitterSettingsStore.SaveAsync(settings);

                if (result != null)
                {
                    // Recycle shell context to ensure changes take effect
                    _platoHost.RecycleShellContext(_shellSettings);
                }
            }

            return(await BuildEditAsync(settings, context));
        }