cn.icanci.loopstack.rec.engine.script.impl.RecScriptEngineImpl Maven / Gradle / Ivy
The newest version!
package cn.icanci.loopstack.rec.engine.script.impl;
import cn.hutool.http.Method;
import cn.hutool.json.JSONUtil;
import cn.icanci.loopstack.rec.engine.script.RecScriptEngine;
import cn.icanci.loopstack.rec.engine.script.client.Client;
import cn.icanci.loopstack.rec.engine.script.client.http.HttpClientImpl;
import cn.icanci.loopstack.rec.engine.script.context.RecScriptEngineContext;
import cn.icanci.loopstack.rec.engine.script.factory.ScriptEngineFactory;
import cn.icanci.loopstack.rec.engine.script.wrapper.HttpResponseWrapper;
import cn.icanci.loopstack.rec.common.enums.HttpRequestTypeEnum;
import cn.icanci.loopstack.rec.common.enums.ScriptTypeEnum;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.script.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Maps;
/**
* @author icanci
* @since 1.0 Created in 2022/11/12 22:46
*/
public class RecScriptEngineImpl implements RecScriptEngine {
private static final Logger logger = LoggerFactory.getLogger(RecScriptEngineImpl.class);
/** http实例 */
private static final Client CLIENT = HttpClientImpl.getInstance();
@Override
public ScriptEngine findEngine(ScriptTypeEnum scriptType) {
return cn.icanci.loopstack.rec.engine.script.factory.ScriptEngineFactory.getScriptEngine(scriptType);
}
@Override
public CompiledScript compile(ScriptTypeEnum scriptType, String scriptContent) {
try {
ScriptEngine scriptEngine = cn.icanci.loopstack.rec.engine.script.factory.ScriptEngineFactory.getScriptEngine(scriptType);
if (scriptEngine instanceof Compilable) {
Compilable compilable = (Compilable) scriptEngine;
return compilable.compile(scriptContent);
}
} catch (Throwable t) {
// No Op
logger.error("[RecScriptEngine][compile] compile error:{}", t.getMessage());
}
return null;
}
/**
* 执行脚本
*
* @param scriptType 脚本类型
* @param script 脚本内容
* @return 脚本执行返回上下文
*/
@Override
public RecScriptEngineContext