Skip to content

Instantly share code, notes, and snippets.

@arkivanov
Created June 9, 2020 12:21
Show Gist options
  • Select an option

  • Save arkivanov/124de8c7b50aab8fe3b2911d43dcaa79 to your computer and use it in GitHub Desktop.

Select an option

Save arkivanov/124de8c7b50aab8fe3b2911d43dcaa79 to your computer and use it in GitHub Desktop.
internal class KittenDataSourceImpl : KittenDataSource {
override fun load(limit: Int, offset: Int): Maybe<String> =
maybe<String> { emitter ->
val callback: (NSData?, NSURLResponse?, NSError?) -> Unit =
{ data: NSData?, _, error: NSError? ->
if (data != null) {
emitter.onSuccess(NSString.create(data, NSUTF8StringEncoding).toString())
} else {
emitter.onComplete()
}
}
val task =
NSURLSession.sharedSession.dataTaskWithURL(
NSURL(string = makeKittenEndpointUrl(limit = limit, offset = offset)),
callback.freeze()
)
task.resume()
emitter.setDisposable(Disposable(task::cancel))
}
.onErrorComplete()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment