Skip to content

Instantly share code, notes, and snippets.

@pay-napster-x
Created June 2, 2020 04:07
Show Gist options
  • Save pay-napster-x/0791341d09b7540a41c909a7bd183ad6 to your computer and use it in GitHub Desktop.
Save pay-napster-x/0791341d09b7540a41c909a7bd183ad6 to your computer and use it in GitHub Desktop.
UploadWKHandlerInnerMethod.swift
func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
guard let url = urlSchemeTask.request.url else { return }
guard let queryItem = URLComponents(url: url, resolvingAgainstBaseURL: true)?.queryItems?.first else { return }
guard let value = queryItem.value else { return }
if queryItem.name == PreviewViewModel.imageQueryName {
makeImageResponse(url: url, identifier: value, urlSchemeTask: urlSchemeTask)
}
if queryItem.name == PreviewViewModel.textQueryName {
makeTextResponse(url: url, text: value, urlSchemeTask: urlSchemeTask)
}
}
func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
}
private func makeImageResponse(url: URL, identifier: String, urlSchemeTask: WKURLSchemeTask) {
requestImage(identifier: identifier)
.subscribe(onNext: { [unowned self] content in
let urlResponse = URLResponse(url: url, mimeType: self.imageMime, expectedContentLength: -1, textEncodingName: nil)
urlSchemeTask.didReceive(urlResponse)
urlSchemeTask.didReceive(content.data)
urlSchemeTask.didFinish()
}).disposed(by: disposeBag)
}
private func makeTextResponse(url: URL, text: String, urlSchemeTask: WKURLSchemeTask) {
let urlResponse = URLResponse(url: url, mimeType: textMime, expectedContentLength: -1, textEncodingName: nil)
urlSchemeTask.didReceive(urlResponse)
urlSchemeTask.didFinish()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment