|
@@ -4,13 +4,14 @@ import { interval, Observable, Subject } from 'rxjs';
|
|
|
import * as net from 'net'
|
|
|
import { ConfigService } from '@nestjs/config';
|
|
|
import { connectToAfisJava } from 'libs/java/afis.utils';
|
|
|
-import { Fingerprint, FingerprintPayload, FingerprintPayloadUI, FisMessage, JavaResponse, PersonFingerprintData } from 'libs';
|
|
|
+import { Fingerprint, FingerprintPayload, FingerprintPayloadUI, FisMessage, JavaResponse, PersonFingerprintData, TransparencyResponseData } from 'libs';
|
|
|
import { v1 as uuid } from 'uuid'
|
|
|
|
|
|
@Injectable()
|
|
|
export class FisVerificationService {
|
|
|
private port: number
|
|
|
private host: string
|
|
|
+ private edgeScoreThreshold: number
|
|
|
private javaClient: net.Socket
|
|
|
private incomingMessageFromJava!: Subject<JavaResponse>
|
|
|
private registeredFingerprintData: Fingerprint[] = []
|
|
@@ -21,15 +22,47 @@ export class FisVerificationService {
|
|
|
private configService: ConfigService
|
|
|
) {
|
|
|
// Set up incoming responses or messages from TCP Java
|
|
|
+ this.incomingMessageFromJava = new Subject()
|
|
|
this.port = this.configService.get<number>('afis.tcpPort') as number
|
|
|
this.host = this.configService.get<string>('afis.host') as string
|
|
|
+ this.edgeScoreThreshold = this.configService.get<number>('edgeScore.mark') as number
|
|
|
+
|
|
|
+ this.handleJavaResponse()
|
|
|
|
|
|
this.javaClient = connectToAfisJava(this.host, this.port)
|
|
|
this.javaClient.on(`data`, (data) => {
|
|
|
let message: JavaResponse = JSON.parse(data.toString())
|
|
|
- console.log(message)
|
|
|
- console.log(`Java server response: ${message.message}`)
|
|
|
- if (message.operation == `QualityAssurance`) {
|
|
|
+ this.incomingMessageFromJava.next(message)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ public handleMessage(message: FisMessage): void {
|
|
|
+ console.log(`Sending fingerprint data to Java verification....`)
|
|
|
+ let payload: FingerprintPayloadUI = message.data as FingerprintPayloadUI
|
|
|
+ let command: FingerprintPayload = {
|
|
|
+ ...payload,
|
|
|
+ fpTemplateArray: this.registeredFingerprintData
|
|
|
+ }
|
|
|
+ this.javaClient.write(JSON.stringify(command) + `\n`)
|
|
|
+ }
|
|
|
+
|
|
|
+ private populateRegisteredFpData(): void {
|
|
|
+ // let command: FingerprintPayload = {
|
|
|
+ // id: uuid(),
|
|
|
+ // cmd: `Populate Registered Prints`,
|
|
|
+ // date: new Date(),
|
|
|
+ // personInfo: null,
|
|
|
+ // fpScan: ``,
|
|
|
+ // fingerPosition: 0,
|
|
|
+ // fpTemplateArray: this.registeredFingerprintData
|
|
|
+ // }
|
|
|
+ // this.javaClient.write(JSON.stringify(command))
|
|
|
+ }
|
|
|
+
|
|
|
+ private handleJavaResponse(): void {
|
|
|
+ this.incomingMessageFromJava.subscribe(message => {
|
|
|
+ // console.log(`Java server response: ${message.message}`)
|
|
|
+ if (message.operation == `Quality Assurance`) {
|
|
|
let response: FisMessage = {
|
|
|
header: {
|
|
|
messageID: uuid(),
|
|
@@ -37,17 +70,18 @@ export class FisVerificationService {
|
|
|
},
|
|
|
data: {
|
|
|
id: uuid(),
|
|
|
- cmd: `QualityAssurance`,
|
|
|
- message: `${message.data.name} finger position ${message.data.fingerprints[0].fpPosition} edge score is ${(message.edgeScore > 250 ? `good` : `bad`)}`,
|
|
|
+ cmd: `Quality Assurance`,
|
|
|
+ message: `${message.data.name} finger position ${message.data.fingerprints[0].fpPosition} edge score is ${message.edgeScore > this.edgeScoreThreshold ? `good` : `bad`}`,
|
|
|
data: {
|
|
|
score: message.score,
|
|
|
person: message.data.name,
|
|
|
fpPosition: message.data.fingerprints[0].fpPosition,
|
|
|
- fpQuality: (message.score > 250 ? `good` : `bad`)
|
|
|
- }
|
|
|
+ fpQuality: message.edgeScore > this.edgeScoreThreshold ? `good` : `bad`
|
|
|
+ } as TransparencyResponseData
|
|
|
}
|
|
|
}
|
|
|
- console.log(`Sending back to fingerpint nest`)
|
|
|
+ // console.log(`Sending back to fingerpint nest`)
|
|
|
+ console.log(response)
|
|
|
this.fingerprintClient.emit(`verification`, response)
|
|
|
}
|
|
|
|
|
@@ -57,23 +91,9 @@ export class FisVerificationService {
|
|
|
// console.log(this.registeredFingerprintData)
|
|
|
console.log(`${this.registeredFingerprintData.length} registered print.`)
|
|
|
}
|
|
|
- // this.incomingMessageFromJava.next(message)
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- public handleMessage(message: FisMessage): void {
|
|
|
- console.log(`Sending fingerprint data to Java verification....`)
|
|
|
- let payload: FingerprintPayloadUI = message.data as FingerprintPayloadUI
|
|
|
- let command: FingerprintPayload = {
|
|
|
- ...payload,
|
|
|
- fpTemplateArray: this.registeredFingerprintData
|
|
|
- }
|
|
|
- this.javaClient.write(JSON.stringify(command) + `\n`)
|
|
|
- // let data = JSON.parse(message)
|
|
|
- // console.log(data)
|
|
|
- // this.javaClient.write(JSON.stringify(extractionMessage) + `\n`)
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/* Reason based on ChatGPT: Why ClientProxy.send() or emit() won't work
|