public GitHubDownloader(
      MavenProject project,
      String githubScheme,
      int githubPort,
      boolean includeOpenIssues,
      boolean onlyMilestoneIssues)
      throws MalformedURLException {
    this.includeOpenIssues = includeOpenIssues;
    this.onlyMilestoneIssues = onlyMilestoneIssues;

    URL githubURL = new URL(project.getIssueManagement().getUrl());

    // The githubclient prefers to connect to 'github.com' using the api domain, unlike github
    // enterprise
    // which can connect fine using its domain, so for github.com use empty constructor
    if (githubURL.getHost().equalsIgnoreCase("github.com")) {
      this.client = new GitHubClient();
    } else {
      this.client = new GitHubClient(githubURL.getHost(), githubPort, githubScheme);
    }

    this.githubIssueURL = project.getIssueManagement().getUrl();
    if (!this.githubIssueURL.endsWith("/")) {
      this.githubIssueURL = this.githubIssueURL + "/";
    }

    String urlPath = githubURL.getPath();
    if (urlPath.startsWith("/")) {
      urlPath = urlPath.substring(1);
    }

    if (urlPath.endsWith("/")) {
      urlPath = urlPath.substring(0, urlPath.length() - 2);
    }

    String[] urlPathParts = urlPath.split("/");

    if (urlPathParts.length != 3) {
      throw new MalformedURLException(
          "GitHub issue management URL must look like, " + "[GITHUB_DOMAIN]/[OWNER]/[REPO]/issues");
    }

    this.githubOwner = urlPathParts[0];
    this.githubRepo = urlPathParts[1];
  }
  private String getUrl() {

    String url = project.getIssueManagement().getUrl();

    if (url.endsWith("/")) {
      url = url.substring(0, url.length() - 1);
    }

    return url;
  }