@@ -73,17 +73,19 @@ class ApiController {
7373 request : HttpServletRequest ,
7474 @PathVariable connectionName : String
7575 ): ResponseEntity <List <Map <String , Any >>> {
76- val uriString = request.servletPath
77- .split(" /" )
78- .asSequence()
79- .filter { it.isNotEmpty() }
80- .filter { it != " api" }
81- .filter { it != " headers" }
82- .joinToString(separator = " /" ) { it }
83- val uri: Uri = SqlPlaceholdersWrapper (DbUri (parseUri(uriString, request)))
84- return getListResponseEntityHeaders(uri)
76+ return getListResponseEntityHeaders(SqlPlaceholdersWrapper (DbUri (parseUri(request, " api/headers" ))))
77+ }
78+
79+
80+ @RequestMapping(value = [" /api/meta/{connectionName}/**" ], method = [GET , POST ])
81+ fun getResourceMetadata (
82+ request : HttpServletRequest ,
83+ @PathVariable connectionName : String
84+ ): ResponseEntity <List <Metadata >> {
85+ return responseEntity(SqlPlaceholdersWrapper (DbUri (parseUri(request, " api/meta" ))))
8586 }
8687
88+
8789 private fun getListResponseEntityHeaders (uri : Uri ): ResponseEntity <List <Map <String , Any >>> {
8890 val connections = dbConnectionList.getConnectionsByMask(uri.connection())
8991 try {
@@ -106,22 +108,6 @@ class ApiController {
106108 }
107109
108110
109- @RequestMapping(value = [" /api/meta/{connectionName}/**" ], method = [GET , POST ])
110- fun getResourceMetadata (
111- request : HttpServletRequest ,
112- @PathVariable connectionName : String
113- ): ResponseEntity <List <Metadata >> {
114- val uriString = request.servletPath
115- .split(" /" )
116- .filter { it.isNotEmpty() }
117- .filter { it != " api" }
118- .filter { it != " meta" }
119- .joinToString(separator = " /" ) { it }
120- val uri = SqlPlaceholdersWrapper (DbUri (parseUri(uriString, request)))
121- return responseEntity(uri)
122- }
123-
124-
125111 private fun responseEntity (uri : Uri ): ResponseEntity <List <Metadata >> {
126112 val fsResourceTypes = FsResourceTypes (
127113 listOf (dbConnectionList.getConnectionByName(uri.connection())), uri)
@@ -135,7 +121,13 @@ class ApiController {
135121 }
136122
137123
138- private fun parseUri (path : String , request : HttpServletRequest ): String {
124+ private fun parseUri (request : HttpServletRequest , basePath : String ): String {
125+ val path = request.servletPath
126+ .split(" /" )
127+ .asSequence()
128+ .filter { it.isNotEmpty() }
129+ .filter { ! basePath.split(" /" ).contains(it) }
130+ .joinToString(separator = " /" ) { it }
139131 return if (request.queryString == null || request.queryString.isEmpty()) {
140132 path
141133 } else {
0 commit comments