Skip to content

Wrapper for IO such as third-party API calls to prevent sudden blow up the main program

License

Notifications You must be signed in to change notification settings

creadone/cocoon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cocoon

Wrapper for IO such as third-party API calls to prevent sudden blow up the main program.

Installation

  1. Add the dependency to your shard.yml:
dependencies:
  cocoon:
    github: creadone/cocoon
  1. Run shards install

Usage

require "cocoon"
require "http/client"

alias Response = HTTP::Client::Response
cocoon = Cocoon::Wrapper(Response).new

loop do
  result = cocoon.wrap do
    if Random.rand > 0.5
      HTTP::Client.get("https://github.com")
    else
      raise "Connection is lost"
    end
  end

  # something in the &block raised Exception
  if result.is_a?(Exception)
    puts result.message
  end

  # &block is done
  if result.is_a?(Response)
    puts "X-GitHub-Request-Id: #{result.headers["X-GitHub-Request-Id"]}"
  end

  # &block has no result or task is not ended yet
  if result.is_a?(Nil)
    puts "Nothing..."
  end

  sleep 1
end

# => Nothing...
# => X-GitHub-Request-Id: EF51:10C35:3A33E0D:3BCCF8A:603C72E7
# => Connection is lost
# => X-GitHub-Request-Id: EF52:0AF5:44114C4:45B5044:603C72E9
# => X-GitHub-Request-Id: EF53:E298:B55ADC:B9B0DF:603C72EA
# => Connection is lost
# => Connection is lost

Contributing

  1. Fork it (https://github.com/creadone/cocoon/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

About

Wrapper for IO such as third-party API calls to prevent sudden blow up the main program

Topics

Resources

License

Stars

Watchers

Forks