#!/usr/bin/env perl
# PODNAME: get_github_favorites
use 5.014;
use strict;
use warnings FATAL => 'all';
use feature 'say';
use utf8;
use open qw(:std :utf8);
sub get_repos_liked_by_user {
my ($github_login) = @_;
my @repos;
my $url = "https://api.github.com/users/$github_login/starred";
while ($url) {
my $response = HTTP::Tiny->new->get($url);
if ( $response->{headers}->{link} =~ /<(.*?)>; rel="next"/ ) {
$url = $1;
} else {
$url = undef;
}
my $json = $response->{content};
my $data = decode_json($json);
foreach my $d (@{$data}) {
push @repos, {
name => lc($d->{name}),
url => $d->{clone_url},
language => lc($d->{language} // 'unknown'),
};
}
}
return @repos;
}
sub main {
my $github_login = $ARGV[0];
if (not defined $github_login) {
say "You should run it as `$0 GITHUB_LOGIN`";
exit 1;
}
my @repos = get_repos_liked_by_user($github_login);
say 'namespace,name,source';
foreach my $r (@repos) {
my $language = $r->{language};
say
$language . ','
. $r->{name} . ','
. $r->{url}
;
}
}
main();
__END__
=pod
=encoding UTF-8
=head1 NAME
get_github_favorites
=head1 VERSION
version 1.0.5
=head1 AUTHOR
Ivan Bessarabov <ivan@bessarabov.ru>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Ivan Bessarabov.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut