@@ -40,20 +40,20 @@ sub coverage {
40
40
41
41
sub get {
42
42
my ( $self , $author , $release ) = @_ ;
43
- $self -> request(" /release/$author /$release " );
43
+ $self -> request(" /release/$author /$release " )-> then( \&_with_distnameinfo ) ;
44
44
}
45
45
46
46
sub latest_by_author {
47
47
my ( $self , $pauseid ) = @_ ;
48
48
$self -> request(" /release/latest_by_author/$pauseid " )
49
- -> then( $self -> add_river );
49
+ -> then( \&_with_distnameinfo ) -> then( $self -> add_river );
50
50
}
51
51
52
52
sub all_by_author {
53
53
my ( $self , $pauseid , $page , $page_size ) = @_ ;
54
54
$self -> request( " /release/all_by_author/$pauseid " ,
55
55
undef , { page => $page , page_size => $page_size } )
56
- -> then( $self -> add_river );
56
+ -> then( \&_with_distnameinfo ) -> then( $self -> add_river );
57
57
}
58
58
59
59
sub recent {
@@ -66,7 +66,7 @@ sub recent {
66
66
page_size => $page_size ,
67
67
type => $type ,
68
68
}
69
- )-> then( $self -> add_river );
69
+ )-> then( \&_with_distnameinfo ) -> then( $self -> add_river );
70
70
}
71
71
72
72
sub modules {
@@ -82,7 +82,8 @@ sub modules {
82
82
83
83
sub find {
84
84
my ( $self , $distribution ) = @_ ;
85
- $self -> request(" /release/latest_by_distribution/$distribution " );
85
+ $self -> request(" /release/latest_by_distribution/$distribution " )
86
+ -> then( \&_with_distnameinfo );
86
87
}
87
88
88
89
# stolen from Module/requires
@@ -108,7 +109,7 @@ sub reverse_dependencies {
108
109
$data -> {took } ||= 0;
109
110
return $data ;
110
111
}
111
- )-> then( $self -> add_river );
112
+ )-> then( \&_with_distnameinfo ) -> then( $self -> add_river );
112
113
}
113
114
114
115
sub interesting_files {
@@ -118,17 +119,12 @@ sub interesting_files {
118
119
119
120
sub versions {
120
121
my ( $self , $dist ) = @_ ;
121
- $self -> request(" /release/versions/$dist " )-> then( sub {
122
+ $self -> request(" /release/versions/$dist " )-> then( \&_with_distnameinfo )
123
+ -> then( sub {
122
124
my ($data ) = @_ ;
123
- my $releases = delete $data -> {releases };
124
- for my $release (@$releases ) {
125
- $release -> {distname_version }
126
- = CPAN::DistnameInfo-> new( $release -> {download_url } )
127
- -> version;
128
- }
129
- $data -> {versions } = $releases ;
125
+ $data -> {versions } = delete $data -> {releases };
130
126
Future-> done($data );
131
- } );
127
+ } );
132
128
}
133
129
134
130
sub topuploaders {
@@ -137,6 +133,18 @@ sub topuploaders {
137
133
$self -> request( ' /release/top_uploaders' , undef , $param );
138
134
}
139
135
136
+ sub _with_distnameinfo {
137
+ my ($data ) = @_ ;
138
+ my $releases
139
+ = $data -> {releases } ? $data -> {releases } : [ $data -> {release } || () ];
140
+ for my $release (@$releases ) {
141
+ if ( my $url = $release -> {download_url } ) {
142
+ $release -> {distnameinfo } = CPAN::DistnameInfo-> new($url );
143
+ }
144
+ }
145
+ Future-> done($data );
146
+ }
147
+
140
148
__PACKAGE__ -> meta-> make_immutable;
141
149
142
150
1;
0 commit comments