Skip to content

Instantly share code, notes, and snippets.

@bjonnh
Created February 3, 2019 23:35
Show Gist options
  • Save bjonnh/97e5d629f3f78a2ec938be7ac999df6d to your computer and use it in GitHub Desktop.
Save bjonnh/97e5d629f3f78a2ec938be7ac999df6d to your computer and use it in GitHub Desktop.
override fun call(url: String, parameters: Map<String, String>): IO<String> =
fx {
effect { calcDelay() }
val call: HttpClientCall = effect {
httpClient.call("$apiURL/$url") {
method = HttpMethod.Get
parameters.forEach { k, v -> parameter(k, v) }
}
}
effect {
updateDelayFromHeaderData(
call.response.headers["X-Rate-Limit-Limit"],
call.response.headers["X-Rate-Limit-Interval"]
)
}
effect { updateLastQueryTime() }
effect {
when (call.response.status.value) {
200 -> call.response.readText()
404 -> IO.raiseError(NonExistentReference)
else -> IO.raiseError(UnManagedReturnCode(call.response.status.value))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment