https://github.com/cleancocoa/urlschemer
macOS App URL Scheme handler
https://github.com/cleancocoa/urlschemer
Last synced: 6 months ago
JSON representation
macOS App URL Scheme handler
- Host: GitHub
- URL: https://github.com/cleancocoa/urlschemer
- Owner: CleanCocoa
- License: mit
- Created: 2023-11-28T11:09:33.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-11T17:48:50.000Z (8 months ago)
- Last Synced: 2024-11-11T18:37:10.354Z (8 months ago)
- Language: Swift
- Size: 82 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# URLSchemer
Transforms custom URL scheme components into actions.
## Usage
First, 'register' your custom module:
```swift
extension URLSchemer.Module {
/// `://plugin/` URL scheme actions.
static let plugin = Self("plugin")
}
```Then install the `URLSchemeHandler` as the appropriate `NSAppleEventManager` event handler:
```swift
extension AppDelegate {
private lazy var urlSchemeHandler = URLSchemeHandler { action in
// Lowercase 'key' and 'action', but keep casing of 'object'
// to preserve it when setting e.g. a name in UserDefaults.
switch action.mode.lowercased(includingObject: false) {
// Handle ://plugin/PLUGIN_NAME/run actions
case .moduleSubjectVerb(.plugin, let subject, "run"):
execute(pluginNamed: subject)// Handle ://preference/KEY/set/VALUE
// and ://preference/KEY/unset actions (built-in module)
case .moduleSubjectVerbObject(.preference, let key, "set", .some(let value)):
UserDefaults.standard.set(value, forKey: key)
case .moduleSubjectVerb(.preference, let key, "unset"):
UserDefaults.standard.removeObject(forKey: key)default: break
}
}func applicationDidFinishLaunching(_ aNotification: Notification) {
urlSchemeHandler.install()
}
}
```## Privacy Manifest
The package declares usage of `UserDefaults` API for wrapper that makes the `://preference` part of the URL scheme work.
## License
Copyright © 2023 Christian Tietze. Distributed under the MIT License.