diff options
author | Gianni Ceccarelli <gianni.ceccarelli@net-a-porter.com> | 2013-05-23 12:47:57 +0100 |
---|---|---|
committer | Gianni Ceccarelli <gianni.ceccarelli@net-a-porter.com> | 2013-05-23 12:47:57 +0100 |
commit | 8c513cbf84cee170a80242829eb9aad41dcc6278 (patch) | |
tree | 92162eed7d507987b23e809fe7c490edcb16ff63 /meta.pl | |
parent | make it run under 5.12 (diff) | |
download | metacpan-diff-feed-8c513cbf84cee170a80242829eb9aad41dcc6278.tar.gz metacpan-diff-feed-8c513cbf84cee170a80242829eb9aad41dcc6278.tar.bz2 metacpan-diff-feed-8c513cbf84cee170a80242829eb9aad41dcc6278.zip |
get changelog via /changes/ API call
Diffstat (limited to 'meta.pl')
-rw-r--r-- | meta.pl | 70 |
1 files changed, 14 insertions, 56 deletions
@@ -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; |