Swiftパッケージ · v0.1.0
KLShareLink
共有された文章から、必要な公開リンクだけを安全に取り出します。
KLShareLinkは、共有シートから渡されるURLや文章を解析する、外部ライブラリ不要のSwiftパッケージです。明示的なURL、文章中の複数リンク、サービスごとのドメイン、旧形式の識別文字列を順番に確認し、安全なHTTP(S) URLとサービス名を返します。
できること
- 安全な明示URLがあれば、最初に採用
- 文章中のHTTP(S) URLを出現順に検出
- 設定したサービスのドメインに一致するURLを優先
- localhost、.local、ループバック、リンクローカル、RFC 1918のアドレスを除外
このパッケージがしないこと
このパッケージはリンクの選択だけを行います。通信、リダイレクト先の展開、トラッキングパラメータの削除、履歴保存は行いません。実際に通信する前に、DNSの解決結果と各リダイレクト先をネットワーク層で改めて検証してください。
SwiftPMで追加
Package.swiftSwift
.package(url: "https://github.com/KoenLee1023/KLShareLink.git", from: "0.1.0")使い方
最小構成Swift
let resolver = ShareLinkResolver(providers: providers)
let result = resolver.resolve(
explicitURL: itemURL,
sharedText: itemText
)
if let url = result.url {
open(url, source: result.providerName)
}ShareLinkResolver状態を持たないSendableな解析器です。同期的に動作し、通信は行いません。
ShareLinkProviderサービス名、対象ドメイン、旧形式の識別パターンをまとめたCodableの設定値です。
ShareLinkResolution選んだURLとサービス名を別々に保持します。
デモアプリ
Link Inspector
安全な明示URLがあれば、最初に採用 · 文章中のHTTP(S) URLを出現順に検出
Policy Playground
設定したサービスのドメインに一致するURLを優先 · localhost、.local、ループバック、リンクローカル、RFC 1918のアドレスを除外