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(); }
public function testConvert() { $oldConfig = ['maxRetries' => 6, 'curlCodes' => [6], 'httpCodes' => [503], 'headerName' => 'Retry-After', 'custom' => 'value']; $newConfig = JuicerRest::convertRetry($oldConfig); // items $this->assertArrayHasKey('maxRetries', $newConfig); $this->assertArrayHasKey('custom', $newConfig); $this->assertArrayHasKey('curl', $newConfig); $this->assertArrayHasKey('codes', $newConfig['curl']); $this->assertArrayHasKey('http', $newConfig); $this->assertArrayHasKey('codes', $newConfig['http']); $this->assertArrayHasKey('retryHeader', $newConfig['http']); // item values $this->assertSame($oldConfig['custom'], $newConfig['custom']); $this->assertSame($oldConfig['maxRetries'], $newConfig['maxRetries']); $this->assertSame($oldConfig['curlCodes'], $newConfig['curl']['codes']); $this->assertSame($oldConfig['httpCodes'], $newConfig['http']['codes']); $this->assertSame($oldConfig['headerName'], $newConfig['http']['retryHeader']); // removed items $this->assertArrayNotHasKey('curlCodes', $newConfig); $this->assertArrayNotHasKey('httpCodes', $newConfig); $this->assertArrayNotHasKey('headerName', $newConfig); }