public function set_up_local_demand_ping_clients()
 {
     $request_id = "Not Given";
     try {
         /*
          * First treat this bid request JSON as if it came in 
          * from a regular remote buy side partner (DSP)
          */
         \buyloopbackpartner\LoopbackPartnerInit::init();
         $LoopbackPartnerBid = new \buyloopbackpartner\LoopbackPartnerBid($this->config, $this->config['buyside_rtb']['supply_partners']['BuyLoopbackPartner']['buyer_id']);
         $LoopbackPartnerBid->is_local_request = true;
         $validated = $LoopbackPartnerBid->parse_incoming_request(json_encode($this->ping_request));
         if ($validated === true) {
             $request_id = $LoopbackPartnerBid->RtbBidRequest->id;
             $LoopbackPartnerBid->process_business_logic();
             $LoopbackPartnerBid->convert_ads_to_bid_response();
         }
         $LoopbackPartnerBid->build_outgoing_bid_response();
         if ($LoopbackPartnerBid->had_bid_response == true) {
             if (\buyloopbackpartner\LoopbackPartnerLogger::get_instance()->setting_only_log_bids == true) {
                 \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->output_log($this->config);
             }
             /*
              * Next hook up the bid responses from our local demand dashboard customers
              * to the publishers' RTB bid request manager
              */
             $sell_side_partners_dir = __DIR__ . '/../../../../SellSidePartners';
             require_once $sell_side_partners_dir . '/LoopbackPartner.php';
             $partner_class = new \LoopbackPartner();
             $RTBPinger = new RTBPinger($partner_class->partner_name, $partner_class->partner_id, $partner_class->partner_rtb_url, $LoopbackPartnerBid->bid_responses, $partner_class->rtb_connection_timeout_ms, $partner_class->rtb_timeout_ms, $partner_class->partner_quality_score, $partner_class->verify_ssl, false);
             $RTBPinger->is_loopback_pinger = true;
             $this->RTBLoopbackPing = $RTBPinger;
         }
     } catch (Exception $e) {
         \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->log[] = "BID EXCEPTION: ID: " . $request_id . " MESSAGE: " . $e->getMessage();
     }
     if (\buyloopbackpartner\LoopbackPartnerLogger::get_instance()->setting_only_log_bids == false) {
         \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->output_log($this->config);
     }
 }
 public function bidAction()
 {
     \buyloopbackpartner\LoopbackPartnerInit::init();
     $real_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : "";
     foreach ($this->ban_ips as $ban_ip) {
         if (strpos($real_ip, $ban_ip) !== false) {
             $this->indexAction();
         }
     }
     $config = $this->getServiceLocator()->get('Config');
     $application_config = $this->getServiceLocator()->get('ApplicationConfig');
     $rtb_seat_id = isset($application_config['rtb_seat_id']) ? $application_config['rtb_seat_id'] : null;
     $response_seat_id = isset($application_config['response_seat_id']) ? $application_config['response_seat_id'] : null;
     $request_id = "Not Given";
     try {
         $LoopbackPartnerBid = new \buyloopbackpartner\LoopbackPartnerBid($config, $rtb_seat_id, $response_seat_id);
         $LoopbackPartnerBid->is_local_request = false;
         $validated = $LoopbackPartnerBid->parse_incoming_request();
         if ($validated === true) {
             $request_id = $LoopbackPartnerBid->RtbBidRequest->id;
             $LoopbackPartnerBid->process_business_logic();
         }
         $LoopbackPartnerBid->convert_ads_to_bid_response();
         $LoopbackPartnerBid->build_outgoing_bid_response();
         $LoopbackPartnerBid->send_bid_response();
         if ($LoopbackPartnerBid->had_bid_response == true || \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->setting_only_log_bids == false) {
             \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->output_log();
         }
     } catch (Exception $e) {
         \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->log[] = "BID EXCEPTION: ID: " . $request_id . " MESSAGE: " . $e->getMessage();
         header("Content-type: application/json");
         echo '{"seatbid":[{"bid":[{"price":0}]}],"nbr":2}';
     }
     if (\buyloopbackpartner\LoopbackPartnerLogger::get_instance()->setting_only_log_bids == false) {
         \buyloopbackpartner\LoopbackPartnerLogger::get_instance()->output_log();
     }
     exit;
 }