public function __construct($loggerClass, \FACTFinder\Core\ConfigurationInterface $configuration, \FACTFinder\Core\Server\Request $request, \FACTFinder\Core\Client\UrlBuilder $urlBuilder, \FACTFinder\Core\AbstractEncodingConverter $encodingConverter = null)
 {
     parent::__construct($loggerClass, $configuration, $request, $urlBuilder, $encodingConverter);
     $this->log = $loggerClass::getLogger(__CLASS__);
     $this->request->setAction('Search.ff');
     $this->parameters['format'] = 'json';
     $this->useJsonResponseContentProcessor();
 }
 private function createCampaigns()
 {
     $campaigns = array();
     if ($this->isLandingPageCampaign && !isset($this->parameters['pageId'])) {
         $this->log->warn('Page campaigns cannot be loaded without a page ID. ' . 'Use setPageId() first.');
     } else {
         if (!$this->isLandingPageCampaign && !isset($this->parameters['productNumber'])) {
             $this->log->warn('Product campaigns cannot be loaded without a product ID. ' . 'Use setProductIDs() or addProductIDs() first.');
         } else {
             if ($this->isShoppingCartCampaign || $this->isLandingPageCampaign) {
                 $jsonData = $this->getResponseContent();
             } else {
                 // Use only the first product ID
                 $productIDs = $this->parameters['productNumber'];
                 if (is_array($productIDs) && !empty($productIDs)) {
                     $this->parameters['productNumber'] = $productIDs[0];
                 }
                 $jsonData = $this->getResponseContent();
                 // Restore IDs
                 $this->parameters['productNumber'] = $productIDs;
             }
             if (parent::isValidResponse($jsonData)) {
                 foreach ($jsonData as $campaignData) {
                     $campaign = $this->createEmptyCampaignObject($campaignData);
                     $this->fillCampaignWithFeedback($campaign, $campaignData);
                     $this->fillCampaignWithPushedProducts($campaign, $campaignData);
                     $campaigns[] = $campaign;
                 }
             }
         }
     }
     $campaignIterator = FF::getInstance('Data\\CampaignIterator', $campaigns);
     return $campaignIterator;
 }