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