public object Get(ConnectionRequest request)
		{
			var result = ConnectionResult.UnknownTarget;

			if (request.Type == null) return result;

			switch (request.Type.ToLowerInvariant())
			{
				case "tfs":
					string.Format("Connecting to TFS using {0}", request).Debug();
					var tfs = new TfsConnection();
					result = tfs.Connect(request.Url, request.User, request.Password);
					break;
				case "jira":
					string.Format("Connecting to JIRA using {0}", request).Debug();
					var jira = new JiraConnection();
					result = jira.Connect(request.Url, request.User, request.Password);
					break;
				case "githubissues":
					string.Format("Connecting to GitHub (Issues) using {0}", request).Debug();
					var githubissues = new GitHubIssuesConnection();
					result = githubissues.Connect(request.Host, request.User, request.Password);
					break;
				case "githubpulls":
					string.Format("Connecting to GitHub (Pulls) using {0}", request).Debug();
					var githubpulls = new GitHubPullsConnection();
					result = githubpulls.Connect(request.Host, request.User, request.Password);
					break;
			}

			if (result == ConnectionResult.Success)
			{
				"Connection successful.".Debug();
				SaveLogin(request);
				return OK();
			}

			if (result == ConnectionResult.FailedToConnect)
				return NotAuthorized("Credentials Rejected");

			if (result == ConnectionResult.InvalidUrl)
				return BadRequest("Invalid Url");

			return BadRequest("Unknown Target");
		}
		private static IConnection Connect(Request request, out ConnectionResult result)
		{
			result = ConnectionResult.UnknownTarget;
			if (request.Type == null) return null;

			IConnection target;

			switch (request.Type.ToLowerInvariant())
			{
				case "tfs":
					target = new TfsConnection();
					result = target.Connect(request.Url, request.User, request.Password);
					break;
				case "jira":
					target = new JiraConnection();
					result = target.Connect(request.Url, request.User, request.Password);
					break;
				case "githubissues":
					target = new GitHubIssuesConnection();
					result = target.Connect(request.Host, request.User, request.Password);
					break;
				case "githubpulls":
					target = new GitHubPullsConnection();
					result = target.Connect(request.Host, request.User, request.Password);
					break;
				default:
					target = null;
					break;
			}
			return target;
		}