public function execute() { $service = func_get_arg(0); $config = $this->api->getConfig(); $logger = $this->api->getLogger(); // Stop if blocks is not configured if (!isset($config['block'])) { return; } $blocked = explode(',', $config['block']); if (in_array($_SERVER['REMOTE_ADDR'], $blocked)) { $logger->log("Request blocked for this IP by BlockIp Hook."); $response = new Api_Response(); $response->setCode(406); $response->addError("Stop it you Spammer!"); $this->api->send($response); } }
/** * Send response to client * * @param Api_Response $data * @return void */ public final function send(Api_Response $response) { // Modify parser $this->executeHooks(Api_Hook_IHook::HOOK_MODIFY_PARSER, array($this->parser)); // Get content type $content_type = $this->parser->content_type; // Set the content type header("Generator: Advanced API"); header('HTTP/1.0 ' . $response->getCode() . " " . $this->getStatusCodeMessage($response->getCode())); header('Content-type: ' . $content_type); // If code is note ok (not 200) then log the returning message if ($response->getCode() != 200) { $error = reset($response->getErrors()); if (is_object($error)) { $this->logger->log($error->getMessage()); } } // Create data array from response if (!is_array($response)) { $data['code'] = $response->getCode(); foreach ($response->getErrors() as $error) { if (is_object($error)) { $data['errors'][] = $error->getMessage(); } } $data['data'] = $response->getData(); } // Parse response array to correct type $this->parser->setData($data); $this->parser->setParams($this->request->getParams()); echo $this->parser->parse(); exit; }