class Gentle::Client

Attributes

business_unit[R]
client_id[R]
warehouse[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/gentle/client.rb, line 15
def initialize(options = {})
  options        = options.with_indifferent_access
  @buckets       = options[:buckets]
  @queues        = options[:queues]
  @client_id     = options[:client_id]
  @warehouse     = options[:warehouse]
  @business_unit = options[:business_unit]
  @credentials   = options.slice(:access_key_id, :secret_access_key)
  verify!
end

Public Instance Methods

from_quiet_bucket() click to toggle source
# File lib/gentle/client.rb, line 30
def from_quiet_bucket
  @from_quiet_bucket ||= fetch_bucket(@buckets[:from])
end
from_quiet_queue() click to toggle source
# File lib/gentle/client.rb, line 38
def from_quiet_queue
  @from_quiet_queue ||= fetch_queue(@queues[:from])
end
quiet_inventory_queue() click to toggle source
# File lib/gentle/client.rb, line 42
def quiet_inventory_queue
  @quiet_inventory_queue ||= fetch_queue(@queues[:inventory])
end
to_quiet_bucket() click to toggle source
# File lib/gentle/client.rb, line 26
def to_quiet_bucket
  @to_quiet_bucket ||= fetch_bucket(@buckets[:to])
end
to_quiet_queue() click to toggle source
# File lib/gentle/client.rb, line 34
def to_quiet_queue
  @to_quiet_queue ||= fetch_queue(@queues[:to])
end

Private Instance Methods

all_buckets?() click to toggle source
# File lib/gentle/client.rb, line 80
def all_buckets?
  has_keys?(@buckets, [:from, :to])
end
all_credentials?() click to toggle source
# File lib/gentle/client.rb, line 76
def all_credentials?
  has_keys?(@credentials, [:access_key_id, :secret_access_key])
end
all_queues?() click to toggle source
# File lib/gentle/client.rb, line 84
def all_queues?
  has_keys?(@queues, [:from, :to, :inventory])
end
fetch_bucket(name) click to toggle source
# File lib/gentle/client.rb, line 55
def fetch_bucket(name)
  bucket = s3_client.buckets[name]
  raise(InvalidBucketError.new("#{name} is not a valid bucket")) unless bucket.exists?
  bucket
end
fetch_queue(url) click to toggle source
# File lib/gentle/client.rb, line 61
def fetch_queue(url)
  queue = sqs_client.queues[url]
  raise(InvalidQueueError.new("#{url} is not a valid queue")) unless queue.exists?
  queue
end
has_keys?(hash, keys) click to toggle source
# File lib/gentle/client.rb, line 88
def has_keys?(hash, keys)
  keys.reduce(hash) {|result, key| result && hash[key]}
end
s3_client() click to toggle source
# File lib/gentle/client.rb, line 51
def s3_client
  @s3_client ||= AWS::S3.new(@credentials)
end
sqs_client() click to toggle source
# File lib/gentle/client.rb, line 47
def sqs_client
  @sqs_client ||= AWS::SQS.new(@credentials)
end
verify!() click to toggle source
# File lib/gentle/client.rb, line 67
def verify!
  raise(InitializationError.new("Credentials cannot be missing")) unless all_credentials?
  raise(InitializationError.new("Both to and from buckets need to be set")) unless all_buckets?
  raise(InitializationError.new("To, From and Inventory queues need to be set")) unless all_queues?
  raise(InitializationError.new("client_id needs to be set")) unless @client_id
  raise(InitializationError.new("business_unit needs to be set")) unless @business_unit
  raise(InitializationError.new("warehouse needs to be set")) unless @warehouse
end