Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions .github/linters/.ruby-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,21 @@
# Rubocop Config file #
#######################
Metrics/MethodLength:
Max: 25
Max: 50
Layout/LineLength:
Max: 150
Metrics/BlockLength:
Max: 75
Max: 150
Metrics/AbcSize:
Max: 20
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
Layout/EndOfLine:
Enabled: false
Layout/LineLength:
Exclude:
- ruby/example_code/kms/decrypt_data.rb
Naming/FileName:
Enabled: false
Style/HashSyntax:
Expand Down
44 changes: 22 additions & 22 deletions ruby/Gemfile
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
source "https://rubygems.org"
ruby "3.1.2"
source 'https://rubygems.org'
ruby '3.1.2'

gem "aws-sdk"
gem "cli-ui"
gem "json"
gem "mail"
gem "mime"
gem "multi_json"
gem "openssl"
gem "open-uri"
gem "pp"
gem "rack"
gem "rack-test"
gem "rake"
gem "rspec"
gem "rubocop"
gem "rubocop-github"
gem "rubocop-rake"
gem "rubyzip"
gem "sequel"
gem "sinatra"
gem "zip"
gem 'aws-sdk'
gem 'cli-ui'
gem 'json'
gem 'mail'
gem 'mime'
gem 'multi_json'
gem 'openssl'
gem 'open-uri'
gem 'pp'
gem 'rack'
gem 'rack-test'
gem 'rake'
gem 'rspec'
gem 'rubocop'
gem 'rubocop-github'
gem 'rubocop-rake'
gem 'rubyzip'
gem 'sequel'
gem 'sinatra'
gem 'zip'
24 changes: 12 additions & 12 deletions ruby/Rakefile
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# frozen_string_literal: true

require "rake/testtask"
require "rspec/core/rake_task"
require "rubocop"
require "rubocop/rake_task"
require "rubocop-rake"
require 'rake/testtask'
require 'rspec/core/rake_task'
require 'rubocop'
require 'rubocop/rake_task'
require 'rubocop-rake'

task default: [:spec]

Rake::TestTask.new do |t|
t.pattern = "*/**/tests/test_*.rb"
t.pattern = '*/**/tests/test_*.rb'
t.verbose = true
t.warning = false
end

desc "Run specs."
desc 'Run specs.'
RSpec::Core::RakeTask.new do |t|
t.pattern = "*/**/*_spec.rb"
t.rspec_opts = ["--tag", "integ", "--tag", "~@quarantine"]
t.pattern = '*/**/*_spec.rb'
t.rspec_opts = ['--tag', 'integ', '--tag', '~@quarantine']
end

desc "Run rubocop"
desc 'Run rubocop'
RuboCop::RakeTask.new(:rubocop) do |t|
t.options = ["--config", "../.github/linters/.ruby-lint.yml"]
t.requires << "rubocop-rake"
t.options = ['--config', '../.github/linters/.ruby-lint.yml']
t.requires << 'rubocop-rake'
end
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,35 @@
# SPDX-License-Identifier: Apache-2.0
# frozen_string_literal: true

require "json"
require "aws-sdk-comprehend"
require "logger"
require 'json'
require 'aws-sdk-comprehend'
require 'logger'

def lambda_handler(event:, context:)
logger = Logger.new($stdout)

logger.info("event:\n #{event}\n")
logger.info("context:\n #{context}\n")

rekognition_client = Aws::Comprehend::Client.new(region: event["region"])
comprehend_client = Aws::Comprehend::Client.new(region: event['region'])

source_text = event["source_text"]
source_text = event['source_text']

logger.info("payload:\n #{source_text}")

response = rekognition_client.detect_dominant_language({ text: source_text })
response = comprehend_client.detect_dominant_language({ text: source_text })

language_code = response.languages[0].language_code

logger.info("detected dominant language: #{language_code}")

