IMPORT util IMPORT com TYPE t_sync_cmd RECORD oper STRING, data STRING END RECORD MAIN DEFINE k,kurl,kbodega STRING, ktrue BOOLEAN DEFINE ku RECORD usuario VARCHAR(50), clave VARCHAR(20), sesion VARCHAR(10) END RECORD LET ku.usuario = 'jsoto' LET ku.clave = 'lmmjvsd2014' LET ku.sesion = 'ABRIR' LET kurl = "http://200.88.67.188:8097" CALL valida_usuario(ku.*,kurl) RETURNING KTRUE,kbodega DISPLAY " DATOS ",ktrue," ",kbodega CALL chequea_rnc(kurl) RETURNING ktrue, kbodega DISPLAY "CHEQUEA ",kbodega," ",ktrue END MAIN FUNCTION valida_usuario(u,url) DEFINE u RECORD usuario VARCHAR(50), clave VARCHAR(20), sesion VARCHAR(10) END RECORD DEFINE r_cmd t_sync_cmd DEFINE cmd, res, msg,url STRING, ret INT DEFINE r RECORD perror STRING, pbodega SMALLINT END RECORD LET r_cmd.oper = "v_usuarios" LET r_cmd.data = util.JSON.stringify(u) -- aca se convierte a string los datos de la operacion LET cmd = util.JSON.stringify(r_cmd) -- aca se convierte a string el comando/operacion a enviar al server CALL sync_send_command(url, cmd) RETURNING ret, res IF ret == 0 THEN CALL util.JSON.parse(res,r) IF r.perror = "VALIDO" THEN RETURN TRUE,r.pbodega ELSE LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res CALL show_sync_err(msg) RETURN FALSE,r.pbodega END IF ELSE LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res CALL show_sync_err(msg) RETURN FALSE,r.pbodega END IF END FUNCTION FUNCTION chequea_rnc(url) DEFINE r_cmd t_sync_cmd DEFINE u CHAR(11), url,cmd,res,msg STRING, ret INT DEFINE r RECORD perror STRING, pbodega SMALLINT END RECORD DEFINE prnc RECORD nombre_cliente STRING, direccion STRING, existe INT END RECORD LET u ='130337391' LET r_cmd.oper = "rnc" LET r_cmd.data = util.JSON.stringify(u) -- aca se convierte a string los datos de la operacion LET cmd = util.JSON.stringify(r_cmd) CALL sync_send_command(url, cmd) RETURNING ret, res DISPLAY "ret ",ret IF ret == 0 THEN CALL util.JSON.parse(res,prnc) DISPLAY "datos ",prnc.nombre_cliente IF r.perror = "VALIDO" THEN RETURN TRUE,r.pbodega ELSE LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res CALL show_sync_err(msg) RETURN FALSE,r.pbodega END IF ELSE LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res CALL show_sync_err(msg) RETURN FALSE,r.pbodega END IF END FUNCTION # ## Communications library using com (http or https) # FUNCTION sync_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.setConnectionTimeout(40) CALL http_req.setTimeout(40) CALL http_req.setMethod("POST") CALL http_req.setCharset("UTF-8") CALL http_req.setHeader("DBSync-Client","mbs") CALL http_req.setHeader("Content-Type","dbsync/json") DISPLAY "request ",cmd CALL http_req.doTextRequest(cmd) 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.SQLERRM) END TRY RETURN 0, result END FUNCTION FUNCTION show_sync_err(msg) DEFINE msg STRING CALL fgl_winmessage(%"ERROR", msg, "exclamation") END FUNCTION