forked from piotrmurach/github
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgithub_api.rb
More file actions
131 lines (117 loc) · 2.78 KB
/
github_api.rb
File metadata and controls
131 lines (117 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# encoding: utf-8
require 'pp' if ENV['DEBUG']
require 'faraday'
require 'github_api/version'
require 'github_api/configuration'
require 'github_api/constants'
require 'github_api/utils/url'
require 'github_api/connection'
require 'github_api/deprecation'
require 'github_api/core_ext/ordered_hash'
require 'github_api/ext/faraday'
require 'github_api/middleware'
module Github
LIBNAME = 'github_api'
LIBDIR = File.expand_path("../#{LIBNAME}", __FILE__)
class << self
def included(base)
base.extend ClassMethods
end
# Alias for Github::Client.new
#
# @param [Hash] options
# the configuration options
#
# @return [Github::Client]
#
# @api public
def new(options = {}, &block)
Client.new(options, &block)
end
# Default middleware stack that uses default adapter as specified
# by configuration setup
#
# @return [Proc]
#
# @api private
def default_middleware(options = {})
Middleware.default(options)
end
# Delegate to Github::Client
#
# @api private
def method_missing(method_name, *args, &block)
if new.respond_to?(method_name)
new.send(method_name, *args, &block)
elsif configuration.respond_to?(method_name)
Github.configuration.send(method_name, *args, &block)
else
super
end
end
def respond_to?(method_name, include_private = false)
new.respond_to?(method_name, include_private) ||
configuration.respond_to?(method_name) ||
super(method_name, include_private)
end
end
module ClassMethods
# Requires internal libraries
#
# @param [String] prefix
# the relative path prefix
# @param [Array[String]] libs
# the array of libraries to require
#
# @return [self]
def require_all(prefix, *libs)
libs.each do |lib|
require "#{File.join(prefix, lib)}"
end
end
# The client configuration
#
# @return [Configuration]
#
# @api public
def configuration
@configuration ||= Configuration.new
end
alias_method :config, :configuration
# Configure options
#
# @example
# Github.configure do |c|
# c.some_option = true
# end
#
# @yield the configuration block
# @yieldparam configuration [Github::Configuration]
# the configuration instance
#
# @return [nil]
#
# @api public
def configure
yield configuration
end
end
extend ClassMethods
require_all LIBDIR,
'authorization',
'validations',
'normalizer',
'parameter_filter',
'api',
'client',
'pagination',
'request',
'response',
'response_wrapper',
'error',
'mime_type',
'page_links',
'paged_request',
'page_iterator',
'params_hash'
end # Github