feat(#200): save the commit date of the anonymized commit

This commit is contained in:
tdurieux
2023-04-25 23:40:12 +02:00
parent c9acb7b899
commit 7e2c490e4b
6 changed files with 39 additions and 3 deletions

View File

@@ -191,9 +191,10 @@ export default class Repository {
) {
// Only GitHubBase can be update for the moment
if (this.source instanceof GitHubBase) {
const token = await this.source.getToken();
const branches = await this.source.githubRepository.branches({
force: true,
accessToken: await this.source.getToken(),
accessToken: token,
});
const branch = this.source.branch;
const newCommit = branches.filter((f) => f.name == branch.name)[0]
@@ -203,6 +204,17 @@ export default class Repository {
return;
}
this._model.source.commit = newCommit;
const commitInfo = await this.source.githubRepository.getCommitInfo(
newCommit,
{
accessToken: token,
}
);
if (commitInfo.commit.author?.date) {
this._model.source.commitDate = new Date(
commitInfo.commit.author?.date
);
}
branch.commit = newCommit;
if (!newCommit) {

View File

@@ -25,6 +25,7 @@ const AnonymizedRepositorySchema = new Schema({
type: { type: String },
branch: String,
commit: String,
commitDate: Date,
repositoryId: String,
repositoryName: String,
accessToken: String,

View File

@@ -11,6 +11,7 @@ export interface IAnonymizedRepository {
type: "GitHubDownload" | "GitHubStream" | "Zip";
branch?: string;
commit?: string;
commitDate?: Date,
repositoryId?: string;
repositoryName?: string;
accessToken?: string;

View File

@@ -153,7 +153,9 @@ router.get(
res.json({
url: redirectURL,
download,
lastUpdateDate: repo.model.statusDate,
lastUpdateDate: repo.model.source.commitDate
? repo.model.source.commitDate
: repo.model.anonymizeDate,
});
} catch (error) {
handleError(error, res, req);

View File

@@ -44,6 +44,21 @@ export class GitHubRepository {
return this._data.size;
}
async getCommitInfo(
sha: string,
opt: {
accessToken?: string;
}
) {
const octokit = new Octokit({ auth: opt.accessToken });
const commit = await octokit.repos.getCommit({
owner: this.owner,
repo: this.repo,
ref: sha,
});
return commit.data;
}
async branches(opt: {
accessToken?: string;
force?: boolean;