Sha256: 1d6458fa7c319ba8bddd43a0fe990c5e86461d972b9f66e46b4b63cdf3816f3c

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

#!/usr/bin/env ruby

require 'optparse'
require 'aws-sdk-sqs'
require 'rack'

require 'mite'
require 'arthropod'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: #{$PROGRAM_NAME} [options]"

  opts.on("-q", "--queue [string]", "SQS queue name") do |q|
    options[:queue] = q
  end
  opts.on("-i", "--access-key-id [string]", "AWS access key ID, default to the AWS_ACCESS_KEY_ID environment variable") do |i|
    options[:access_key_id] = i
  end
  opts.on("-k", "--secret-access-key [string]", "AWS secret access key, default to the AWS_SECRET_ACCESS_KEY environment variable") do |k|
    options[:secret_access_key] = k
  end
  opts.on("-r", "--region [string]", "AWS region, default to the AWS_REGION environment variable") do |r|
    options[:region] = r
  end
  opts.on("-c", "--config [string]", "Path of the config.ru file, default to ./config.ru") do |c|
    options[:config] = c
  end
end.parse!

access_key_id = options[:access_key_id] || ENV["AWS_ACCESS_KEY_ID"]
secret_access_key = options[:secret_access_key] || ENV["AWS_SECRET_ACCESS_KEY"]
region = options[:region] || ENV["AWS_REGION"]
config = options[:config] || './config.ru'

client = Aws::SQS::Client.new({
  access_key_id: access_key_id,
  secret_access_key: secret_access_key,
  region: region,
})

server = Mite::Server.new(config: config)
loop do
  Arthropod::Server.pull(client: client, queue_name: options[:queue] || ENV["QUEUE_NAME"]) do |request|
    status, headers, io = server.process(request.body)

    chunks = []
    io.each do |chunk|
      chunks << chunk
    end

    [ status, headers, chunks.join ]
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mite-0.0.3 bin/mite