@@ -20,13 +20,6 @@ has cve_url => (
2020 default => ' https://butterfly.cpansec.org/feed/cpansa.json' ,
2121);
2222
23- has cve_dev_url => (
24- is => ' ro' ,
25- isa => Uri,
26- coerce => 1,
27- default => ' https://butterfly.cpansec.org/feed/cpansa.json' ,
28- );
29-
3023has test => (
3124 is => ' ro' ,
3225 isa => Bool,
@@ -73,8 +66,10 @@ sub index_cve_data {
7366
7467 for my $dist ( sort keys %{$data } ) {
7568 for my $cpansa ( @{ $data -> {$dist } } ) {
76- if ( !$cpansa -> {cpansa_id } ) {
77- log_warn { sprintf ( " Dist '%s ' missing cpansa_id" , $dist ) };
69+ if ( !$cpansa -> {cpansa_id } && !$cpansa -> {cve_id } ) {
70+ log_warn {
71+ sprintf ( " Dist '%s ' missing cpansa_id and cve_id" , $dist )
72+ };
7873 next ;
7974 }
8075
@@ -195,6 +190,7 @@ sub index_cve_data {
195190
196191 my $doc_data = {
197192 distribution => $dist ,
193+ cve_id => $cpansa -> {cve_id },
198194 cpansa_id => $cpansa -> {cpansa_id },
199195 affected_versions => $cpansa -> {affected_versions },
200196 cves => $cpansa -> {cves },
@@ -210,8 +206,15 @@ sub index_cve_data {
210206 delete $doc_data -> {$k } unless exists $valid_keys {$k };
211207 }
212208
209+ if ( $cpansa -> {cve_id } && $cpansa -> {cpansa_id } ) {
210+
211+ # if both exist, ensure an older record using cpansa_id as the
212+ # id is removed.
213+ $bulk -> delete ( { id => $cpansa -> {cpansa_id } } );
214+ }
215+
213216 $bulk -> update( {
214- id => $cpansa -> {cpansa_id },
217+ id => $cpansa -> {cve_id } // $cpansa -> { cpansa_id },
215218 doc => $doc_data ,
216219 doc_as_upsert => true,
217220 } );
@@ -226,7 +229,7 @@ sub retrieve_cve_data {
226229
227230 return decode_json( path( $self -> json_file )-> slurp ) if $self -> json_file;
228231
229- my $url = $self -> test ? $self -> cve_dev_url : $self -> cve_url;
232+ my $url = $self -> cve_url;
230233
231234 log_info { ' Fetching data from ' , $url };
232235 my $resp = $self -> ua-> get($url );
0 commit comments