peritor / happening

An EventMachine based S3 client
Other
145 stars 21 forks source link

Making it easier to use EM's callback chain #10

Open rbriski opened 13 years ago

rbriski commented 13 years ago

I've made 2 small changes.

First, the deferrable object is passed back after execute is called. Second, I've set the deferred state appropriately after each internal callback. Together these changes allow someone to create a much richer callback chain than is currently possible with on_success and on_error.

Here's an example of what I'm doing with it

s = Sssnake.new
s.on_message do | file |
  bname = File.basename(local)
  item = Happening::S3::Item.new(
    'a.bucket', 
    "some/path/#{bname}",
    :aws_access_key_id => Settings[:aws][:aws_access_key_id], 
    :aws_secret_access_key => Settings[:aws][:aws_secret_key]
  )
  df = item.put(File.read(local))

  df
end

In this example, the file upload is wrapped in a "message received" event from a queue. Is this something that fits how this library is being used?

jweiss commented 13 years ago

I just merged another pull requests that already returns the response/deferrable object.

Your addition of decorating the response/deferrable objects sounds great.

Could you please update your patch to work with the latest master and add some tests for this functionality?