Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(license-service): Use smart-solutions-v2 client #15960

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {
LicenseType,
LicenseUpdateClientService,
} from '@island.is/clients/license-client'
import { Pass, PassDataInput, Result } from '@island.is/clients/smartsolutions'
import type { Logger } from '@island.is/logging'
import { LOGGER_PROVIDER } from '@island.is/logging'
import {
Expand All @@ -28,6 +27,11 @@ import {
} from './dto'
import { ErrorType, LicenseId } from './license.types'
import { mapLicenseIdToLicenseType } from './utils/mapLicenseId'
import {
Pass,
PassDataInput,
Result,
} from '@island.is/clients/smart-solutions-v2'
thorkellmani marked this conversation as resolved.
Show resolved Hide resolved

const LOG_CATEGORY = 'license-api'

Expand Down Expand Up @@ -139,7 +143,7 @@ export class LicenseService {
nationalId: string,
payload?: string,
requestId?: string,
): Promise<Result<Pass | undefined>> {
): Promise<Result<Partial<Pass> | undefined>> {
let updatePayload: PassDataInput = {
expirationDate,
}
Expand Down Expand Up @@ -178,7 +182,7 @@ export class LicenseService {
service: BaseLicenseUpdateClient,
nationalId: string,
requestId?: string,
): Promise<Result<Pass | undefined>> {
): Promise<Result<Partial<Pass> | undefined>> {
/** PULL - Update electronic license with pulled data from service
* 1. Fetch data from provider
* 2. Parse and validate license data
Expand Down Expand Up @@ -209,7 +213,7 @@ export class LicenseService {
updateType: inputData.licenseUpdateType,
})

let updateRes: Result<Pass | undefined>
let updateRes: Result<Partial<Pass> | undefined>
if (inputData.licenseUpdateType === 'push') {
const { expiryDate, payload } = inputData

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
PassDataInput,
Result,
RevokePassData,
} from '@island.is/clients/smartsolutions'
} from '@island.is/clients/smart-solutions-v2'

export enum LicenseUpdateType {
PUSH = 'push',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
RevokePassData,
SmartSolutionsApi,
VerifyPassData,
} from '@island.is/clients/smartsolutions'
} from '@island.is/clients/smart-solutions-v2'
import type { Logger } from '@island.is/logging'
import { LOGGER_PROVIDER } from '@island.is/logging'
import { ConfigModule } from '@island.is/nest/config'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,13 @@
import { AdrAndMachineLicenseClientModule } from '@island.is/clients/adr-and-machine-license'
import {
SmartSolutionsApiClientModule,
SmartSolutionsConfig,
} from '@island.is/clients/smartsolutions'
import { Module } from '@nestjs/common'
import { ConfigType } from '@island.is/nest/config'
import { AdrLicenseClient } from './adrLicenseClient.service'
import { AdrDigitalLicenseClientConfig } from './adrLicenseClient.config'
import { smartSolutionsModuleFactory } from '../../factories/smartSolutionsModuleFactory'
thorkellmani marked this conversation as resolved.
Show resolved Hide resolved

@Module({
imports: [
AdrAndMachineLicenseClientModule,
SmartSolutionsApiClientModule.registerAsync({
useFactory: (
config: ConfigType<typeof AdrDigitalLicenseClientConfig>,
) => {
const smartConfig: SmartSolutionsConfig = {
apiKey: config.apiKey,
apiUrl: config.apiUrl,
passTemplateId: config.passTemplateId,
}
return smartConfig
},
inject: [AdrDigitalLicenseClientConfig.KEY],
}),
smartSolutionsModuleFactory(AdrDigitalLicenseClientConfig),
],
providers: [AdrLicenseClient],
exports: [AdrLicenseClient],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,6 @@ import { Inject, Injectable } from '@nestjs/common'
import { Auth, AuthMiddleware, User } from '@island.is/auth-nest-tools'
import { createPkPassDataInput } from './adrLicenseClientMapper'
import { AdrApi, AdrDto } from '@island.is/clients/adr-and-machine-license'
import {
Pass,
PassDataInput,
SmartSolutionsApi,
} from '@island.is/clients/smartsolutions'
import { format } from 'kennitala'
import { FetchError } from '@island.is/clients/middlewares'
import compareAsc from 'date-fns/compareAsc'
Expand All @@ -22,6 +17,11 @@ import {
VerifyPkPassResult,
} from '../../licenseClient.type'
import { FlattenedAdrDto } from './adrLicenseClient.type'
import {
Pass,
PassDataInput,
SmartSolutionsService,
} from '@island.is/clients/smart-solutions-v2'
thorkellmani marked this conversation as resolved.
Show resolved Hide resolved

/** Category to attach each log message to */
const LOG_CATEGORY = 'adrlicense-service'
Expand All @@ -31,7 +31,7 @@ export class AdrLicenseClient implements LicenseClient<LicenseType.AdrLicense> {
constructor(
@Inject(LOGGER_PROVIDER) private logger: Logger,
private adrApi: AdrApi,
private smartApi: SmartSolutionsApi,
private smartApi: SmartSolutionsService,
thorkellmani marked this conversation as resolved.
Show resolved Hide resolved
) {}

clientSupportsPkPass = true
Expand Down Expand Up @@ -155,7 +155,7 @@ export class AdrLicenseClient implements LicenseClient<LicenseType.AdrLicense> {
}
}

private async getPkPass(user: User): Promise<Result<Pass>> {
private async getPkPass(user: User): Promise<Result<Partial<Pass>>> {
const license = await this.fetchLicense(user)

if (!license.ok || !license.data) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { AdrDto } from '@island.is/clients/adr-and-machine-license'

import format from 'date-fns/format'
import { FlattenedAdrDto, FlattenedAdrRightsDto } from './adrLicenseClient.type'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import type { Logger } from '@island.is/logging'
import { Injectable } from '@nestjs/common'
import { PassVerificationData, Result } from '../licenseClient.type'
import {
Pass,
PassDataInput,
RevokePassData,
SmartSolutionsApi,
} from '@island.is/clients/smartsolutions'
import { PassVerificationData, Result } from '../licenseClient.type'
SmartSolutionsService,
} from '@island.is/clients/smart-solutions-v2'

@Injectable()
export abstract class BaseLicenseUpdateClient {
constructor(
protected logger: Logger,
protected smartApi: SmartSolutionsApi,
protected smartApi: SmartSolutionsService,
thorkellmani marked this conversation as resolved.
Show resolved Hide resolved
) {}

abstract pushUpdate(
inputData: PassDataInput,
nationalId: string,
requestId?: string,
): Promise<Result<Pass | undefined>>
): Promise<Result<Partial<Pass> | undefined>>

abstract pullUpdate(
nationalId: string,
requestId?: string,
): Promise<Result<Pass | undefined>>
): Promise<Result<Partial<Pass> | undefined>>

abstract revoke(
nationalId: string,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import { DisabilityLicenseClientModule } from '@island.is/clients/disability-license'
import { SmartSolutionsApiClientModule } from '@island.is/clients/smartsolutions'
import { Module } from '@nestjs/common'
import { ConfigType } from '@island.is/nest/config'
import { DisabilityLicenseClient } from '../services/disabilityLicenseClient.service'
import { DisabilityDigitalLicenseClientConfig } from '../disabilityLicenseClient.config'
import { smartSolutionsModuleFactory } from '../../../factories/smartSolutionsModuleFactory'

@Module({
imports: [
DisabilityLicenseClientModule,
SmartSolutionsApiClientModule.registerAsync({
useFactory: (
config: ConfigType<typeof DisabilityDigitalLicenseClientConfig>,
) => config,
inject: [DisabilityDigitalLicenseClientConfig.KEY],
}),
smartSolutionsModuleFactory(DisabilityDigitalLicenseClientConfig),
],
providers: [DisabilityLicenseClient],
exports: [DisabilityLicenseClient],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
import { SmartSolutionsApiClientModule } from '@island.is/clients/smartsolutions'
import { Module } from '@nestjs/common'
import { ConfigType } from '@island.is/nest/config'
import { DisabilityDigitalLicenseClientConfig } from '../disabilityLicenseClient.config'
import { DisabilityLicenseUpdateClient } from '../services/disabilityLicenseUpdateClient.service'
import { smartSolutionsModuleFactory } from '../../../factories/smartSolutionsModuleFactory'

@Module({
imports: [
SmartSolutionsApiClientModule.registerAsync({
useFactory: (
config: ConfigType<typeof DisabilityDigitalLicenseClientConfig>,
) => config,
inject: [DisabilityDigitalLicenseClientConfig.KEY],
}),
],
imports: [smartSolutionsModuleFactory(DisabilityDigitalLicenseClientConfig)],
providers: [DisabilityLicenseUpdateClient],
exports: [DisabilityLicenseUpdateClient],
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ import {
DisabilityLicenseService,
OrorkuSkirteini,
} from '@island.is/clients/disability-license'
import {
Pass,
PassDataInput,
SmartSolutionsApi,
} from '@island.is/clients/smartsolutions'
import { FetchError } from '@island.is/clients/middlewares'
import compareAsc from 'date-fns/compareAsc'
import {
Expand All @@ -22,6 +17,11 @@ import {
Result,
VerifyPkPassResult,
} from '../../../licenseClient.type'
import {
Pass,
PassDataInput,
SmartSolutionsService,
} from '@island.is/clients/smart-solutions-v2'

/** Category to attach each log message to */
const LOG_CATEGORY = 'disability-license-service'
Expand All @@ -33,7 +33,7 @@ export class DisabilityLicenseClient
constructor(
@Inject(LOGGER_PROVIDER) private logger: Logger,
private disabilityLicenseApi: DisabilityLicenseService,
private smartApi: SmartSolutionsApi,
private smartApi: SmartSolutionsService,
) {}

clientSupportsPkPass = true
Expand Down Expand Up @@ -157,7 +157,7 @@ export class DisabilityLicenseClient
}
}

async getPkPass(user: User): Promise<Result<Pass>> {
async getPkPass(user: User): Promise<Result<Partial<Pass>>> {
thorkellmani marked this conversation as resolved.
Show resolved Hide resolved
const license = await this.fetchLicense(user)

if (!license.ok || !license.data) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
import type { Logger } from '@island.is/logging'
import { LOGGER_PROVIDER } from '@island.is/logging'
import { Inject, Injectable } from '@nestjs/common'
import {
Pass,
PassDataInput,
RevokePassData,
SmartSolutionsApi,
} from '@island.is/clients/smartsolutions'
import {
PassVerificationData,
Result,
VerifyInputData,
} from '../../../licenseClient.type'
import { BaseLicenseUpdateClient } from '../../baseLicenseUpdateClient'
import {
Pass,
PassDataInput,
RevokePassData,
SmartSolutionsService,
} from '@island.is/clients/smart-solutions-v2'

@Injectable()
export class DisabilityLicenseUpdateClient extends BaseLicenseUpdateClient {
constructor(
@Inject(LOGGER_PROVIDER) protected logger: Logger,
protected smartApi: SmartSolutionsApi,
protected smartApi: SmartSolutionsService,
) {
super(logger, smartApi)
}

pushUpdate(
inputData: PassDataInput,
nationalId: string,
): Promise<Result<Pass | undefined>> {
): Promise<Result<Partial<Pass> | undefined>> {
return this.smartApi.updatePkPass(inputData, nationalId)
}

async pullUpdate(): Promise<Result<Pass>> {
async pullUpdate(): Promise<Result<Partial<Pass>>> {
return {
ok: false,
error: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
DriverLicenseDto as DriversLicense,
RemarkCode,
} from '@island.is/clients/driving-license'
import { PassInputFieldValueDataInput } from '@island.is/clients/smartsolutions'
import { PassInputFieldValueDataInput } from '@island.is/clients/smart-solutions-v2'
import format from 'date-fns/format'
import { info, format as formatSsn } from 'kennitala'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
import { DrivingLicenseApiModule } from '@island.is/clients/driving-license'
import { DrivingLicenseClient } from '../services/drivingLicenseClient.service'
import { Module } from '@nestjs/common'
import { SmartSolutionsApiClientModule } from '@island.is/clients/smartsolutions'
import { ConfigType } from '@nestjs/config'
import { DrivingDigitalLicenseClientConfig } from '../drivingLicenseClient.config'
import { FeatureFlagModule } from '@island.is/nest/feature-flags'
import { smartSolutionsModuleFactory } from '../../../factories/smartSolutionsModuleFactory'

@Module({
imports: [
DrivingLicenseApiModule,
FeatureFlagModule,
SmartSolutionsApiClientModule.registerAsync({
useFactory: (
config: ConfigType<typeof DrivingDigitalLicenseClientConfig>,
) => config,
inject: [DrivingDigitalLicenseClientConfig.KEY],
}),
smartSolutionsModuleFactory(DrivingDigitalLicenseClientConfig),
],
providers: [DrivingLicenseClient],
exports: [DrivingLicenseClient],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import { Module } from '@nestjs/common'
import { SmartSolutionsApiClientModule } from '@island.is/clients/smartsolutions'
import { ConfigType } from '@nestjs/config'
import { DrivingLicenseUpdateClient } from '../services/drivingLicenseUpdateClient.service'
import { DrivingDigitalLicenseClientConfig } from '../drivingLicenseClient.config'
import { DrivingLicenseApiModule } from '@island.is/clients/driving-license'
import { smartSolutionsModuleFactory } from '../../../factories/smartSolutionsModuleFactory'

@Module({
imports: [
DrivingLicenseApiModule,
SmartSolutionsApiClientModule.registerAsync({
useFactory: (
config: ConfigType<typeof DrivingDigitalLicenseClientConfig>,
) => config,
inject: [DrivingDigitalLicenseClientConfig.KEY],
}),
smartSolutionsModuleFactory(DrivingDigitalLicenseClientConfig),
],
providers: [DrivingLicenseUpdateClient],
exports: [DrivingLicenseUpdateClient],
Expand Down
Loading
Loading