Skip to content
Snippets Groups Projects
Unverified Commit 0074eded authored by Sean Hatfield's avatar Sean Hatfield Committed by GitHub
Browse files

Github data connector improvements (#2439)


* 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: default avatarTimothy Carambat <rambat1010@gmail.com>
parent c7347421
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment