Fixed error with incorrectly encoded osu user names

This commit is contained in:
nise.moe 2024-02-28 00:36:55 +01:00
parent 09060344f4
commit d3da468a93
3 changed files with 14 additions and 5 deletions

View File

@ -50,9 +50,13 @@ class UserDetailsController(
ResponseEntity.badRequest().build()
}
@GetMapping("user-details/{userId}")
fun getUserDetails(@PathVariable userId: String): ResponseEntity<UserDetailsResponse> {
val userDetails = this.userService.getUserDetails(username = userId)
data class UserDetailsRequest(
val userId: String
)
@PostMapping("user-details")
fun getUserDetails(@RequestBody request: UserDetailsRequest): ResponseEntity<UserDetailsResponse> {
val userDetails = this.userService.getUserDetails(username = request.userId)
?: return ResponseEntity.notFound().build()
var suspiciousScoresCondition = this.scoreService.getDefaultCondition()

View File

@ -10,9 +10,11 @@ import org.springframework.beans.factory.InitializingBean
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import java.net.URI
import java.net.URLEncoder
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse
import java.nio.charset.StandardCharsets
import java.util.concurrent.atomic.AtomicInteger
class InvalidOsuApiKeyException() : Exception()
@ -228,7 +230,7 @@ class OsuApi(
val accessToken = this.tokenService.getAccessToken()
val encodedUserId = userId.replace(' ', '_')
val uriBuilder = StringBuilder("https://osu.ppy.sh/api/v2/users/$encodedUserId")
val uriBuilder = StringBuilder("https://osu.ppy.sh/api/v2/users/${URLEncoder.encode(encodedUserId, StandardCharsets.UTF_8.toString())}")
if (mode != null) uriBuilder.append("/$mode")
if (key != null) uriBuilder.append("?key=$key")

View File

@ -68,7 +68,10 @@ export class ViewUserComponent implements OnInit, OnChanges, OnDestroy {
) { }
getUserInfo(): Observable<UserInfo> {
return this.httpClient.get<UserInfo>(`${environment.apiUrl}/user-details/${this.userId}`);
const body = {
userId: this.userId
}
return this.httpClient.post<UserInfo>(`${environment.apiUrl}/user-details`, body);
}
ngOnChanges(): void {