@@ -74,11 +74,12 @@ func NewGitHubProvider(p *ProviderData) *GitHubProvider {
74 return &GitHubProvider{ProviderData: p}
74 return &GitHubProvider{ProviderData: p}
77−func getGitHubHeader(accessToken string) http.Header {
77+func makeGitHubHeader(accessToken string) http.Header {
78− header := make(http.Header)
78+ // extra headers required by the GitHub API when making authenticated requests
79+ extraHeaders := map[string]string{
79− header.Set("Accept", "application/vnd.github.v3+json")
80+ acceptHeader: "application/vnd.github.v3+json",
80− header.Set("Authorization", fmt.Sprintf("token %s", accessToken))
81+ }
81− return header
82+ return makeAuthorizationHeader(tokenTypeToken, accessToken, extraHeaders)
84// SetOrgTeam adds GitHub org reading parameters to the OAuth2 scope
85// SetOrgTeam adds GitHub org reading parameters to the OAuth2 scope
@@ -129,7 +130,7 @@ func (p *GitHubProvider) hasOrg(ctx context.Context, accessToken string) (bool,
129 var op orgsPage
130 var op orgsPage
130 err := requests.New(endpoint.String()).
131 err := requests.New(endpoint.String()).
131 WithContext(ctx).
132 WithContext(ctx).
132− WithHeaders(getGitHubHeader(accessToken)).
133+ WithHeaders(makeGitHubHeader(accessToken)).
134 UnmarshalInto(&op)
135 UnmarshalInto(&op)
135 if err != nil {
136 if err != nil {
@@ -196,7 +197,7 @@ func (p *GitHubProvider) hasOrgAndTeam(ctx context.Context, accessToken string)
196 // nolint:bodyclose
197 // nolint:bodyclose
197 result := requests.New(endpoint.String()).
198 result := requests.New(endpoint.String()).
198 WithContext(ctx).
199 WithContext(ctx).
199− WithHeaders(getGitHubHeader(accessToken)).
200+ WithHeaders(makeGitHubHeader(accessToken)).
201 if result.Error() != nil {
202 if result.Error() != nil {
202 return false, result.Error()
203 return false, result.Error()
@@ -296,7 +297,7 @@ func (p *GitHubProvider) hasRepo(ctx context.Context, accessToken string) (bool,
296 var repo repository
297 var repo repository
297 err := requests.New(endpoint.String()).
298 err := requests.New(endpoint.String()).
298 WithContext(ctx).
299 WithContext(ctx).
299− WithHeaders(getGitHubHeader(accessToken)).
300+ WithHeaders(makeGitHubHeader(accessToken)).
301 UnmarshalInto(&repo)
302 UnmarshalInto(&repo)
302 if err != nil {
303 if err != nil {
@@ -324,7 +325,7 @@ func (p *GitHubProvider) hasUser(ctx context.Context, accessToken string) (bool,
325 err := requests.New(endpoint.String()).
326 err := requests.New(endpoint.String()).
326 WithContext(ctx).
327 WithContext(ctx).
327− WithHeaders(getGitHubHeader(accessToken)).
328+ WithHeaders(makeGitHubHeader(accessToken)).
329 UnmarshalInto(&user)
330 UnmarshalInto(&user)
330 if err != nil {
331 if err != nil {
@@ -347,7 +348,7 @@ func (p *GitHubProvider) isCollaborator(ctx context.Context, username, accessTok
348 result := requests.New(endpoint.String()).
349 result := requests.New(endpoint.String()).
349 WithContext(ctx).
350 WithContext(ctx).
350− WithHeaders(getGitHubHeader(accessToken)).
351+ WithHeaders(makeGitHubHeader(accessToken)).
352 if result.Error() != nil {
353 if result.Error() != nil {
353 return false, result.Error()
354 return false, result.Error()
@@ -411,7 +412,7 @@ func (p *GitHubProvider) GetEmailAddress(ctx context.Context, s *sessions.Sessio
412 err := requests.New(endpoint.String()).
413 err := requests.New(endpoint.String()).
413 WithContext(ctx).
414 WithContext(ctx).
414− WithHeaders(getGitHubHeader(s.AccessToken)).
415+ WithHeaders(makeGitHubHeader(s.AccessToken)).
416 UnmarshalInto(&emails)
417 UnmarshalInto(&emails)
417 if err != nil {
418 if err != nil {
@@ -446,7 +447,7 @@ func (p *GitHubProvider) GetUserName(ctx context.Context, s *sessions.SessionSta
447 err := requests.New(endpoint.String()).
448 err := requests.New(endpoint.String()).
448 WithContext(ctx).
449 WithContext(ctx).
449− WithHeaders(getGitHubHeader(s.AccessToken)).
450+ WithHeaders(makeGitHubHeader(s.AccessToken)).
451 UnmarshalInto(&user)
452 UnmarshalInto(&user)
452 if err != nil {
453 if err != nil {
@@ -465,7 +466,7 @@ func (p *GitHubProvider) GetUserName(ctx context.Context, s *sessions.SessionSta
466// ValidateSessionState validates the AccessToken
467// ValidateSessionState validates the AccessToken
467func (p *GitHubProvider) ValidateSessionState(ctx context.Context, s *sessions.SessionState) bool {
468func (p *GitHubProvider) ValidateSessionState(ctx context.Context, s *sessions.SessionState) bool {
468− return validateToken(ctx, p, s.AccessToken, getGitHubHeader(s.AccessToken))
469+ return validateToken(ctx, p, s.AccessToken, makeGitHubHeader(s.AccessToken))
471// isVerifiedUser
472// isVerifiedUser