10
10
import com .schibsted .security .artishock .npm .NpmPackageOrScope ;
11
11
import com .schibsted .security .artishock .shared .HttpClient ;
12
12
import com .schibsted .security .artishock .shared .SimpleCache ;
13
- import java .io .IOException ;
14
13
import java .util .ArrayList ;
15
- import java .util .HashMap ;
16
14
import java .util .List ;
17
- import java .util .Map ;
18
15
import java .util .Optional ;
19
16
import java .util .function .Supplier ;
20
17
import com .fasterxml .jackson .databind .DeserializationFeature ;
@@ -33,7 +30,7 @@ public NpmClient() {
33
30
34
31
public List <NpmPackageIdentifier > getPackageList (List <NpmPackageIdentifier > packages , ConnectionInfo connectionInfo ) {
35
32
log .info (() -> "Fetching select packages from " + connectionInfo .getPrefix ());
36
- return new ArrayList <>( getNpmPackages ( packages , connectionInfo ). keySet () );
33
+ return checkUpstream ( packages , connectionInfo );
37
34
}
38
35
39
36
public List <NpmPackageOrScope > notClaimedOrg (List <String > scopes ) {
@@ -61,52 +58,36 @@ boolean claimedOrgCached(String scope) {
61
58
}
62
59
}
63
60
64
- Map <NpmPackageIdentifier , NpmPackageInfo > getNpmPackages (List <NpmPackageIdentifier > packages , ConnectionInfo connectionInfo ) {
65
- var result = new HashMap <NpmPackageIdentifier , NpmPackageInfo >();
61
+ List <NpmPackageIdentifier > checkUpstream (List <NpmPackageIdentifier > packages , ConnectionInfo connectionInfo ) {
62
+ var result = new ArrayList <NpmPackageIdentifier >();
66
63
for (var packageName : packages ) {
67
- var npmjs = getPackageInfo ( packageName , connectionInfo );
68
- var p = convert ( npmjs );
69
- p . ifPresent ( npmPackageInfo -> result . put ( packageName , npmPackageInfo ));
64
+ if ( existsUpstream ( packageName , connectionInfo )) {
65
+ result . add ( packageName );
66
+ }
70
67
}
71
68
72
69
return result ;
73
70
}
74
71
75
- Optional <NpmPackageInfo > convert (ViewRaw viewRaw ) {
76
- if (viewRaw .error == null && viewRaw .errors == null ) {
77
- return Optional .of (new NpmPackageInfo (viewRaw ));
78
- } else {
79
- if (viewRaw .errors != null && viewRaw .errors .get (0 ).status == 404 ) {
80
- return Optional .empty ();
81
- } else if (viewRaw .error != null && (viewRaw .error .equals ("Not found" ) || viewRaw .error .equals ("not_found" ))) {
82
- return Optional .empty ();
83
- }
72
+ boolean existsUpstream (NpmPackageIdentifier packageName , ConnectionInfo connectionInfo ) {
73
+ Supplier <String > f = () -> Boolean .toString (packageExists (packageName .toString (), connectionInfo ));
74
+ var result = SimpleCache .getFromCacheOrExecute (connectionInfo , packageName .toString (), CacheCategory .PACKAGE_EXISTS , f );
84
75
85
- if (viewRaw .errors != null ) {
86
- throw new RuntimeException (String .format ("Got error %s" , viewRaw .errors .get (0 ).message ));
76
+ if (result .equals ("true" )) {
77
+ return true ;
78
+ } else if (result .equals ("false" )) {
79
+ return false ;
87
80
} else {
88
- throw new RuntimeException (String .format ("Got error %s " , viewRaw . error ));
81
+ throw new RuntimeException (String .format ("Must be 'true' or 'false' got '%s' " , result ));
89
82
}
90
- }
91
- }
92
-
93
- ViewRaw getPackageInfo (NpmPackageIdentifier packageName , ConnectionInfo connectionInfo ) {
94
- try {
95
- Supplier <String > f = () -> fetchPackageInfo (packageName .toString (), connectionInfo );
96
- var result = SimpleCache .getFromCacheOrExecute (connectionInfo , packageName .toString (), CacheCategory .PACKAGE_INFO , f );
97
-
98
- return mapper .readValue (result , ViewRaw .class );
99
- } catch (IOException e ) {
100
- throw new RuntimeException (e );
101
- }
102
83
}
103
84
104
85
boolean fetchOrgIsClaimed (ConnectionInfo connectionInfo , String scope ) {
105
86
return HttpClient .exists (connectionInfo , "/org/" + scope );
106
87
}
107
88
108
- private String fetchPackageInfo (String packageName , ConnectionInfo connectionInfo ) {
109
- return HttpClient .fetch (connectionInfo , "/" + packageName );
89
+ private boolean packageExists (String packageName , ConnectionInfo connectionInfo ) {
90
+ return HttpClient .exists (connectionInfo , "/" + packageName );
110
91
}
111
92
112
93
public ConnectionInfo upstream () {
0 commit comments