This commit is contained in:
72
packages/swift/Sources/Kreuzberg/SwiftDocumentExtractorBridge.swift
generated
Normal file
72
packages/swift/Sources/Kreuzberg/SwiftDocumentExtractorBridge.swift
generated
Normal file
@@ -0,0 +1,72 @@
|
||||
// Generated by alef. Do not edit by hand.
|
||||
// swift-format-ignore-file
|
||||
// This file contains generated FFI glue for trait bridge registration.
|
||||
|
||||
import Foundation
|
||||
import RustBridge
|
||||
|
||||
/// Protocol for outbound `DocumentExtractor` implementations.
|
||||
/// Conform your Swift class or struct to this protocol to implement
|
||||
/// a Rust trait from the host side.
|
||||
public protocol SwiftDocumentExtractorBridge: AnyObject {
|
||||
func extractBytes(content: Data, mime_type: String, config: ExtractionConfig) throws -> String
|
||||
func supportedMimeTypes() -> [String]
|
||||
}
|
||||
|
||||
/// Internal adapter wrapping a `SwiftDocumentExtractorBridge` conformer.
|
||||
/// Marshals Swift types and trait calls to/from the C boundary.
|
||||
/// Excluded/internal types are serialised to/from JSON strings.
|
||||
final class SwiftDocumentExtractorAdapter {
|
||||
private let bridge: any SwiftDocumentExtractorBridge
|
||||
|
||||
init(bridge: any SwiftDocumentExtractorBridge) {
|
||||
self.bridge = bridge
|
||||
}
|
||||
|
||||
func extractBytesCall(content: Data, mime_type: String, config: ExtractionConfig) throws -> String {
|
||||
do {
|
||||
let result = try self.bridge.extractBytes(content: content, mime_type: mime_type, config: config)
|
||||
let encodedData = try marshal_encode_excluded(result)
|
||||
if let jsonString = String(data: encodedData, encoding: .utf8) {
|
||||
return "{\"ok\": \(jsonString)}"
|
||||
}
|
||||
return "{\"ok\": null}"
|
||||
} catch {
|
||||
return marshal_error_result(error)
|
||||
}
|
||||
}
|
||||
|
||||
func supportedMimeTypesCall() -> [String] {
|
||||
let result = self.bridge.supportedMimeTypes()
|
||||
return result
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Marshalling helpers
|
||||
|
||||
private struct Empty: Codable {}
|
||||
|
||||
private func marshal_ok_result<T: Encodable>(_ value: T) -> String {
|
||||
let encoder = JSONEncoder()
|
||||
if let data = try? encoder.encode(value),
|
||||
let jsonString = String(data: data, encoding: .utf8) {
|
||||
return "{\"ok\": \(jsonString)}"
|
||||
}
|
||||
return "{\"ok\": null}"
|
||||
}
|
||||
|
||||
private func marshal_encode_excluded<T: Encodable>(_ value: T) throws -> Data {
|
||||
let encoder = JSONEncoder()
|
||||
return try encoder.encode(value)
|
||||
}
|
||||
|
||||
private func marshal_error_result(_ error: any Error) -> String {
|
||||
let errorString = String(describing: error)
|
||||
let encoder = JSONEncoder()
|
||||
if let data = try? encoder.encode(errorString),
|
||||
let jsonString = String(data: data, encoding: .utf8) {
|
||||
return "{\"err\": \(jsonString)}"
|
||||
}
|
||||
return "{\"err\": \"unknown error\"}"
|
||||
}
|
||||
Reference in New Issue
Block a user