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
|
# frozen_string_literal: true
module Octokit
# Authentication methods for {Octokit::Client}
module Authentication
# In Faraday 2.x, the authorization middleware uses new interface
FARADAY_BASIC_AUTH_KEYS =
if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
%i[authorization basic]
else
[:basic_auth]
end
# Indicates if the client was supplied Basic Auth
# username and password
#
# @see https://developer.github.com/v3/#authentication
# @return [Boolean]
def basic_authenticated?
!!(@login && @password)
end
# Indicates if the client was supplied an OAuth
# access token
#
# @see https://developer.github.com/v3/#authentication
# @return [Boolean]
def token_authenticated?
!!@access_token
end
# Indicates if the client was supplied a bearer token
#
# @see https://developer.github.com/early-access/integrations/authentication/#as-an-integration
# @return [Boolean]
def bearer_authenticated?
!!@bearer_token
end
# Indicates if the client was supplied an OAuth
# access token or Basic Auth username and password
#
# @see https://developer.github.com/v3/#authentication
# @return [Boolean]
def user_authenticated?
basic_authenticated? || token_authenticated?
end
# Indicates if the client has OAuth Application
# client_id and secret credentials to make anonymous
# requests at a higher rate limit
#
# @see https://developer.github.com/v3/#unauthenticated-rate-limited-requests
# @return [Boolean]
def application_authenticated?
!!(@client_id && @client_secret)
end
private
def login_from_netrc
return unless netrc?
require 'netrc'
info = Netrc.read netrc_file
netrc_host = URI.parse(api_endpoint).host
creds = info[netrc_host]
if creds.nil?
# creds will be nil if there is no netrc for this end point
octokit_warn "Error loading credentials from netrc file for #{api_endpoint}"
else
creds = creds.to_a
self.login = creds.shift
self.password = creds.shift
end
rescue LoadError
octokit_warn 'Please install netrc gem for .netrc support'
end
end
end
|