public function run(Config $config) { $client = RestClient::create(['base_url' => $this->baseUrl, 'defaults' => ['headers' => UserFunction::build($this->headers, ['attr' => $config->getAttributes()])]], JuicerRest::convertRetry($this->retryConfig)); if (!empty($this->defaultRequestOptions)) { $client->setDefaultRequestOptions($this->defaultRequestOptions); } $this->auth->authenticateClient($client); // Verbose Logging of all requests $client->getClient()->getEmitter()->attach(new LogRequest()); if ($this->cache) { CacheSubscriber::attach($client->getClient(), ['storage' => $this->cache, 'validate' => false, 'can_cache' => function (RequestInterface $requestInterface) { return true; }]); } $this->initParser($config); $builder = new Builder(); foreach ($config->getJobs() as $jobConfig) { $this->runJob($jobConfig, $client, $config, $builder); } if ($this->parser instanceof Json) { // FIXME fallback from JsonMap $this->metadata = array_replace_recursive($this->metadata, $this->parser->getMetadata()); } // return $this->parser->getResults(); }
/** * @param array $config * @return RestRequest */ protected function getAuthRequest(array $config) { if (empty($config['endpoint'])) { throw new UserException('Request endpoint must be set for the Login authentication method.'); } if (!empty($config['params'])) { $config['params'] = UserFunction::build($config['params'], $this->params); } if (!empty($config['headers'])) { $config['headers'] = UserFunction::build($config['headers'], $this->params); } return RestRequest::create($config); }
/** * @param JobConfig $config * @return array */ protected function buildParams(JobConfig $config) { $params = UserFunction::build($config->getParams(), ['attr' => $this->attributes, 'time' => $this->metadata['time']], $this->stringBuilder); $config->setParams($params); return $params; }
public function testBuild() { $functions = ['str' => 'aaa', 'attribute' => ['attr' => 'attrName'], 'fn' => ['function' => 'md5', 'args' => ['hashMe']]]; $data = ['attr' => ['attrName' => 'attrValue']]; self::assertEquals(['str' => 'aaa', 'attribute' => $data['attr']['attrName'], 'fn' => md5($functions['fn']['args'][0])], UserFunction::build($functions, $data)); }