summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2013-05-23 12:47:57 +0100
committerGianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>2013-05-23 12:47:57 +0100
commit8c513cbf84cee170a80242829eb9aad41dcc6278 (patch)
tree92162eed7d507987b23e809fe7c490edcb16ff63
parentmake it run under 5.12 (diff)
downloadmetacpan-diff-feed-8c513cbf84cee170a80242829eb9aad41dcc6278.tar.gz
metacpan-diff-feed-8c513cbf84cee170a80242829eb9aad41dcc6278.tar.bz2
metacpan-diff-feed-8c513cbf84cee170a80242829eb9aad41dcc6278.zip
get changelog via /changes/ API call
-rw-r--r--meta.pl70
1 files changed, 14 insertions, 56 deletions
diff --git a/meta.pl b/meta.pl
index f83cfaf..5c9b44b 100644
--- a/meta.pl
+++ b/meta.pl
@@ -25,17 +25,6 @@ around BUILDARGS => sub {
return $class->$orig($args);
};
-sub get_file {
- my ($self,$path) = @_;
-
- my $file_response = $api->ua->get(
- join '/',$api->base_url,'source',
- $self->author,$self->name,$path
- );
- return unless $file_response->{success};
- return $file_response->{content};
-}
-
sub get_previous {
my ($self) = @_;
@@ -70,51 +59,22 @@ sub get_previous {
return ref($self)->new($prev_release);
}
-sub search_files {
- my ($self,@criteria) = @_;
-
- my $files = $api->post(
- 'file/_search',
- {
- size => 30,
- query => {
- filtered => {
- query => { match_all => {} },
- filter => {
- and => [
- { term => { release => $self->name } },
- @criteria,
- ],
- },
- },
- },
- fields => [qw(name)],
- }
- );
- return map { $_->{fields}{name} } @{$files->{hits}{hits}//[]};
-}
-
-sub get_changelog_name {
+sub get_changelog_file {
my ($self) = @_;
- my @potential_changelogs = $self->search_files(
- { term => { level => 0 } },
- {
- or => [
- { prefix => { name => 'Change' } },
- { prefix => { name => 'change' } },
- { prefix => { name => 'CHANGE' } },
- ],
- },
- );
- my ($changelog_name) = grep {
- /^change(s|log)$/i
- } @potential_changelogs;
- return $changelog_name;
+ my $file_response;
+ eval {
+ $file_response = $api->fetch(
+ join '/','changes',
+ $self->author,$self->name,
+ );
+ };
+
+ return unless $file_response;
+ return $file_response->{content};
}
};
-
sub get_recent_releases {
my $now = DateTime->now;
my $yesterday = $now->clone->subtract(hours=>3);
@@ -139,17 +99,15 @@ sub get_recent_releases {
sub get_changelog_diff {
my ($release) = @_;
- my $changelog_name = $release->get_changelog_name;
-
- return {error=>'no changelog file'} unless $changelog_name;
+ my $this_changelog = $release->get_changelog_file;
- my $this_changelog = $release->get_file($changelog_name);
+ return {error=>'no changelog file'} unless $this_changelog;
my $prev_release = $release->get_previous;
return {diff=>$this_changelog} if !$prev_release;
- my $prev_changelog = $prev_release->get_file($changelog_name);
+ my $prev_changelog = $prev_release->get_changelog_file;
return {diff=>$this_changelog} unless $prev_changelog;