37 lines
1.2 KiB
Ruby
37 lines
1.2 KiB
Ruby
require 'gh'
|
|
require 'core_ext/hash/compact'
|
|
|
|
module Travis
|
|
module Github
|
|
require 'travis/github/services'
|
|
|
|
class << self
|
|
def setup
|
|
GH.set(
|
|
client_id: Travis.config.oauth2.client_id,
|
|
client_secret: Travis.config.oauth2.client_secret,
|
|
user_agent: "Travis-CI/#{TravisCore::VERSION} GH/#{GH::VERSION}",
|
|
origin: Travis.config.host,
|
|
api_url: Travis.config.github.api_url,
|
|
ssl: Travis.config.ssl.to_h.merge(Travis.config.github.ssl || {}).to_h.compact
|
|
)
|
|
end
|
|
|
|
def authenticated(user, &block)
|
|
fail "we don't have a github token for #{user.inspect}" if user.github_oauth_token.blank?
|
|
GH.with(:token => user.github_oauth_token, &block)
|
|
end
|
|
|
|
# TODO: Maybe this should move to gh?
|
|
def scopes_for(token)
|
|
token = token.github_oauth_token if token.respond_to? :github_oauth_token
|
|
scopes = GH.with(token: token.to_s) { GH.head('user') }.headers['x-oauth-scopes'] if token.present?
|
|
scopes &&= scopes.gsub(/\s/,'').split(',')
|
|
Array(scopes).sort
|
|
rescue GH::Error
|
|
[]
|
|
end
|
|
end
|
|
end
|
|
end
|