From 226a5e0c161347d2dd663cbaab73f46fe61a14da Mon Sep 17 00:00:00 2001 From: "paul.bourseau" Date: Tue, 18 Jun 2024 14:23:42 +0200 Subject: [PATCH] feat(cdr): getCdr param is open --- .../ocpi/toolkit/modules/cdr/CdrsCpoClient.kt | 14 ++++------ .../toolkit/modules/cdr/CdrsEmspInterface.kt | 5 ++-- .../toolkit/modules/cdr/CdrsEmspServer.kt | 15 +++++------ .../cdr/repositories/CdrsEmspRepository.kt | 5 ++-- .../modules/cdr/services/CdrsEmspService.kt | 27 ++++++++++++------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsCpoClient.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsCpoClient.kt index 2a458510..9bf1d993 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsCpoClient.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsCpoClient.kt @@ -19,7 +19,7 @@ class CdrsCpoClient( private val transportClientBuilder: TransportClientBuilder, private val serverVersionsEndpointUrl: String, private val partnerRepository: PartnerRepository -) : CdrsEmspInterface { +) : CdrsEmspInterface { private suspend fun buildTransport(): TransportClient = transportClientBuilder .buildFor( module = ModuleID.cdrs, @@ -27,14 +27,12 @@ class CdrsCpoClient( partnerRepository = partnerRepository ) - override suspend fun getCdr( - cdrId: CiString - ): OcpiResponseBody = - with(buildTransport()) { + override suspend fun getCdr(param: URL): OcpiResponseBody = + with(transportClientBuilder.build(param)) { send( HttpRequest( method = HttpMethod.GET, - path = "/$cdrId" + path = "/" ).withRequiredHeaders( requestId = generateRequestId(), correlationId = generateCorrelationId() @@ -44,9 +42,7 @@ class CdrsCpoClient( .parseBody() } - override suspend fun postCdr( - cdr: Cdr - ): OcpiResponseBody = + override suspend fun postCdr(cdr: Cdr): OcpiResponseBody = with(buildTransport()) { send( HttpRequest( diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspInterface.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspInterface.kt index 36d9b908..38edbe82 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspInterface.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspInterface.kt @@ -15,7 +15,7 @@ import com.izivia.ocpi.toolkit.modules.cdr.domain.Cdr * - PATCH: n/a (CDRs cannot be updated) * - DELETE: n/a (CDRs cannot be removed) */ -interface CdrsEmspInterface { +interface CdrsEmspInterface { /** * GET Method * @@ -26,10 +26,9 @@ interface CdrsEmspInterface { * No structure defined. This is open to the eMSP to define, the URL is provided to the CPO by the eMSP in * the result of the POST request. Therefore, OCPI does not define variables. * - * @param cdrId (max-length 36) id of the Cdr object to get from the eMSP’s system. * @return Cdr Requested Cdr object. */ - suspend fun getCdr(cdrId: CiString): OcpiResponseBody + suspend fun getCdr(param: T): OcpiResponseBody /** * POST Method diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspServer.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspServer.kt index 3b1788d8..963aa910 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspServer.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/CdrsEmspServer.kt @@ -13,7 +13,7 @@ import com.izivia.ocpi.toolkit.transport.domain.HttpMethod import com.izivia.ocpi.toolkit.transport.domain.VariablePathSegment class CdrsEmspServer( - private val service: CdrsEmspInterface, + private val service: CdrsEmspInterface, versionsRepository: MutableVersionsRepository? = null, basePathOverride: String? = null ) : OcpiSelfRegisteringModuleServer( @@ -26,15 +26,14 @@ class CdrsEmspServer( override suspend fun doRegisterOn(transportServer: TransportServer) { transportServer.handle( method = HttpMethod.GET, - path = basePathSegments + listOf( - VariablePathSegment("cdrId") - ) + path = + basePathSegments + + listOf( + VariablePathSegment("cdrId") + ) ) { req -> req.httpResponse { - service - .getCdr( - cdrId = req.pathParams["cdrId"]!! - ) + service.getCdr(param = req.pathParams["cdrId"]!!) } } diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/repositories/CdrsEmspRepository.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/repositories/CdrsEmspRepository.kt index 8e9eee4d..70b8cd94 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/repositories/CdrsEmspRepository.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/repositories/CdrsEmspRepository.kt @@ -14,7 +14,7 @@ import com.izivia.ocpi.toolkit.modules.cdr.domain.Cdr * - PATCH: n/a (CDRs cannot be updated) * - DELETE: n/a (CDRs cannot be removed) */ -interface CdrsEmspRepository { +interface CdrsEmspRepository { /** * GET Method * @@ -25,10 +25,9 @@ interface CdrsEmspRepository { * No structure defined. This is open to the eMSP to define, the URL is provided to the CPO by the eMSP in * the result of the POST request. Therefore, OCPI does not define variables. * - * @param cdrId (max-length 36) id of the Cdr object to get from the eMSP’s system. * @return Cdr Requested Cdr object. */ - suspend fun getCdr(cdrId: CiString): Cdr? + suspend fun getCdr(param: T): Cdr? /** * POST Method diff --git a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/services/CdrsEmspService.kt b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/services/CdrsEmspService.kt index 9c22e1bb..00b8e929 100644 --- a/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/services/CdrsEmspService.kt +++ b/ocpi-toolkit-2.2.1/src/main/kotlin/com/izivia/ocpi/toolkit/modules/cdr/services/CdrsEmspService.kt @@ -1,31 +1,38 @@ package com.izivia.ocpi.toolkit.modules.cdr.services -import com.izivia.ocpi.toolkit.common.CiString import com.izivia.ocpi.toolkit.common.OcpiResponseBody import com.izivia.ocpi.toolkit.common.URL -import com.izivia.ocpi.toolkit.common.validation.isUrl import com.izivia.ocpi.toolkit.common.validation.validate import com.izivia.ocpi.toolkit.common.validation.validateLength +import com.izivia.ocpi.toolkit.common.validation.validateUrl import com.izivia.ocpi.toolkit.modules.cdr.CdrsEmspInterface import com.izivia.ocpi.toolkit.modules.cdr.domain.Cdr import com.izivia.ocpi.toolkit.modules.cdr.repositories.CdrsEmspRepository class CdrsEmspService( - private val service: CdrsEmspRepository -) : CdrsEmspInterface { - override suspend fun getCdr(cdrId: CiString): OcpiResponseBody = OcpiResponseBody.of { + private val service: CdrsEmspRepository +) : CdrsEmspInterface { + /** + * GET Method + * + * Fetch CDRs from the receivers' system. + * + * Endpoint structure definition: + * + * @param param Id of the requested Cdr + * @return Cdr Requested Cdr object. + */ + override suspend fun getCdr(param: String): OcpiResponseBody = OcpiResponseBody.of { validate { - validateLength("cdrId", cdrId, 39) + validateLength("cdrId", param, 36) } - service - .getCdr(cdrId) - ?.validate() + service.getCdr(param)?.validate() } override suspend fun postCdr(cdr: Cdr): OcpiResponseBody = OcpiResponseBody.of { validate { cdr.validate() } - service.postCdr(cdr)?.isUrl() + service.postCdr(cdr)?.validateUrl() } }