package net.pterodactylus.rhynodge.filters import com.fasterxml.jackson.core.JsonParseException import com.fasterxml.jackson.databind.ObjectMapper import net.pterodactylus.rhynodge.Filter import net.pterodactylus.rhynodge.State import net.pterodactylus.rhynodge.states.FailedState import net.pterodactylus.rhynodge.states.HttpState import net.pterodactylus.rhynodge.states.JsonState class JsonFilter : Filter { override fun filter(state: State): State { if (state is FailedState) { return state } val httpState = state as? HttpState ?: throw IllegalArgumentException("state must be HttpState") val jsonNode = try { objectMapper.readTree(httpState.rawResult()) } catch (jsonParseException: JsonParseException) { return FailedState(jsonParseException) } return JsonState(jsonNode) } } private val objectMapper = ObjectMapper()