From b86f2f9582eb8cc6993a56c5f37050efb306cec2 Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:54:05 +0900 Subject: [PATCH] fix pdns api clients (retry 11x) --- .../dnsapi/controller/DomainController.kt | 19 ++++++++++++---- .../dnsapi/controller/RecordController.kt | 22 ++++++++++++++----- .../space/mori/dnsapi/dto/ApiResponseDTO.kt | 8 ++++++- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/space/mori/dnsapi/controller/DomainController.kt b/src/main/kotlin/space/mori/dnsapi/controller/DomainController.kt index a70e528..8302469 100644 --- a/src/main/kotlin/space/mori/dnsapi/controller/DomainController.kt +++ b/src/main/kotlin/space/mori/dnsapi/controller/DomainController.kt @@ -6,7 +6,9 @@ import io.swagger.v3.oas.annotations.media.Schema import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponses import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.* +import org.springframework.web.server.ResponseStatusException import space.mori.dnsapi.PowerDNSAPIError import space.mori.dnsapi.db.Domain import space.mori.dnsapi.dto.* @@ -32,7 +34,10 @@ class DomainController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException( + HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -51,7 +56,9 @@ class DomainController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -68,7 +75,9 @@ class DomainController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -87,7 +96,9 @@ class DomainController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } diff --git a/src/main/kotlin/space/mori/dnsapi/controller/RecordController.kt b/src/main/kotlin/space/mori/dnsapi/controller/RecordController.kt index 3d520a5..94c8507 100644 --- a/src/main/kotlin/space/mori/dnsapi/controller/RecordController.kt +++ b/src/main/kotlin/space/mori/dnsapi/controller/RecordController.kt @@ -6,7 +6,9 @@ import io.swagger.v3.oas.annotations.media.Schema import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponses import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.* +import org.springframework.web.server.ResponseStatusException import space.mori.dnsapi.PowerDNSAPIError import space.mori.dnsapi.dto.* import space.mori.dnsapi.service.RecordService @@ -30,7 +32,9 @@ class RecordController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -47,7 +51,9 @@ class RecordController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -64,7 +70,9 @@ class RecordController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -82,7 +90,9 @@ class RecordController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } @@ -99,7 +109,9 @@ class RecordController( } catch(e : PowerDNSAPIError) { val errors = mutableListOf(e.error) errors.addAll(e.errors) - return ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }) + throw ResponseStatusException(HttpStatus.EXPECTATION_FAILED, + ApiResponseDTO(false, errors = errors.map { ErrorOrMessage(1, it) }, result = listOf(null)).toString() + ) } } } \ No newline at end of file diff --git a/src/main/kotlin/space/mori/dnsapi/dto/ApiResponseDTO.kt b/src/main/kotlin/space/mori/dnsapi/dto/ApiResponseDTO.kt index ce97312..2124070 100644 --- a/src/main/kotlin/space/mori/dnsapi/dto/ApiResponseDTO.kt +++ b/src/main/kotlin/space/mori/dnsapi/dto/ApiResponseDTO.kt @@ -1,11 +1,17 @@ package space.mori.dnsapi.dto +import com.google.gson.GsonBuilder + +val gson = GsonBuilder().setPrettyPrinting().create() + data class ApiResponseDTO( val success: Boolean = true, val errors: List = listOf(), val messages: List = listOf(), val result: T? = null -) +) { + override fun toString(): String = gson.toJson(this) +} data class ErrorOrMessage( val code: Int,