diff --git a/dev-tools/es_release_notes.pl b/dev-tools/es_release_notes.pl index be008d2e3ac..7603e44858e 100644 --- a/dev-tools/es_release_notes.pl +++ b/dev-tools/es_release_notes.pl @@ -22,9 +22,10 @@ use HTTP::Tiny; use IO::Socket::SSL 1.52; use utf8; -my $Base_URL = 'https://api.github.com/repos/'; -my $User_Repo = 'elasticsearch/elasticsearch/'; -my $Issue_URL = "http://github.com/${User_Repo}issues/"; +my $Github_Key = load_github_key(); +my $Base_URL = "https://${Github_Key}api.github.com/repos/"; +my $User_Repo = 'elasticsearch/elasticsearch/'; +my $Issue_URL = "http://github.com/${User_Repo}issues/"; my @Groups = qw(breaking feature enhancement bug regression doc test); my %Group_Labels = ( @@ -192,6 +193,25 @@ sub fetch { return $json->decode( $response->{content} ); } +#=================================== +sub load_github_key { +#=================================== + my ($file) = glob("~/.github_auth"); + unless ( -e $file ) { + warn "File ~/.github_auth doesn't exist - using anonymous API. " + . "Generate a Personal Access Token at https://github.com/settings/applications\n"; + return ''; + } + open my $fh, $file or die "Couldn't open $file: $!"; + my ($key) = <$fh> || die "Couldn't read $file: $!"; + $key =~ s/^\s+//; + $key =~ s/\s+$//; + die "Invalid GitHub key: $key" + unless $key =~ /^[0-9a-f]{40}$/; + return "$key:x-oauth-basic@"; + +} + #=================================== sub dump_labels { #===================================