diff options
author | Max <post@wickenrode.com> | 2015-10-14 16:06:51 +0200 |
---|---|---|
committer | Max <post@wickenrode.com> | 2015-10-14 16:08:33 +0200 |
commit | ec60a32215bb07f5ccd9b8061a88112985acaf8b (patch) | |
tree | f6e9dd6fb676324422f37bc4b3f5103d79e5b97c /Source/SPAppController.m | |
parent | 27763d429365c0127198f2e9abdd488a61c9f41e (diff) | |
download | sequelpro-ec60a32215bb07f5ccd9b8061a88112985acaf8b.tar.gz sequelpro-ec60a32215bb07f5ccd9b8061a88112985acaf8b.tar.bz2 sequelpro-ec60a32215bb07f5ccd9b8061a88112985acaf8b.zip |
Add mysql:// URL handler (fixes #1681)
Diffstat (limited to 'Source/SPAppController.m')
-rw-r--r-- | Source/SPAppController.m | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/Source/SPAppController.m b/Source/SPAppController.m index 9ff2cad0..d733b48a 100644 --- a/Source/SPAppController.m +++ b/Source/SPAppController.m @@ -765,15 +765,57 @@ { NSURL *url = [NSURL URLWithString:[[event paramDescriptorForKeyword:keyDirectObject] stringValue]]; - if (url) { + if ([[url scheme] isEqualToString:@"sequelpro"]) { [self handleEventWithURL:url]; } + else if([[url scheme] isEqualToString:@"mysql"]) { + [self handleMySQLConnectWithURL:url]; + } else { NSBeep(); NSLog(@"Error in sequelpro URL scheme"); } } +- (void)handleMySQLConnectWithURL:(NSURL *)url +{ + if(![[url scheme] isEqualToString:@"mysql"]) { + SPLog(@"unsupported url scheme: %@",url); + return; + } + + // make connection window + [self newTab:nil]; + SPDatabaseDocument *doc = [self frontDocument]; + + NSMutableDictionary *details = [NSMutableDictionary dictionary]; + + NSValue *connect = @NO; + + [details setObject:@"SPTCPIPConnection" forKey:@"type"]; + if([url port]) + [details setObject:[url port] forKey:@"port"]; + + if([url user]) + [details setObject:[url user] forKey:@"user"]; + + if([url password]) { + [details setObject:[url password] forKey:@"password"]; + connect = @YES; + } + + if([[url host] length] && ![[url host] isEqualToString:@"localhost"]) + [details setObject:[url host] forKey:@"host"]; + else + [details setObject:@"127.0.0.1" forKey:@"host"]; + + NSArray *pc = [url pathComponents]; + if([pc count] > 1) // first object is "/" + [details setObject:[pc objectAtIndex:1] forKey:@"database"]; + + [doc setState:@{@"connection":details,@"auto_connect": connect} fromFile:NO]; +} + - (void)handleEventWithURL:(NSURL*)url { NSString *command = [url host]; |