Files
danbooru/app/logical/sqs_service.rb
evazion a7dc05ce63 Enable frozen string literals.
Make all string literals immutable by default.
2021-12-14 21:33:27 -06:00

46 lines
1.2 KiB
Ruby

# frozen_string_literal: true
# A wrapper for the Amazon SQS API. Used by the PostArchive and PoolArchive
# service to record post and pool versions.
#
# @see https://docs.aws.amazon.com/sqs/index.html
# @see https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SQS/Client.html
class SqsService
attr_reader :url
# @param url [String] the URL of the Amazon SQS queue
def initialize(url)
@url = url
end
# @return [Boolean] true if the SQS service is configured
def enabled?
Danbooru.config.aws_credentials.set? && url.present?
end
# Sends a message to the Amazon SQS queue.
# @param string [String] the message to send
# @param options [Hash] extra options for the SQS call
# @see https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SQS/Client.html#send_message-instance_method
def send_message(string, options = {})
return unless enabled?
sqs.send_message(
options.merge(
message_body: string,
queue_url: url
)
)
end
private
# @return [Aws::SQS::Client] the SQS API client object
def sqs
@sqs ||= Aws::SQS::Client.new(
credentials: Danbooru.config.aws_credentials,
region: Danbooru.config.aws_sqs_region
)
end
end