Skip to content

Commit 319b687

Browse files
committed
decode fragment identifier
1 parent b2a6877 commit 319b687

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

Terminal Notifier/AppDelegate.m

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,22 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification;
190190
if (defaults[@"activate"]) options[@"bundleID"] = defaults[@"activate"];
191191
if (defaults[@"group"]) options[@"groupID"] = defaults[@"group"];
192192
if (defaults[@"execute"]) options[@"command"] = defaults[@"execute"];
193-
if (defaults[@"open"]) options[@"open"] = [defaults[@"open"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
194193
if (defaults[@"appIcon"]) options[@"appIcon"] = defaults[@"appIcon"];
195194
if (defaults[@"contentImage"]) options[@"contentImage"] = defaults[@"contentImage"];
195+
if (defaults[@"open"]) {
196+
/*
197+
* it may be better to use stringByAddingPercentEncodingWithAllowedCharacters instead of stringByAddingPercentEscapesUsingEncoding,
198+
* but stringByAddingPercentEncodingWithAllowedCharacters is only available on OS X 10.9 or higher.
199+
*/
200+
NSString *encodedURL = [defaults[@"open"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
201+
NSURL *url = [NSURL URLWithString:defaults[@"open"]];
202+
NSString *fragment = [url fragment];
203+
if (fragment) {
204+
options[@"open"] = [self decodeFragmentInURL:encodedURL fragment:fragment];
205+
} else {
206+
options[@"open"] = encodedURL;
207+
}
208+
}
196209

197210
[self deliverNotificationWithTitle:defaults[@"title"] ?: @"Terminal"
198211
subtitle:subtitle
@@ -214,6 +227,20 @@ - (NSImage*)getImageFromURL:(NSString *) url;
214227
return [[NSImage alloc] initWithContentsOfURL:imageURL];
215228
}
216229

230+
/**
231+
* Decode fragment identifier
232+
*
233+
* @see http://tools.ietf.org/html/rfc3986#section-2.1
234+
* @see http://en.wikipedia.org/wiki/URI_scheme
235+
*/
236+
- (NSString*)decodeFragmentInURL:(NSString *) encodedURL fragment:(NSString *) framgent
237+
{
238+
NSString *beforeStr = [@"%23" stringByAppendingString:framgent];
239+
NSString *afterStr = [@"#" stringByAppendingString:framgent];
240+
NSString *decodedURL = [encodedURL stringByReplacingOccurrencesOfString:beforeStr withString:afterStr];
241+
return decodedURL;
242+
}
243+
217244
- (void)deliverNotificationWithTitle:(NSString *)title
218245
subtitle:(NSString *)subtitle
219246
message:(NSString *)message

0 commit comments

Comments
 (0)