3
3
import lombok .RequiredArgsConstructor ;
4
4
import org .jetbrains .annotations .NotNull ;
5
5
import org .lowcoder .api .home .SessionUserService ;
6
+ import org .lowcoder .domain .application .service .ApplicationServiceImpl ;
7
+ import org .lowcoder .domain .organization .service .OrgMemberServiceImpl ;
6
8
import org .lowcoder .domain .organization .service .OrganizationService ;
7
9
import org .lowcoder .infra .constant .NewUrl ;
8
10
import org .lowcoder .infra .js .NodeServerHelper ;
@@ -27,33 +29,59 @@ public class PrivateNpmRegistryController implements PrivateNpmRegistryEndpoint{
27
29
28
30
private static final String NPM_REGISTRY_METADATA = "npm/registry" ;
29
31
private static final String NPM_REGISTRY_ASSET = "npm/package" ;
32
+ private final OrgMemberServiceImpl orgMemberServiceImpl ;
33
+ private final ApplicationServiceImpl applicationServiceImpl ;
30
34
31
35
@ Override
32
- public Mono <ResponseEntity <Resource >> getNpmPackageMeta (String name ) {
33
- return forwardToNodeService (name , NPM_REGISTRY_METADATA );
36
+ public Mono <ResponseEntity <Resource >> getNpmPackageMeta (String applicationId , String name ) {
37
+ return forwardToNodeService (applicationId , name , NPM_REGISTRY_METADATA );
34
38
}
35
39
36
40
@ Override
37
- public Mono <ResponseEntity <Resource >> getNpmPackageAsset (String path ) {
38
- return forwardToNodeService (path , NPM_REGISTRY_ASSET );
41
+ public Mono <ResponseEntity <Resource >> getNpmPackageAsset (String applicationId , String path ) {
42
+ return forwardToNodeService (applicationId , path , NPM_REGISTRY_ASSET );
39
43
}
40
44
41
45
@ NotNull
42
- private Mono <ResponseEntity <Resource >> forwardToNodeService (String path , String prefix ) {
43
- return sessionUserService .getVisitorOrgMemberCache ().flatMap (orgMember -> organizationService .getOrgCommonSettings (orgMember .getOrgId ()).flatMap (organizationCommonSettings -> {
44
- Map <String , Object > config = Map .of ("npmRegistries" , organizationCommonSettings .get ("npmRegistries" ), "workspaceId" , orgMember .getOrgId ());
45
- return WebClientBuildHelper .builder ()
46
- .systemProxy ()
47
- .build ()
48
- .post ()
49
- .uri (nodeServerHelper .createUri (prefix + "/" + path ))
50
- .contentType (MediaType .APPLICATION_JSON )
51
- .body (BodyInserters .fromValue (config ))
52
- .retrieve ().toEntity (Resource .class )
53
- .map (response -> ResponseEntity
54
- .status (response .getStatusCode ())
55
- .headers (response .getHeaders ())
56
- .body (response .getBody ()));
57
- }));
46
+ private Mono <ResponseEntity <Resource >> forwardToNodeService (String applicationId , String path , String prefix ) {
47
+
48
+ String withoutLeadingSlash = path .startsWith ("/" ) ? path .substring (1 ) : path ;
49
+ if (applicationId .equals ("none" )) {
50
+ return sessionUserService .getVisitorOrgMemberCache ().flatMap (orgMember -> organizationService .getOrgCommonSettings (orgMember .getOrgId ()).flatMap (organizationCommonSettings -> {
51
+ Map <String , Object > config = Map .of ("npmRegistries" , organizationCommonSettings .get ("npmRegistries" ), "workspaceId" , orgMember .getOrgId ());
52
+ return WebClientBuildHelper .builder ()
53
+ .systemProxy ()
54
+ .build ()
55
+ .post ()
56
+ .uri (nodeServerHelper .createUri (prefix + "/" + withoutLeadingSlash ))
57
+ .contentType (MediaType .APPLICATION_JSON )
58
+ .body (BodyInserters .fromValue (config ))
59
+ .retrieve ().toEntity (Resource .class )
60
+ .map (response -> {
61
+ return ResponseEntity
62
+ .status (response .getStatusCode ())
63
+ .headers (response .getHeaders ())
64
+ .body (response .getBody ());
65
+ });
66
+ }));
67
+ } else {
68
+ return applicationServiceImpl .findById (applicationId ).flatMap (application -> organizationService .getById (application .getOrganizationId ())).flatMap (orgMember -> organizationService .getOrgCommonSettings (orgMember .getId ()).flatMap (organizationCommonSettings -> {
69
+ Map <String , Object > config = Map .of ("npmRegistries" , organizationCommonSettings .get ("npmRegistries" ), "workspaceId" , orgMember .getId ());
70
+ return WebClientBuildHelper .builder ()
71
+ .systemProxy ()
72
+ .build ()
73
+ .post ()
74
+ .uri (nodeServerHelper .createUri (prefix + "/" + withoutLeadingSlash ))
75
+ .contentType (MediaType .APPLICATION_JSON )
76
+ .body (BodyInserters .fromValue (config ))
77
+ .retrieve ().toEntity (Resource .class )
78
+ .map (response -> {
79
+ return ResponseEntity
80
+ .status (response .getStatusCode ())
81
+ .headers (response .getHeaders ())
82
+ .body (response .getBody ());
83
+ });
84
+ }));
85
+ }
58
86
}
59
87
}
0 commit comments