/*
- * Copyright © 2017-2018 AT&T Intellectual Property.
+ * Copyright © 2017-2019 AT&T, Bell Canada
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.ccsdk.apps.blueprintsprocessor.rest.service
+import org.apache.http.message.BasicHeader
import org.onap.ccsdk.apps.blueprintsprocessor.rest.BasicAuthRestClientProperties
-import org.onap.ccsdk.apps.blueprintsprocessor.rest.utils.WebClientUtils
import org.springframework.http.HttpHeaders
import org.springframework.http.MediaType
-import org.springframework.web.reactive.function.BodyInserters
-import org.springframework.web.reactive.function.client.ExchangeFilterFunctions
-import org.springframework.web.reactive.function.client.WebClient
-
-
-class BasicAuthRestClientService(private val restClientProperties: BasicAuthRestClientProperties) : BlueprintWebClientService {
-
- private var webClient: WebClient? = null
-
- override fun webClient(): WebClient {
- if (webClient == null) {
- webClient = WebClient.builder()
- .baseUrl(restClientProperties.url)
- .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
- .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
- .filter(ExchangeFilterFunctions
- .basicAuthentication(restClientProperties.userId, restClientProperties.token))
- .filter(WebClientUtils.logRequest())
- .filter(WebClientUtils.logResponse())
- .build()
- }
- return webClient!!
- }
-
- override fun <T> getResource(path: String, responseType: Class<T>): T {
- return getResource(path, null, responseType)
- }
-
- override fun <T> getResource(path: String, headers: Map<String, String>?, responseType: Class<T>): T {
- return webClient().get()
- .uri(path)
- .headers { httpHeaders ->
- headers?.forEach {
- httpHeaders.set(it.key, it.value)
- }
- }
- .retrieve()
- .bodyToMono(responseType).block()!!
- }
-
- override fun <T> postResource(path: String, request: Any, responseType: Class<T>): T {
- return postResource(path, null, request, responseType)
+import java.nio.charset.Charset
+import java.util.*
+
+class BasicAuthRestClientService(private val restClientProperties: BasicAuthRestClientProperties) :
+ BlueprintWebClientService {
+
+ override fun headers(): Array<BasicHeader> {
+ val encodedCredentials = setBasicAuth(restClientProperties.username, restClientProperties.password)
+ val params = arrayListOf<BasicHeader>()
+ params.add(BasicHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE))
+ params.add(BasicHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE))
+ params.add(BasicHeader(HttpHeaders.AUTHORIZATION, "Basic $encodedCredentials"))
+ return params.toTypedArray()
}
- override fun <T> postResource(path: String, headers: Map<String, String>?, request: Any, responseType: Class<T>): T {
- return webClient().post()
- .uri(path)
- .headers { httpHeaders ->
- headers?.forEach {
- httpHeaders.set(it.key, it.value)
- }
- }
- .body(BodyInserters.fromObject(request))
- .retrieve().bodyToMono(responseType).block()!!
+ override fun host(uri: String): String {
+ return restClientProperties.url + uri
}
- override fun <T> exchangeResource(methodType: String, path: String, request: Any, responseType: Class<T>): T {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ private fun setBasicAuth(username: String, password: String): String {
+ val credentialsString = "$username:$password"
+ return Base64.getEncoder().encodeToString(credentialsString.toByteArray(Charset.defaultCharset()))
}
}
\ No newline at end of file