Swiftパッケージ · v0.1.0

KLShareLink

共有された文章から、必要な公開リンクだけを安全に取り出します。

KLShareLinkは、共有シートから渡されるURLや文章を解析する、外部ライブラリ不要のSwiftパッケージです。明示的なURL、文章中の複数リンク、サービスごとのドメイン、旧形式の識別文字列を順番に確認し、安全なHTTP(S) URLとサービス名を返します。

対応OS
iOS 17+ · macOS 14+
開発環境
Swift 6.0+
ライセンス
MIT
外部依存
なし

できること

  • 安全な明示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のアドレスを除外