Sha256: 60d53db3bc85346ad4f97d30ee64fc59256e3ca5530ff5d9f3aee141ac4412a9

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

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

module GH
  autoload :Cache,            'gh/cache'
  autoload :Case,             'gh/case'
  autoload :Error,            'gh/error'
  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 :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
    was, self.current = current, backend
    yield
  ensure
    self.current = 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

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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gh-0.4.2 lib/gh.rb
gh-0.4.1 lib/gh.rb
gh-0.4.0 lib/gh.rb