Sha256: 6ac38f976bbd497b05dba734db39ba7d9e2a85c841a811dacb25c9af4767301c

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

require 'gh/version'
require 'backports'
require 'forwardable'

module GH
  autoload :Cache,            'gh/cache'
  autoload :Case,             'gh/case'
  autoload :Error,            'gh/error'
  autoload :FaradayAdapter,   'gh/faraday_adapter'
  autoload :Instrumentation,  'gh/instrumentation'
  autoload :LazyLoader,       'gh/lazy_loader'
  autoload :LinkFollower,     'gh/link_follower'
  autoload :MergeCommit,      'gh/merge_commit'
  autoload :Normalizer,       'gh/normalizer'
  autoload :Pagination,       'gh/pagination'
  autoload :Parallel,         'gh/parallel'
  autoload :Remote,           'gh/remote'
  autoload :Response,         'gh/response'
  autoload :ResponseWrapper,  'gh/response_wrapper'
  autoload :Stack,            'gh/stack'
  autoload :Wrapper,          'gh/wrapper'

  def self.with(backend)
    backend = DefaultStack.build(backend) if Hash === backend
    return backend unless block_given?
    was, self.current = current, backend
    yield
  ensure
    self.current = was if was
  end

  def self.current
    Thread.current[:GH] ||= DefaultStack.new
  end

  def self.current=(backend)
    Thread.current[:GH] = backend
  end

  extend SingleForwardable
  def_delegators :current, :api_host, :[], :reset, :load, :post, :delete, :patch, :put, :in_parallel, :in_parallel?

  DefaultStack = Stack.new do
    use Instrumentation
    use Parallel
    use Pagination
    use LinkFollower
    use MergeCommit
    use LazyLoader
    use Cache
    use Normalizer
    use Remote
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gh-0.6.1 lib/gh.rb
gh-0.6.0 lib/gh.rb