Skip to content

Commit 14169d3

Browse files
committed
Downgraded spring boot to support open api docs
Several fixes
1 parent a9e8ea7 commit 14169d3

15 files changed

+115
-88
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ cd ./code/kafka-web-gateway/
1616

1717
* PostgreSQL Database
1818
* 2 Gateway's
19-
* 3 Apache Kafka's
20-
* 3 ZooKeeper's
19+
* 3 Apache Kafka Servers/Nodes
20+
* 3 ZooKeeper's Servers
2121
* Nginx
2222

2323
```

code/kafka-web-gateway/build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
22

33
plugins {
4-
id("org.springframework.boot") version "3.0.6"
4+
id("org.springframework.boot") version "2.7.12"
55
id("io.spring.dependency-management") version "1.1.0"
66
kotlin("jvm") version "1.7.22"
77
kotlin("plugin.spring") version "1.7.22"
@@ -28,6 +28,9 @@ dependencies {
2828
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
2929
runtimeOnly("org.postgresql:postgresql")
3030

31+
implementation("org.springdoc:springdoc-openapi-ui:1.6.15")
32+
runtimeOnly("org.springdoc:springdoc-openapi-kotlin:1.6.15")
33+
3134
testImplementation("org.springframework.boot:spring-boot-starter-test")
3235
testImplementation("org.springframework.kafka:spring-kafka-test")
3336
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.isel.ps.gateway.auth
22

3+
import com.isel.ps.gateway.model.Client
4+
35
interface AuthenticationProvider {
4-
fun validateToken(token: String): String?
6+
fun validateToken(token: String): Client?
57
}
68

code/kafka-web-gateway/src/main/kotlin/com/isel/ps/gateway/auth/HandlerAuthenticationInterceptor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package com.isel.ps.gateway.auth
22

33
import com.isel.ps.gateway.model.AdminToken
44
import com.isel.ps.gateway.service.AdminService
5-
import jakarta.servlet.http.HttpServletRequest
6-
import jakarta.servlet.http.HttpServletResponse
75
import org.springframework.stereotype.Component
86
import org.springframework.web.servlet.HandlerInterceptor
7+
import javax.servlet.http.HttpServletRequest
8+
import javax.servlet.http.HttpServletResponse
99

1010
@Component
1111
class HandlerAuthenticationInterceptor(val adminService: AdminService) : HandlerInterceptor {
Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,39 @@
11
package com.isel.ps.gateway.auth
22

33
import com.fasterxml.jackson.databind.ObjectMapper
4+
import com.isel.ps.gateway.model.Client
45
import org.springframework.http.HttpHeaders
56
import org.springframework.http.HttpStatus
67
import org.springframework.web.client.RestTemplate
78

89
class HttpAuthenticationProvider(private val authUrl: String, private val restTemplate: RestTemplate = RestTemplate()) :
910
AuthenticationProvider {
10-
override fun validateToken(token: String): String? {
11+
override fun validateToken(token: String): Client? {
1112
val headers = HttpHeaders()
1213
headers.setBearerAuth(token)
1314

1415
val response = restTemplate.getForEntity(authUrl, Void::class.java)
1516

1617
return if (response.statusCode === HttpStatus.OK) {
17-
extractUserFromRequestBody(response.body as String)
18+
val clientId = extractClientFromRequestBody(response.body as String?) ?: return null
19+
Client(clientId)
1820
} else {
19-
return null
21+
null
2022
}
2123
}
2224

23-
private fun extractUserFromRequestBody(requestBody: String): String {
24-
val objectMapper = ObjectMapper()
25-
val jsonNode = objectMapper.readTree(requestBody) // Parse request body JSON
26-
return jsonNode["user"].asText() // Extract "user" parameter as string
25+
private fun extractClientFromRequestBody(requestBody: String?): Long? {
26+
if (requestBody == null) {
27+
return null
28+
}
29+
30+
return try {
31+
val objectMapper = ObjectMapper()
32+
val jsonNode = objectMapper.readTree(requestBody) // Parse request body JSON
33+
jsonNode["clientId"].asLong() // Extract "user" parameter as string
34+
} catch (ex: Exception) {
35+
null
36+
}
2737
}
2838
}
2939

code/kafka-web-gateway/src/main/kotlin/com/isel/ps/gateway/config/GatewayConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package com.isel.ps.gateway.config
22

33
import com.isel.ps.gateway.model.Gateway
44
import com.isel.ps.gateway.service.GatewayService
5-
import jakarta.annotation.PostConstruct
65
import org.slf4j.Logger
76
import org.slf4j.LoggerFactory
87
import org.springframework.stereotype.Component
8+
import javax.annotation.PostConstruct
99

1010
@Component
1111
class GatewayConfig(private val gatewayService: GatewayService) {

code/kafka-web-gateway/src/main/kotlin/com/isel/ps/gateway/controller/AdminController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import com.isel.ps.gateway.model.Admin
55
import com.isel.ps.gateway.model.Err
66
import com.isel.ps.gateway.service.AdminService
77
import com.isel.ps.gateway.utils.Result
8-
import jakarta.servlet.http.HttpServletRequest
98
import org.springframework.http.HttpStatus
109
import org.springframework.http.ResponseEntity
1110
import org.springframework.web.bind.annotation.*
11+
import javax.servlet.http.HttpServletRequest
1212

1313
@RestController
1414
@RequestMapping("/api/admin")

code/kafka-web-gateway/src/main/kotlin/com/isel/ps/gateway/controller/SettingController.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import com.isel.ps.gateway.model.Setting
77
import com.isel.ps.gateway.service.AdminService
88
import com.isel.ps.gateway.service.SettingService
99
import com.isel.ps.gateway.utils.Result
10-
import jakarta.servlet.http.HttpServletRequest
1110
import org.springframework.http.HttpStatus
1211
import org.springframework.http.ResponseEntity
1312
import org.springframework.web.bind.annotation.*
13+
import javax.servlet.http.HttpServletRequest
1414

1515
@RestController
1616
@RequestMapping("/api/setting")

code/kafka-web-gateway/src/main/kotlin/com/isel/ps/gateway/logging/LogInterceptor.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.isel.ps.gateway.logging
22

3-
import jakarta.servlet.http.HttpServletRequest
4-
import jakarta.servlet.http.HttpServletResponse
53
import org.springframework.http.HttpMethod
64
import org.springframework.stereotype.Component
75
import org.springframework.web.servlet.HandlerInterceptor
6+
import javax.servlet.http.HttpServletRequest
7+
import javax.servlet.http.HttpServletResponse
88

99
@Component
1010
class LogInterceptor(val logService: LoggingService) : HandlerInterceptor {
1111

1212
override fun preHandle(request: HttpServletRequest, response: HttpServletResponse, handler: Any): Boolean {
13-
if (request.method == HttpMethod.GET.name() || request.method == HttpMethod.DELETE.name() || request.method == HttpMethod.PUT.name()) {
13+
if (request.method == HttpMethod.GET.name || request.method == HttpMethod.DELETE.name || request.method == HttpMethod.PUT.name) {
1414
logService.displayReq(request, null)
1515
}
1616
return true

code/kafka-web-gateway/src/main/kotlin/com/isel/ps/gateway/logging/LoggingService.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.isel.ps.gateway.logging
22

3-
import jakarta.servlet.http.HttpServletRequest
4-
import jakarta.servlet.http.HttpServletResponse
53
import org.slf4j.Logger
64
import org.slf4j.LoggerFactory
75
import org.springframework.stereotype.Service
86
import java.util.*
7+
import javax.servlet.http.HttpServletRequest
8+
import javax.servlet.http.HttpServletResponse
99

1010
@Service
1111
class LoggingService {

0 commit comments

Comments
 (0)