Skip to content

Commit

Permalink
refactor: class 기반 dto를 제거하고 type으로 대부분 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
HyungJu committed May 5, 2024
1 parent e17399c commit f32fab5
Show file tree
Hide file tree
Showing 27 changed files with 344 additions and 432 deletions.
2 changes: 2 additions & 0 deletions apps/server/src/codef/codef.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { CommonRequestService } from '../request/request.service';
import { PasswordService } from './password.service';
import { ConcreteFetchMyVaccinationStrategy } from './strategies/fetch-my-vaccination/ConcreteFetchMyVaccinationStrategy';
import { ConcreteRequestPasswordResetStrategy } from './strategies/request-reset-password/ConcreteRequestPasswordResetStrategy';
import { Mapper } from './strategies/request-reset-password/mapper';

@Module({
providers: [
Expand All @@ -22,6 +23,7 @@ import { ConcreteRequestPasswordResetStrategy } from './strategies/request-reset
PasswordService,
ConcreteFetchMyVaccinationStrategy,
ConcreteRequestPasswordResetStrategy,
Mapper,
],
exports: [
CodefService,
Expand Down
68 changes: 37 additions & 31 deletions apps/server/src/codef/codef.service.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
import { Inject, Injectable } from '@nestjs/common';
import { VaccinationRecordRequest } from './strategies/fetch-my-vaccination/types/vaccination-record.request';
import { CredentialService } from './credential.service';
import { RequestService } from '../request/types';
import { CodefResponse } from './types/common/codef.response';
import { validateResponse } from './validate-response';
import { CodefMyVaccinationData } from './strategies/fetch-my-vaccination/types/vaccination-record.response';
import { PasswordService } from './password.service';
import { CodefResetPasswordRequest } from './dtos/reset-password/codef-reset-password.request';
import {
CodefResetPasswordSecureNo2WayResponse,
CodefResetPasswordSMSAuthNo2WayResponse,
CodefResetPasswordSuccessResponse,
} from './dtos/reset-password/reset-password.response';
import { CodefResetPasswordResponse } from './types/reset-password/reset-password.response';
CodefResetPasswordRequest,
CodefTwoWaySecureNoInputRequest,
} from './types/reset-password/reset-password.request';
import {
CodefPasswordChangedResponse,
CodefSecureNoResponse,
CodefSMSResponse,
} from './types/reset-password/reset-password.response';
import { isRight } from 'fp-ts/Either';
import { isTwoWay } from './types/reset-password/utils';
import { isLeft } from 'fp-ts/These';

@Injectable()
export class CodefService {
Expand All @@ -24,43 +27,46 @@ export class CodefService {
) {}

async resetPassword(
request: CodefResetPasswordRequest
): Promise<CodefResetPasswordResponse> {
request: CodefResetPasswordRequest | CodefTwoWaySecureNoInputRequest
): Promise<
CodefSecureNoResponse | CodefSMSResponse | CodefPasswordChangedResponse
> {
if (request.userPassword) {
request.userPassword = this.passwordService.encryptPassword(
request.userPassword
);
}
const response = await this.requestService.post<
CodefResetPasswordRequest,
CodefResponse<any>
CodefResetPasswordRequest | CodefTwoWaySecureNoInputRequest,
CodefSecureNoResponse | CodefSMSResponse | CodefPasswordChangedResponse
>(
'https://development.codef.io/v1/kr/public/hw/nip-cdc-list/finding-id-pw',
request
);

validateResponse(response);

if (response.data.continue2Way) {
if (response.data.method == 'secureNo')
return new CodefResetPasswordSecureNo2WayResponse(response.data);
else if (response.data.method == 'smsAuthNo')
return new CodefResetPasswordSMSAuthNo2WayResponse(response.data);
if (isTwoWay(response)) {
if (response.data.method === 'secureNo') {
const result = CodefSecureNoResponse.decode(response);
if (isLeft(result)) {
console.log('Invalid response', result.left);
}
if (isRight(result)) return result.right;
} else if (response.data.method === 'smsAuthNo') {
const result = CodefSMSResponse.decode(response);
if (isRight(result)) return result.right;
}
} else {
return new CodefResetPasswordSuccessResponse(response.data);
const result = CodefPasswordChangedResponse.decode(response);
if (isRight(result)) return result.right;
}
}

async getVaccinationRecords(
id: string,
password: string
): Promise<CodefResponse<CodefMyVaccinationData>> {
const response = await this.requestService.post<
VaccinationRecordRequest,
CodefResponse<never>
>(
'https://development.codef.io/v1/kr/public/hw/nip-cdc-list/my-vaccination',
new VaccinationRecordRequest(
id,
this.passwordService.encryptPassword(password)
)
);

return validateResponse<CodefResponse<CodefMyVaccinationData>>(response);
): Promise<CodefResponse<any>> {
return validateResponse<CodefResponse<any>>(null);
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import { FetchMyVaccinationStrategy } from '../../../nip/strategies/fetchMyVaccination/FetchMyVaccinationStrategy';
import { VaccinationRequest, VaccinationResponse } from '@vacgom/types';
import { CodefService } from '../../codef.service';
import { plainToInstance } from 'class-transformer';
import { VaccinationRecordResponse } from './types/vaccination-record.response';
import { DomainException } from '../../../exception/domain-exception';
import { ErrorCode } from '../../../exception/error';
import { UnhandledCodefException } from '../../exceptions/UnhandledCodefException';
Expand All @@ -19,16 +17,7 @@ export class ConcreteFetchMyVaccinationStrategy
request: VaccinationRequest
): Promise<VaccinationResponse> {
try {
const codefResponse = await this.codefService.getVaccinationRecords(
request.id,
request.password
);

const instance = plainToInstance(
VaccinationRecordResponse,
codefResponse
);
return instance.toVaccinationResponse();
throw new Error('Not implemented');
} catch (e) {
if (!this.isCodefException(e)) throw e;

Expand Down

This file was deleted.

This file was deleted.

Loading

0 comments on commit f32fab5

Please sign in to comment.