---
title: modules/aiServices/controller
---
stateDiagram
state if_state <<choice>>
state if_state_nlp_ctrl <<choice>>
state if_state_ctrl <<choice>>
state if_state_rabbitMQ_result <<choice>>
state if_get <<choice>>
[*] --> request
request -->IsDirectOrProxy
IsDirectOrProxy --> if_state
if_state --> Direct
Direct --> if_state_ctrl
if_state_ctrl --> baseCtrl
if_state_ctrl --> faceVerificationCtrl
faceVerificationCtrl --> createMessage
faceVerificationCtrl --> amqp
faceVerificationCtrl --> redis
if_state_ctrl --> faceBlurringMorphingCtrl
faceBlurringMorphingCtrl --> createMessage : 1
faceBlurringMorphingCtrl --> createReadStream : 2
faceBlurringMorphingCtrl --> amqp
faceBlurringMorphingCtrl --> redis
defaultNLP --> amqp
defaultNLP --> redis
base --> redis
state baseCtrl {
base --> create
base --> get
get --> if_get
if_get --> proxyToServices
if_get --> checkServerHealth
if_get --> serveFile
default --> if_state_nlp_ctrl
if_state_nlp_ctrl --> defaultNLP
defaultNLP --> defaultNLP: isAllowedIP?
updateCounts --> result
note left of updateCounts
EQ: max_count - 1
end note
if_state_nlp_ctrl --> default
default --> filterValues
default --> createMessage
note left of default
{ gatewayLogData, isAllowedIP, originalUrl } = req;
{ queue } = accessAiService.Service;
end note
note right of filterValues
EQ: checkTrueorFalseValue req.body[val]]?
end note
default --> createMessage
note right of createMessage
EQ: { ...msg, ...filePath }
msg has been excepted of:
file.howGet == 'base64' || file.howGet == 'link'
end note
}
if_state --> Proxy
Proxy --> proxyToServices
state if_req_srtProxy <<choice>>
proxyToServices --> if_req_srtProxy
if_req_srtProxy --> handleSRTProxyRequest: req.srtProxy
if_req_srtProxy --> handleFileRequest : (req.hasFile || req.method == 'GET')
if_req_srtProxy --> handleNonFileRequest: else
note right of handleSRTProxyRequest
Params: (req, res, apiId, value, gatewayLogData)
end note
state amqp {
rabbitMQ --> rabbitMQ: getInstance
rabbitMQ --> sendRpcMessage
sendRpcMessage --> if_state_rabbitMQ_result
}
if_state_rabbitMQ_result --> updateCounts :result
checkServerHealth --> redis
state redis{
generateRedisKey --> setRedisKey : key of ApiIdPluseRandom of val New Data
note right of generateRedisKey
EQ: ${apiId}::${randomUUID()}
end note
}
result --> [*] : return of Ctrls