Coverage Summary for Class: ApiClient (concept.stc.data.remote)
Class |
Method, %
|
Line, %
|
ApiClient |
100%
(2/2)
|
100%
(8/8)
|
ApiClient$search$1 |
Total |
100%
(2/2)
|
100%
(8/8)
|
package concept.stc.data.remote
import concept.stc.config.OmdbApiProperties
import concept.stc.data.remote.model.SearchResponse
import kotlinx.coroutines.reactive.awaitFirst
import org.springframework.stereotype.Component
import org.springframework.web.reactive.function.client.WebClient
/**
* Api client for external API.
*
* @param properties the API config properties.
*/
@Component
class ApiClient(
private val properties: OmdbApiProperties
) {
private val webClient = WebClient.create(properties.baseUrl)
/**
* Get movies list from the external API.
*
* @param query the search query.
*/
suspend fun search(query: String): SearchResponse = webClient.get()
.uri("/?apikey={apiKey}&s={query}", properties.apiKey, query)
.retrieve()
.bodyToMono(SearchResponse::class.java)
.awaitFirst()
}