aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPAppController.m
diff options
context:
space:
mode:
authorMax <post@wickenrode.com>2015-10-14 16:06:51 +0200
committerMax <post@wickenrode.com>2015-10-14 16:08:33 +0200
commitec60a32215bb07f5ccd9b8061a88112985acaf8b (patch)
treef6e9dd6fb676324422f37bc4b3f5103d79e5b97c /Source/SPAppController.m
parent27763d429365c0127198f2e9abdd488a61c9f41e (diff)
downloadsequelpro-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.m44
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];