blob: 0102406fd206fded9865bd6d7c8f15fa18c6c8bd (
plain)
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
|
module Github
class Client
attr_reader :connection, :rate_limit
def initialize(options)
@connection = Faraday.new(url: options.fetch(:url, root_endpoint)) do |faraday|
faraday.options.open_timeout = options.fetch(:timeout, 60)
faraday.options.timeout = options.fetch(:timeout, 60)
faraday.authorization 'token', options.fetch(:token)
faraday.adapter :net_http
end
@rate_limit = RateLimit.new(connection)
end
def get(url, query = {})
exceed, reset_in = rate_limit.get
sleep reset_in if exceed
Github::Response.new(connection.get(url, query))
end
private
def root_endpoint
custom_endpoint || github_endpoint
end
def custom_endpoint
Gitlab.config.omniauth.providers
.find { |provider| provider.name == 'github' }
.to_h
.dig('args', 'client_options', 'site')
end
def github_endpoint
OmniAuth::Strategies::GitHub.default_options[:client_options][:site]
end
end
end
|