From 8c513cbf84cee170a80242829eb9aad41dcc6278 Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Thu, 23 May 2013 12:47:57 +0100 Subject: get changelog via /changes/ API call --- meta.pl | 70 +++++++++++++---------------------------------------------------- 1 file 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; -- cgit v1.2.3