summaryrefslogtreecommitdiffstats
path: root/sources/hv-collector-utils
diff options
context:
space:
mode:
authorIzabela Zawadzka <izabela.zawadzka@nokia.com>2019-03-08 09:14:56 +0100
committerIzabela Zawadzka <izabela.zawadzka@nokia.com>2019-03-12 12:22:39 +0100
commit72931fcc9fdcd20a914799fcd8a0a7cb0b406ecf (patch)
tree6e534b3e253586788057cfcb1ea6aa20bddf2857 /sources/hv-collector-utils
parent1422bed4c1a002e663fd7c2c4c204831e5f7aa9a (diff)
Use netty HttpServer in DcaeAppApiServer
Change-Id: I895ad192babd9cc40266d0bec3830fcd4b0e054b Issue-ID: DCAEGEN2-1325 Signed-off-by: Izabela Zawadzka <izabela.zawadzka@nokia.com>
Diffstat (limited to 'sources/hv-collector-utils')
-rw-r--r--sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/netty.kt69
-rw-r--r--sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt11
2 files changed, 70 insertions, 10 deletions
diff --git a/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/netty.kt b/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/netty.kt
new file mode 100644
index 00000000..33e65e4d
--- /dev/null
+++ b/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/netty.kt
@@ -0,0 +1,69 @@
+/*
+ * ============LICENSE_START=======================================================
+ * dcaegen2-collectors-veshv
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.collectors.veshv.utils.http
+
+import arrow.effects.IO
+import org.onap.dcae.collectors.veshv.utils.logging.Logger
+import reactor.core.publisher.Mono
+import reactor.netty.NettyOutbound
+import reactor.netty.http.server.HttpServerResponse
+import javax.json.Json
+
+private val logger = Logger("org.onap.dcae.collectors.veshv.utils.http.netty")
+
+fun HttpServerResponse.sendOrError(action: IO<Unit>): NettyOutbound =
+ sendAndHandleErrors(action.map {
+ Response(
+ HttpStatus.OK,
+ Content(
+ ContentType.JSON,
+ Json.createObjectBuilder().add("response", "Request accepted").build()
+ )
+ )
+ })
+
+
+fun HttpServerResponse.sendAndHandleErrors(response: IO<Response>): NettyOutbound =
+ response.attempt().unsafeRunSync().fold(
+ { err ->
+ logger.withWarn { log("Error occurred. Sending .", err) }
+ val message = err.message
+ sendResponse(errorResponse(message))
+ },
+ {
+ sendResponse(it)
+ }
+ )
+
+private fun HttpServerResponse.sendResponse(response: Response): NettyOutbound {
+ val respWithStatus = status(response.status.number)
+ val responseContent = response.content
+
+ return respWithStatus.sendString(Mono.just(responseContent.serializer.run { responseContent.value.show() }))
+}
+
+private fun errorResponse(message: String?): Response =
+ Response(
+ HttpStatus.INTERNAL_SERVER_ERROR,
+ Content(
+ ContentType.JSON,
+ Json.createObjectBuilder().add("error", message).build()
+ )
+ )
diff --git a/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt b/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt
index a25b2912..529804a3 100644
--- a/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt
+++ b/sources/hv-collector-utils/src/main/kotlin/org/onap/dcae/collectors/veshv/utils/http/ratpack.kt
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* dcaegen2-collectors-veshv
* ================================================================================
- * Copyright (C) 2018 NOKIA
+ * Copyright (C) 2018-2019 NOKIA
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,15 +31,6 @@ import javax.json.Json
private val logger = Logger("org.onap.dcae.collectors.veshv.utils.arrow.ratpack")
-fun ratpack.http.Response.sendOrError(action: IO<Unit>) {
- sendAndHandleErrors(action.map {
- Response(
- HttpStatus.OK,
- Content(
- ContentType.JSON,
- Json.createObjectBuilder().add("response", "Request accepted").build()))
- })
-}
fun <A> ratpack.http.Response.sendEitherErrorOrResponse(response: Either<A, Response>) {
when (response) {