Skip to content

Commit 3c1da2a

Browse files
committed
validate live events credentials and stream name
Change-Id: I632d8d70da512f4e2580e40f3b0cf6347d30f4cf Reviewed-on: https://gerrit.instructure.com/94090 Tested-by: Jenkins Reviewed-by: Simon Williams <simon@instructure.com> Product-Review: Cody Cutrer <cody@instructure.com> QA-Review: Cody Cutrer <cody@instructure.com>
1 parent f7f3236 commit 3c1da2a

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

gems/live_events/lib/live_events/client.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ def self.aws_config(plugin_config)
5555
aws
5656
end
5757

58+
def valid?
59+
@kinesis.describe_stream(stream_name: @stream_name, limit: 1)
60+
true
61+
rescue Aws::Kinesis::Errors::ServiceError
62+
false
63+
end
64+
5865
def post_event(event_name, payload, time = Time.now, ctx = {}, partition_key = nil)
5966
statsd_prefix = "live_events.events.#{event_name}"
6067

lib/canvas/plugins/validators/live_events_validator.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
# with this program. If not, see <http://www.gnu.org/licenses/>.
1717
#
1818

19+
require 'aws-sdk'
20+
1921
module Canvas::Plugins::Validators::LiveEventsValidator
2022
def self.validate(settings, plugin_setting)
2123
if settings.map(&:last).all?(&:blank?)
@@ -45,11 +47,17 @@ def self.validate(settings, plugin_setting)
4547
err = true
4648
end
4749

48-
if err
50+
return false if err
51+
52+
settings = settings.slice(:kinesis_stream_name, :aws_access_key_id, :aws_secret_access_key, :aws_region, :aws_endpoint)
53+
temp_settings = settings.dup
54+
temp_settings[:aws_secret_access_key_dec] = temp_settings.delete(:aws_secret_access_key)
55+
unless LiveEvents::Client.new(temp_settings).valid?
56+
plugin_setting.errors.add(:base, I18n.t('Invalid AWS Configuration'))
4957
return false
50-
else
51-
return settings.slice(:kinesis_stream_name, :aws_access_key_id, :aws_secret_access_key, :aws_region, :aws_endpoint)
5258
end
59+
60+
settings
5361
end
5462
end
5563
end

0 commit comments

Comments
 (0)