Skip to content

Commit

Permalink
Github data connector improvements (#2439)
Browse files Browse the repository at this point in the history
* fix tree/blob github urls from branches not being loaded

* improve ux of github data connector

* lint

* patch Github URL parser to just validate with `URL` native parser

* uncheck LocalStorage of PAT for security reasons

---------

Co-authored-by: Timothy Carambat <[email protected]>
  • Loading branch information
shatfield4 and timothycarambat authored Oct 21, 2024
1 parent c734742 commit 0074ede
Showing 1 changed file with 28 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,36 @@ class GitHubRepoLoader {
}

#validGithubUrl() {
const UrlPattern = require("url-pattern");
const pattern = new UrlPattern(
"https\\://github.com/(:author)/(:project(*))",
{
// fixes project names with special characters (.github)
segmentValueCharset: "a-zA-Z0-9-._~%/+",
try {
const url = new URL(this.repo);

// Not a github url at all.
if (url.hostname !== "github.com") {
console.log(
`[Github Loader]: Invalid Github URL provided! Hostname must be 'github.com'. Got ${url.hostname}`
);
return false;
}
);
const match = pattern.match(this.repo);
if (!match) return false;

this.author = match.author;
this.project = match.project;
return true;
// Assume the url is in the format of github.com/{author}/{project}
// Remove the first slash from the pathname so we can split it properly.
const [author, project, ..._rest] = url.pathname.slice(1).split("/");
if (!author || !project) {
console.log(
`[Github Loader]: Invalid Github URL provided! URL must be in the format of 'github.com/{author}/{project}'. Got ${url.pathname}`
);
return false;
}

this.author = author;
this.project = project;
return true;
} catch (e) {
console.log(
`[Github Loader]: Invalid Github URL provided! Error: ${e.message}`
);
return false;
}
}

// Ensure the branch provided actually exists
Expand Down

0 comments on commit 0074ede

Please sign in to comment.