29 lines
1.0 KiB
Swift
29 lines
1.0 KiB
Swift
//
|
|
// GemtextToMarkdownIntentHandler.swift
|
|
// GeminiIntents
|
|
//
|
|
// Created by Shadowfacts on 10/1/21.
|
|
//
|
|
|
|
import Intents
|
|
import GeminiFormat
|
|
|
|
class GemtextToMarkdownIntentHandler: NSObject, GemtextToMarkdownIntentHandling {
|
|
|
|
func handle(intent: GemtextToMarkdownIntent, completion: @escaping (GemtextToMarkdownIntentResponse) -> Void) {
|
|
guard let response = intent.response,
|
|
let text = response.body,
|
|
let url = response.url else {
|
|
completion(GemtextToMarkdownIntentResponse(code: .failure, userActivity: nil))
|
|
return
|
|
}
|
|
let doc = GeminiParser.parse(text: text, baseURL: url)
|
|
let renderer = GeminiMarkdownRenderer()
|
|
let html = renderer.renderDocumentToMarkdown(doc)
|
|
let intentResp = GemtextToMarkdownIntentResponse(code: .success, userActivity: nil)
|
|
intentResp.markdown = INFile(data: html.data(using: .utf8)!, filename: "converted_gemtext.md", typeIdentifier: "net.daringfireball.markdown")
|
|
completion(intentResp)
|
|
}
|
|
|
|
}
|