response = rekognition_client.detect_sentiment({
response = comprehend_client.detect_sentiment({
text: source_text,
language_code:
})

logger.info("Sentiment: #{response.sentiment}")
logger.info("Sentiment Score: #{response.sentiment_score}")

{ "sentiment" => response.sentiment, "language_code" => language_code }
{ 'sentiment' => response.sentiment, 'language_code' => language_code }
end
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# SPDX-License-Identifier: Apache-2.0
# frozen_string_literal: true

require "json"
require "aws-sdk-polly"
require "aws-sdk-s3"
require "logger"
require 'json'
require 'aws-sdk-polly'
require 'aws-sdk-s3'
require 'logger'

def lambda_handler(event, context)
logger = Logger.new($stdout)
Expand All @@ -14,22 +14,22 @@ def lambda_handler(event, context)
logger.info("context:\n #{context}")

# Create an instance of the Polly client
polly_client = Aws::Polly::Client.new(region: event["region"])
polly_client = Aws::Polly::Client.new(region: event['region'])

resp = polly_client.synthesize_speech({
engine: "neural",
output_format: "mp3",
text: event["translated_text"],
voice_id: "Ruth"
engine: 'neural',
output_format: 'mp3',
text: event['translated_text'],
voice_id: 'Ruth'
})

logger.info(resp.to_s)

# Define the bucket name and file name for the MP3 file in S3
bucket_name = event["bucket"]
bucket_name = event['bucket']
object_key = "#{event['object']}.mp3"

s3_client = Aws::S3::Client.new(region: event["region"])
s3_client = Aws::S3::Client.new(region: event['region'])

# Put the MP3 file to S3
s3_client.put_object(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
# SPDX-License-Identifier: Apache-2.0
# frozen_string_literal: true

require "json"
require "aws-sdk-textract"
require "logger"
require 'json'
require 'aws-sdk-textract'
require 'logger'

def lambda_handler(event:, context:)
logger = Logger.new($stdout)
Expand All @@ -13,13 +13,13 @@ def lambda_handler(event:, context:)
logger.info("context:\n #{context}\n")

# Create an instance of the Textract client
client = Aws::Textract::Client.new(region: event["region"])
client = Aws::Textract::Client.new(region: event['region'])

params = {
document: {
s3_object: {
bucket: event["bucket"],
name: event["object"]
bucket: event['bucket'],
name: event['object']
}
}
}
Expand All @@ -30,12 +30,12 @@ def lambda_handler(event:, context:)
extracted_words = []

response.blocks.each do |obj|
next unless obj.block_type.include?("LINE")
next unless obj.block_type.include?('LINE')

extracted_words.append(obj.text) if obj.respond_to?(:text) && obj.text
end

logger.info("extracted words: #{extracted_words}")

extracted_words.join(" ")
extracted_words.join(' ')
end
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
# SPDX-License-Identifier: Apache-2.0
# frozen_string_literal: true

require "json"
require "aws-sdk-translate"
require "logger"
require 'json'
require 'aws-sdk-translate'
require 'logger'

def lambda_handler(event:, context:)
logger = Logger.new($stdout)
Expand All @@ -13,11 +13,11 @@ def lambda_handler(event:, context:)
logger.info("context:\n #{context}")

# Create an instance of the Translate client
client = Aws::Translate::Client.new(region: event["region"])
client = Aws::Translate::Client.new(region: event['region'])

client.translate_text({
text: event["extracted_text"], # required
source_language_code: event["source_language_code"], # required
target_language_code: "en"
text: event['extracted_text'], # required
source_language_code: event['source_language_code'], # required
target_language_code: 'en'
})
end
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,28 @@

# frozen_string_literal: true

require "yaml"
require "aws-sdk-rdsdataservice"
require "aws-sdk-rds"
require "aws-sdk-ses"
require 'yaml'
require 'aws-sdk-rdsdataservice'
require 'aws-sdk-rds'
require 'aws-sdk-ses'

# A simple class for checking for databases and tables in an Amazon Aurora DB cluster.
class SetupDatabase

def initialize
@config = YAML.safe_load(File.open(File.join(File.dirname(__FILE__), "../", "config.yml")))
@config = YAML.safe_load(File.open(File.join(File.dirname(__FILE__), '../', 'config.yml')))
@data_client = Aws::RDSDataService::Client.new
@rds_client = Aws::RDS::Client.new
end

# Checks if database exists.
# @return [Boolean] false if DBClusterNotFoundFault; else true.
def database_exists?
identifier = Aws::ARNParser.parse(@config["resource_arn"])
identifier = Aws::ARNParser.parse(@config['resource_arn'])
@rds_client.wait_until(:db_cluster_available, db_cluster_identifier: identifier.resource) do |w|
w.max_attempts = 5
w.delay = 5
end
rescue Aws::RDS::Errors::DBClusterNotFoundFault => e
rescue Aws::RDS::Errors::DBClusterNotFoundFault
false
end

Expand All @@ -34,18 +33,16 @@ def database_exists?
def table_exists?
resp = @data_client.execute_statement(
{
resource_arn: @config["resource_arn"],
secret_arn: @config["secret_arn"],
sql: "show tables;",
database: @config["database"]
resource_arn: @config['resource_arn'],
secret_arn: @config['secret_arn'],
sql: 'show tables;',
database: @config['database']
}
)

resp[0].each { |table|
if table[0].string_value == @config["table_name"]
return true
end
}
resp[0].each do |table|
return true if table[0].string_value == @config['table_name']
end
false
end

Expand All @@ -54,27 +51,28 @@ def table_exists?
def create_table
@data_client.execute_statement(
{
resource_arn: @config["resource_arn"],
secret_arn: @config["secret_arn"],
sql: "CREATE TABLE work_items (work_item_id INT AUTO_INCREMENT PRIMARY KEY, description VARCHAR(400), guide VARCHAR(45), status VARCHAR(400), username VARCHAR(45), archived TINYINT(4));",
database: @config["database"],
resource_arn: @config['resource_arn'],
secret_arn: @config['secret_arn'],
sql: 'CREATE TABLE work_items (work_item_id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(400),
guide VARCHAR(45),
status VARCHAR(400),
username VARCHAR(45),
archived TINYINT(4));',

database: @config['database']
}
)
end

end

if __FILE__ == $0
# Checks for a database cluster & creates a table if none exists.
if __FILE__ == $PROGRAM_NAME
# Checks for a database cluster & creates a table if none exists.
begin
setup = SetupDatabase.new
if setup.database_exists?
unless setup.table_exists?
setup.create_table
end
else
raise "No DB cluster exists! Please run CDK script found in resources/cdk/aurora_serverless_app."
end
raise 'No DB cluster exists! Please run CDK script found in resources/cdk/aurora_serverless_app.' unless setup.database_exists?

setup.create_table unless setup.table_exists?
rescue StandardError => e
raise "Failed while checking for or creating existing database/tables:\n#{e}"
end
Expand Down
Loading
Loading