From 318a0db54c973ed0144d18cd9e1cc72a7736ab68 Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Mon, 18 Jul 2022 13:24:58 +0700 Subject: [PATCH] =?UTF-8?q?=D0=92=20redmine-data-loader=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redmine-data-loader.ts | 27 ++++++++++++++++++- libs/redmine-types/index.d.ts | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/libs/event-emitter/src/redmine-data-loader/redmine-data-loader.ts b/libs/event-emitter/src/redmine-data-loader/redmine-data-loader.ts index 4cbb779..5805dd6 100644 --- a/libs/event-emitter/src/redmine-data-loader/redmine-data-loader.ts +++ b/libs/event-emitter/src/redmine-data-loader/redmine-data-loader.ts @@ -23,7 +23,7 @@ export class RedmineDataLoader { const resp = await axios.get(url); if (!resp || !resp.data || !resp.data.issue) { this.logger.error( - `Failed to load data for from redmine, issueNumber = ${issueNumber}`, + `Failed to load issue from redmine, issueNumber = ${issueNumber}`, ); return null; } @@ -33,10 +33,35 @@ export class RedmineDataLoader { return resp.data.issue; } + async loadUsers(users: number[]): Promise<(RedmineTypes.User | null)[]> { + const promises = users.map((user) => this.loadUser(user)); + return Promise.all(promises); + } + + async loadUser(userNumber: number): Promise { + const url = this.getUserUrl(userNumber); + const resp = await axios.get(url); + if (!resp || !resp.data?.user) { + this.logger.error( + `Failed to load user from redmine, userNumber = ${userNumber}`, + ); + return null; + } + const user: RedmineTypes.User = resp.data.user; + this.logger.debug( + `Loaded user, userNumber = ${userNumber}, login = ${user.login}, firstname = ${user.firstname}, lastname = ${user.lastname}`, + ); + return user; + } + private getIssueUrl(issueNumber: number): string { if (typeof this.urlPrefix !== 'string' || this.urlPrefix.length === 0) { throw 'REDMINE_URL_PREFIX is undefined'; } return `${this.urlPrefix}/issues/${issueNumber}.json?include=children,journals,relations`; } + + private getUserUrl(userNumber: number): string { + return `${this.urlPrefix}/users/${userNumber}.json`; + } } diff --git a/libs/redmine-types/index.d.ts b/libs/redmine-types/index.d.ts index 888bc4e..a904d28 100644 --- a/libs/redmine-types/index.d.ts +++ b/libs/redmine-types/index.d.ts @@ -91,6 +91,7 @@ export module RedmineTypes { export type User = { id: number; + login: string; firstname: string; lastname: string; mail: string;