22
33namespace ProcessMaker \ScriptRunners ;
44
5+ use Carbon \Carbon ;
6+ use Illuminate \Support \Facades \Cache ;
57use Illuminate \Support \Facades \Log ;
68use ProcessMaker \GenerateAccessToken ;
79use ProcessMaker \Models \EnvironmentVariable ;
810use ProcessMaker \Models \ScriptDockerBindingFilesTrait ;
911use ProcessMaker \Models \ScriptDockerCopyingFilesTrait ;
12+ use ProcessMaker \Models \ScriptDockerNayraTrait ;
1013use ProcessMaker \Models \ScriptExecutor ;
1114use ProcessMaker \Models \User ;
1215use RuntimeException ;
@@ -15,6 +18,9 @@ abstract class Base
1518{
1619 use ScriptDockerCopyingFilesTrait;
1720 use ScriptDockerBindingFilesTrait;
21+ use ScriptDockerNayraTrait;
22+
23+ const NAYRA_LANG = 'php-nayra ' ;
1824
1925 private $ tokenId = '' ;
2026
@@ -38,7 +44,7 @@ abstract public function config($code, array $dockerConfig);
3844 /**
3945 * Set the script executor
4046 *
41- * @var \ProcessMaker\Models\User
47+ * @var \ProcessMaker\Models\ScriptExecutor
4248 */
4349 private $ scriptExecutor ;
4450
@@ -70,13 +76,25 @@ public function run($code, array $data, array $config, $timeout, ?User $user)
7076 // Create tokens for the SDK if a user is set
7177 $ token = null ;
7278 if ($ user ) {
73- $ token = new GenerateAccessToken ($ user );
74- $ environmentVariables [] = 'API_TOKEN= ' . $ token ->getToken ();
79+ $ expires = Carbon::now ()->addWeek ();
80+ $ accessToken = Cache::remember ('script-runner- ' . $ user ->id , $ expires , function () use ($ user ) {
81+ $ user ->removeOldRunScriptTokens ();
82+ $ token = new GenerateAccessToken ($ user );
83+ return $ token ->getToken ();
84+ });
85+ $ environmentVariables [] = 'API_TOKEN= ' . $ accessToken ;
7586 $ environmentVariables [] = 'API_HOST= ' . config ('app.docker_host_url ' ) . '/api/1.0 ' ;
7687 $ environmentVariables [] = 'APP_URL= ' . config ('app.docker_host_url ' );
7788 $ environmentVariables [] = 'API_SSL_VERIFY= ' . (config ('app.api_ssl_verify ' ) ? '1 ' : '0 ' );
7889 }
7990
91+ // Nayra Executor
92+ $ isNayra = $ this ->scriptExecutor ->language === self ::NAYRA_LANG ;
93+ if ($ isNayra ) {
94+ $ response = $ this ->handleNayraDocker ($ code , $ data , $ config , $ timeout , $ environmentVariables );
95+ return json_decode ($ response , true );
96+ }
97+
8098 if ($ environmentVariables ) {
8199 $ parameters = '-e ' . implode (' -e ' , $ environmentVariables );
82100 } else {
0 commit comments