173 lines
5.2 KiB
Plaintext
173 lines
5.2 KiB
Plaintext
OPTIONS SHORT CIRCUIT
|
|
|
|
IMPORT util
|
|
IMPORT com
|
|
|
|
|
|
FUNCTION apiclient(pemail)
|
|
DEFINE data_apilayer RECORD
|
|
email,did_you_mean,USER,domain,syntax_valid STRING,
|
|
is_disposable,is_role_account,is_catch_all,is_deliverable,can_connect_smtp,
|
|
is_inbox_full,is_disabled,mx_records,FREE,score BOOLEAN
|
|
END RECORD
|
|
|
|
DEFINE data_ipq RECORD
|
|
MESSAGE STRING,
|
|
success,
|
|
valid,
|
|
disposable BOOLEAN,
|
|
smtp_score ,
|
|
overall_score DEC(10,2),
|
|
first_name string,
|
|
generic,
|
|
common,
|
|
dns_valid,
|
|
honeypot BOOLEAN,
|
|
deliverability STRING,
|
|
frequent_complainer BOOLEAN,
|
|
spam_trap_score STRING,
|
|
catch_all,
|
|
timed_out,
|
|
suspect,
|
|
recent_abuse BOOLEAN,
|
|
fraud_score DEC(10,2),
|
|
suggested_domain string,
|
|
leaked BOOLEAN
|
|
END RECORD
|
|
|
|
DEFINE estado,purl,cmd,res, msg,s,pemail,tiposervice STRING,
|
|
ret INT
|
|
|
|
# ELECCION DE SERVICIOS, POR EL MOMENTO ES IPQUALITY
|
|
LET tiposervice = 'ipq1'
|
|
|
|
|
|
IF tiposervice = 'ipq' THEN
|
|
LET purl = 'https://ipqualityscore.com/api/json/email/cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3/',pemail CLIPPED
|
|
CALL ipquality_send_command(purl) RETURNING ret,res
|
|
DISPLAY "estoy a qui"
|
|
IF ret ==0 THEN
|
|
LET s = util.JSON.stringify(res)
|
|
CALL util.JSON.parse(res,data_ipq)
|
|
|
|
IF data_ipq.valid THEN
|
|
LET estado = 'VALIDO'
|
|
LET ret = 200
|
|
|
|
ELSE
|
|
LET ret = 400
|
|
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
CALL apilayer_send_command(purl, cmd) RETURNING ret, res
|
|
# DISPLAY "res ",res," ",ret
|
|
IF ret ==0 THEN
|
|
LET s = util.JSON.stringify(res)
|
|
CALL util.JSON.parse(res,data_apilayer)
|
|
|
|
IF data_apilayer.can_connect_smtp THEN
|
|
LET estado = 'VALIDO'
|
|
LET ret = 200
|
|
|
|
ELSE
|
|
LET ret = 400
|
|
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
|
|
|
|
END IF
|
|
|
|
|
|
# DISPLAY "sintax ",data.syntax_valid," deliv ",data.is_deliverable
|
|
ELSE
|
|
IF ret = 429 THEN
|
|
LET ret = 200
|
|
LET estado ='VALIDO POR EXESO DE REQUEST'
|
|
ELSE
|
|
LET ret = 400
|
|
LET estado = 'NO FUE POSIBLE LA CONEXION, '
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
DISPLAY "en return ",estado," ",ret
|
|
RETURN estado,ret
|
|
END FUNCTION
|
|
|
|
#
|
|
## Communications library using com (http or https)
|
|
#
|
|
|
|
FUNCTION apilayer_send_command(url, cmd)
|
|
|
|
DEFINE url, cmd STRING
|
|
DEFINE result, tmp STRING
|
|
DEFINE http_req com.HTTPRequest
|
|
DEFINE http_resp com.HTTPResponse
|
|
|
|
|
|
|
|
TRY
|
|
LET http_req = com.HTTPRequest.Create(url)
|
|
CALL http_req.setHeader("apikey","gPWg6pDyOt3k2RL2ElbghaMqs6dNMAwm")
|
|
|
|
CALL http_req.doRequest()
|
|
|
|
LET http_resp=http_req.getResponse()
|
|
|
|
IF http_resp.getStatusCode() != 200 THEN
|
|
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
|
|
END IF
|
|
LET tmp = http_resp.getStatusDescription()
|
|
IF (tmp == "OK" || tmp == "no error" ) THEN
|
|
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
|
|
END IF
|
|
LET result = http_resp.getTextResponse()
|
|
CATCH
|
|
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.sqlerrd[2])
|
|
END TRY
|
|
|
|
|
|
RETURN 0, result
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION ipquality_send_command(url)
|
|
|
|
DEFINE url, cmd STRING
|
|
DEFINE result, tmp STRING
|
|
DEFINE http_req com.HTTPRequest
|
|
DEFINE http_resp com.HTTPResponse
|
|
|
|
|
|
|
|
TRY
|
|
LET http_req = com.HTTPRequest.Create(url)
|
|
CALL http_req.setHeader("apikey","cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3")
|
|
|
|
CALL http_req.doRequest()
|
|
|
|
LET http_resp=http_req.getResponse()
|
|
|
|
IF http_resp.getStatusCode() != 200 THEN
|
|
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
|
|
END IF
|
|
LET tmp = http_resp.getStatusDescription()
|
|
IF (tmp == "OK" || tmp == "no error" ) THEN
|
|
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
|
|
END IF
|
|
LET result = http_resp.getTextResponse()
|
|
CATCH
|
|
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.sqlerrd[2])
|
|
END TRY
|
|
|
|
|
|
RETURN 0, result
|
|
|
|
END FUNCTION
|
|
FUNCTION show_sync_err(msg)
|
|
DEFINE msg STRING
|
|
CALL fgl_winmessage(%"ERROR", msg, "exclamation")
|
|
END FUNCTION
|