Skip to content

Commit 1f94ec4

Browse files
authored
Merge pull request #1895 from metacpan/mickey/use_new_endpoints_by_user
use new endpoints by_user
2 parents 557621f + 15c9d0b commit 1f94ec4

File tree

6 files changed

+29
-70
lines changed

6 files changed

+29
-70
lines changed

lib/MetaCPAN/Web/Controller/Account/Favorite.pm

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,10 @@ sub _cache_key_for_user {
8080

8181
sub _add_fav_list_to_stash {
8282
my ( $self, $c, $size ) = @_;
83-
8483
my $user = $c->user;
85-
86-
my $faves_cv = $c->model('API::Favorite')->by_user( $user->id, $size );
87-
my $faves_data = $faves_cv->recv;
88-
my $faves = [
89-
sort { $b->{date} cmp $a->{date} }
90-
map { $_->{fields} } @{ $faves_data->{hits}{hits} }
91-
];
92-
84+
my $faves = $c->model('API::Favorite')->by_user( $user->id, $size );
9385
$c->stash( { faves => $faves } );
94-
9586
return $user;
96-
9787
}
9888

9989
__PACKAGE__->meta->make_immutable;

lib/MetaCPAN/Web/Controller/Author.pm

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,27 +54,7 @@ sub index : Chained('root') PathPart('') Args(0) {
5454
$c->detach('/not_found') unless ( $author->{pauseid} );
5555

5656
my $took = $data->{took};
57-
my $faves = [];
58-
59-
if ( $author->{user} ) {
60-
my $faves_data
61-
= $c->model('API::Favorite')->by_user( $author->{user} )->recv;
62-
$took += $faves_data->{took} || 0;
63-
64-
my @all_fav = map { $_->{fields}->{distribution} }
65-
@{ $faves_data->{hits}->{hits} };
66-
my $noLatest = $c->model('API::Release')->no_latest(@all_fav);
67-
$took += $noLatest->{took} || 0;
68-
69-
$faves = [
70-
map {
71-
my $distro = $_->{fields}->{distribution};
72-
$noLatest->{no_latest}->{$distro} ? () : $_->{fields};
73-
} @{ $faves_data->{hits}->{hits} }
74-
];
75-
single_valued_arrayref_to_scalar($faves);
76-
$faves = [ sort { $b->{date} cmp $a->{date} } @{$faves} ];
77-
}
57+
my $faves = $c->model('API::Favorite')->by_user( $author->{user} );
7858

7959
my $releases = [ map { $_->{fields} } @{ $data->{hits}->{hits} } ];
8060
single_valued_arrayref_to_scalar($releases);

lib/MetaCPAN/Web/Controller/Favorite.pm

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,12 @@ sub recent : Local : Args(0) {
1212
my @faves = map { $_->{_source} } @{ $data->{hits}->{hits} };
1313
my @user_ids = map { $_->{user} } @faves;
1414

15-
my $authors
16-
= $c->model('API::Author')->by_user( \@user_ids )->recv->{hits}
17-
->{hits};
18-
19-
my %author_for_user_id
20-
= map { $_->{fields}->{user} => $_->{fields}->{pauseid} } @{$authors};
15+
my $authors = $c->model('API::Author')->by_user( \@user_ids );
16+
my %author_for_user_id = map { $_->{user} => $_->{pauseid} } @{$authors};
2117

2218
foreach my $fave (@faves) {
23-
if ( exists $author_for_user_id{ $fave->{user} } ) {
24-
$fave->{clicked_by_author} = $author_for_user_id{ $fave->{user} };
25-
}
19+
next unless exists $author_for_user_id{ $fave->{user} };
20+
$fave->{clicked_by_author} = $author_for_user_id{ $fave->{user} };
2621
}
2722

2823
$c->stash(

lib/MetaCPAN/Web/Controller/Feed.pm

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,23 +120,15 @@ sub author : Local : Args(1) {
120120
$c->detach( '/not_found', [] );
121121
}
122122

123-
my $faves_cv = $author_info->{user}
124-
&& $c->model('API::Favorite')->by_user( $author_info->{user} );
125-
my $faves_data
126-
= $faves_cv
127-
? [
128-
map { single_valued_arrayref_to_scalar($_) }
129-
map { $_->{fields} } @{ $faves_cv->recv->{hits}{hits} }
130-
]
131-
: [];
123+
my $faves = $c->model('API::Favorite')->by_user( $author_info->{user} );
132124

133125
$c->stash->{feed} = $self->build_feed(
134126
host => $c->config->{web_host},
135127
title => "Recent CPAN activity of $author - MetaCPAN",
136128
entries => [
137129
sort { $b->{date} cmp $a->{date} }
138130
@{ $self->_format_release_entries($release_data) },
139-
@{ $self->_format_favorite_entries( $author, $faves_data ) }
131+
@{ $self->_format_favorite_entries( $author, $faves ) }
140132
],
141133
);
142134
}

lib/MetaCPAN/Web/Model/API/Author.pm

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package MetaCPAN::Web::Model::API::Author;
33
use Moose;
44
use namespace::autoclean;
55

6+
use Ref::Util qw( is_arrayref );
7+
68
extends 'MetaCPAN::Web::Model::API';
79

810
=head1 NAME
@@ -94,15 +96,20 @@ sub search {
9496

9597
sub by_user {
9698
my ( $self, $users ) = @_;
97-
98-
my $query = return $self->request(
99-
'/author/_search',
100-
{
101-
query => { terms => { user => $users } },
102-
fields => [qw(user pauseid)],
103-
size => 100
104-
}
105-
);
99+
return [] unless $users;
100+
101+
my $ret;
102+
if ( is_arrayref($users) ) {
103+
return unless @{$users};
104+
$ret = $self->request( '/author/by_user', undef, { user => $users } );
105+
}
106+
else {
107+
$ret = $self->request("/author/by_user/$users");
108+
}
109+
return unless $ret;
110+
111+
my $data = $ret->recv;
112+
return ( exists $data->{authors} ? $data->{authors} : [] );
106113
}
107114

108115
__PACKAGE__->meta->make_immutable;

lib/MetaCPAN/Web/Model/API/Favorite.pm

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,11 @@ sub get {
7777
sub by_user {
7878
my ( $self, $user, $size ) = @_;
7979
$size ||= 250;
80-
return $self->request(
81-
'/favorite/_search',
82-
{
83-
query => { match_all => {} },
84-
filter => { term => { user => $user }, },
85-
sort => ['distribution'],
86-
fields => [qw(date author distribution)],
87-
size => $size,
88-
}
89-
);
80+
my $ret = $self->request( "/favorite/by_user/$user", { size => $size } );
81+
return unless $ret;
82+
my $data = $ret->recv;
83+
return [] unless exists $data->{favorites};
84+
return $data->{favorites};
9085
}
9186

9287
sub recent {

0 commit comments

Comments
 (0)