Example #1
0
 function testSetStatus()
 {
     $response = new Response();
     $response->setStatus('402 Where\'s my money?');
     $this->assertEquals(402, $response->getStatus());
     $this->assertEquals('Where\'s my money?', $response->getStatusText());
 }
Example #2
0
 public function serve($app)
 {
     if (!is_callable($app)) {
         throw new InvalidArgumentException('not a valid app');
     }
     $this->log('Serving ' . (is_object($app) ? get_class($app) : $app) . ' app…');
     try {
         $this->log("got request");
         $context = array('env' => $_SERVER, 'stdin' => fopen("php://input", "r"), 'logger' => function ($message) {
             trigger_error($message, E_USER_NOTICE);
         }, '_GET' => $_GET, '_POST' => $_POST, '_FILES' => $_FILES, '_COOKIE' => new Cookies());
         $result = call_user_func($app, $context);
         $response = new Response();
         $response->setStatus($result[0]);
         for ($i = 0, $cnt = count($result[1]); $i < $cnt; $i++) {
             $response->addHeader($result[1][$i], $result[1][++$i]);
         }
         unset($response);
         echo $result[2];
         unset($result);
         $this->log("-> done with request");
     } catch (\Exception $e) {
         $this->log('[Exception] ' . get_class($e) . ': ' . $e->getMessage());
     }
 }
Example #3
0
 function saveuser()
 {
     $response = new Response();
     try {
         $id = $this->input->post("user-id");
         $email = $this->input->post("email");
         $firstName = $this->input->post("first-name");
         $lastName = $this->input->post("last-name");
         $role = $this->input->post("role");
         $subDivision = $this->input->post("sub-division");
         $user = new User();
         if ($id != null && $id != "") {
             $user = $this->findById("User", $id);
         }
         $user->setEmail($email);
         $user->setUsername($email);
         $user->setPassword("");
         $user->setFirstName($firstName);
         $user->setLastName($lastName);
         $subDivision = $this->findById("Subdivision", $subDivision);
         $user->setSubdivision($subDivision);
         $role = $this->getRoleByName($role);
         $user->setRole($role[0]);
         $token = $this->getRandomCode();
         $user->setToken($token);
         $this->save($user);
         $emailMessage = "Hi " . $user->getName() . ", <br/> Your account has been activate on " . base_url() . ". Please <a href='" . site_url() . "/validate/" . $token . "'>click here </a> to create you password.";
         $this->sendMail($user->getEmail(), "Active you account.", $emailMessage);
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
Example #4
0
 public static function jsonDeserialize($content)
 {
     $data = json_decode($content);
     $keys = array_keys(json_decode($content, true));
     $response = new Response();
     foreach ($keys as $key) {
         switch ($key) {
             case 'status':
                 $response->setStatus($data->status);
                 break;
             case 'data':
                 $response->setData($data->data);
                 break;
             case 'error':
                 $response->setErrorMessage($data->error);
                 break;
             case 'code':
                 $response->setErrorCode($data->code);
                 break;
             case 'metadata':
                 foreach ((array) $data->metadata as $key => $value) {
                     $response->setMetadata($key, $value);
                 }
                 break;
         }
     }
     return $response;
 }
Example #5
0
 function sendForBilling()
 {
     $response = new Response();
     try {
         $projectId = $this->input->post("project-id");
         $amount = $this->input->post("project-bill-amount");
         $billDoc = $this->input->post("bill-doc");
         $project = $this->findById("Project", $projectId);
         if ($project == null) {
             throw new RuntimeException("Invalid Project..!");
         }
         $project->setStatus(Project::PROJECT_BILL);
         $project->getWorkOrder()->setStatus(Workorder::STATUS_COMPLETED);
         $project->getWorkOrder()->setApprovedBy($this->getLoggedInUser());
         $bill = new Bill();
         $bill->setAmount($amount);
         $bill->setProject($project);
         $bill->setCreated(new DateTime());
         $bill->setStatus(Bill::STATUS_PENDING);
         if ($billDoc != null && $billDoc != "") {
             foreach ($billDoc as $file) {
                 $doc = new Document();
                 $doc->setName($file);
                 $doc->setCreated(new DateTime());
                 $bill->getBillDoc()->add($doc);
             }
         }
         $this->save($bill);
         $response->setData(Project::PROJECT_BILL);
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
 /**
  * @param string $message Message.
  * @param int $code Error code.
  * @param mixed $customMessages Additional information about error.
  *
  * @todo определиться с $customMessages: это mixed или array?
  */
 public function __construct($message, $code = self::ERR_CRITICAL, $customMessages = null)
 {
     $this->response = E()->getResponse();
     if (isset($customMessages)) {
         if (!is_array($customMessages)) {
             $this->customMessages = array($customMessages);
         } else {
             $this->customMessages = $customMessages;
         }
     }
     if ($code == self::ERR_LANG) {
         $this->response->setStatus(503);
         $this->response->setHeader('Retry-After', 20);
         $message = translate($message, E()->getLanguage()->getDefault());
     } elseif ($code == self::ERR_403) {
         $this->response->setStatus(403);
         $message = translate($message, E()->getLanguage()->getCurrent());
     } elseif ($code == self::ERR_404) {
         $this->response->setStatus(404);
         $message = translate($message, E()->getLanguage()->getCurrent());
     } elseif ($code != self::ERR_DB) {
         $message = translate($message, E()->getLanguage()->getCurrent());
     }
     $this->backtrace = debug_backtrace(!DEBUG_BACKTRACE_PROVIDE_OBJECT, 5);
     parent::__construct($message, $code);
 }
Example #7
0
 function approve()
 {
     $response = new Response();
     try {
         $projectId = $this->input->post("project-id");
         $amount = floatval($this->input->post("project-bill-amount"));
         $project = $this->findById("Project", $projectId);
         if ($projectId == null) {
             throw new RuntimeException("Invalid Request");
         }
         $availableAmount = $this->getAvailableFundAmountByScheme($project->getScheme()->getId());
         if ($amount > floatval($availableAmount)) {
             throw new RuntimeException("Insufficient Funds !");
         }
         $utilisedAmt = 0;
         foreach ($this->getAvailableFunds($project->getScheme()) as $fund) {
             /*if($fund->getAmount() == $fund->getUsedAmount()){
                   continue;
               }*/
             $reqAmt = $amount - $utilisedAmt;
             $fundDetails = new FundDetails();
             $fundDetails->setCreated(new DateTime());
             $availableAmount = $fund->getAmount() - $fund->getUsedAmount();
             if ($availableAmount >= $reqAmt) {
                 $fundDetails->setAmount($reqAmt);
                 $fund->setUsedAmount($fund->getUsedAmount() + $reqAmt);
                 $utilisedAmt = $amount;
             } else {
                 if ($reqAmt <= $availableAmount) {
                     $fund->setUsedAmount($fund->getUsedAmount() + $reqAmt);
                     $fundDetails->setAmount($reqAmt);
                     $utilisedAmt = $utilisedAmt + $reqAmt;
                 } else {
                     $fund->setUsedAmount($fund->getUsedAmount() + $availableAmount);
                     $fundDetails->setAmount($availableAmount);
                     $utilisedAmt = $utilisedAmt + $availableAmount;
                 }
             }
             $fundDetails->setFund($fund);
             $fundDetails->setProject($project);
             $project->getFundDetails()->add($fundDetails);
             if ($utilisedAmt == $amount) {
                 break;
             }
         }
         $bill = $project->getBill();
         $bill->setApprovedBy($this->getLoggedInUser());
         $bill->setApprovedAmount($amount);
         $bill->setStatus(Bill::STATUS_APPROVED);
         $project->setStatus(Project::PROJECT_COMPLETED);
         $this->save($project);
         $response->setData(Bill::STATUS_APPROVED);
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
Example #8
0
 /**
  * Sets the response body and status code header
  *
  * @param mixed $data
  * @param integer $status
  * @return void
  */
 protected function respond($data, $status = null)
 {
     if ($this->performedRespond) {
         throw new DoubleRespond();
     }
     $this->response->setStatus(!empty($status) ? $status : $this->status);
     $this->response->setBody($data);
     $this->performedRespond = true;
 }
Example #9
0
 public function writeResponse($response_data)
 {
     $response = new Response($this);
     $response->setStatus($response_data[0]);
     for ($i = 0, $cnt = count($response_data[1]); $i < $cnt; $i++) {
         $response->addHeader($response_data[1][$i], $response_data[1][++$i]);
     }
     $response->sendHeaders();
     $this->write($response_data[2]);
     // body
 }
Example #10
0
 /**
  * Returns a list of users.
  * @return void
  */
 public function actionGet()
 {
     $response = new Response();
     $users = User::model()->findAll();
     $data = array();
     foreach ($users as $user) {
         $data[] = $user->getResponseData();
     }
     $response->setStatus(Response::STATUS_OK);
     $response->setData('list', $data);
     $response->setData('total', count($users));
     echo $response;
 }
Example #11
0
 public function writeResponse($response_data)
 {
     $response = new Response($this);
     $response->setStatus($response_data[0]);
     for ($i = 0, $cnt = count($response_data[1]); $i < $cnt; $i++) {
         $response->addHeader($response_data[1][$i], $response_data[1][++$i]);
     }
     $response->sendHeaders();
     if (!is_resource($response_data[2])) {
         $this->write($response_data[2]);
     } else {
         while (!feof($response_data[2])) {
             $this->write(fread($response_data[2], 1024));
         }
     }
 }
Example #12
0
 private function doExecute($curlHandle, Request $request)
 {
     curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
     curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curlHandle, CURLOPT_HEADER, true);
     curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Accept: ' . $request->getHttpAccept()));
     $res = curl_exec($curlHandle);
     $info = curl_getinfo($curlHandle);
     $response = new Response();
     $response->setStatus($info['http_code']);
     if (false !== $res) {
         $response->setHeaders(substr($res, 0, $info['header_size']));
         $response->setBody(substr($res, -$info['download_content_length']));
     }
     return $response;
 }
Example #13
0
 public function testMarshalling()
 {
     $response = new Response();
     $response->setStatus(array('Code' => 'OurStatusCode', 'SubCode' => 'OurSubStatusCode', 'Message' => 'OurMessageText'));
     $responseElement = $response->toUnsignedXML();
     $statusElements = Utils::xpQuery($responseElement, './saml_protocol:Status');
     $this->assertCount(1, $statusElements);
     $statusCodeElements = Utils::xpQuery($statusElements[0], './saml_protocol:StatusCode');
     $this->assertCount(1, $statusCodeElements);
     $this->assertEquals('OurStatusCode', $statusCodeElements[0]->getAttribute("Value"));
     $nestedStatusCodeElements = Utils::xpQuery($statusCodeElements[0], './saml_protocol:StatusCode');
     $this->assertCount(1, $nestedStatusCodeElements);
     $this->assertEquals('OurSubStatusCode', $nestedStatusCodeElements[0]->getAttribute("Value"));
     $statusMessageElements = Utils::xpQuery($statusElements[0], './saml_protocol:StatusMessage');
     $this->assertCount(1, $statusMessageElements);
     $this->assertEquals('OurMessageText', $statusMessageElements[0]->textContent);
 }
Example #14
0
 /**
  * Dispatch the given request by finding and invoking the handler matching the request data.
  *
  * @param Request $request 
  * @param Response $response 
  * @return Response
  */
 public function dispatch(Request $request, Response $response)
 {
     $matches = $this->match($request->getPath(), $request->getMethod());
     if ($matches === null) {
         throw new \Exception('No routes match the path ' . $request->getPath() . '');
     }
     if (!is_callable($matches['handler'])) {
         throw new \Exception('The given handler is not a valid callback.');
     }
     $result = call_user_func_array($matches['handler'], array_merge(array($this->application), $matches['params']));
     if (is_string($result)) {
         $response->setContent($result);
     } elseif (is_numeric($result)) {
         $response->setStatus($result);
     }
     return $response;
 }
Example #15
0
 public function deleteAction()
 {
     $params = Request::getParams();
     $validator = new Validator();
     $params = $validator->sanitize($params);
     $validator->validation_rules(array("id" => "required|numeric|checkIfRecordIdExists"));
     $validated_data = $validator->run($params);
     if ($validated_data === false) {
         Response::setStatus(404);
         $returnArray = array("error" => "Invalid data was sent", "messages" => $validator->get_readable_errors());
     } else {
         $model = new Model_Record();
         $model->delete($params['id']);
         Response::setStatus(204);
         $returnArray = array();
     }
     return $returnArray;
 }
Example #16
0
 function load($id)
 {
     $response = new Response();
     try {
         $workOrder = $this->findById("Workorder", $id);
         $comments = array();
         foreach ($workOrder->getComments() as $cmt) {
             $dto = new Commentdto();
             $dto->setId($cmt->getId());
             $dto->setComment($cmt->getComment());
             $dto->setCreated(date_format($cmt->getCreated(), "d-M-Y"));
             $dto->setCommentedBy($cmt->getCommentedBy()->getFirstName() . " " . $cmt->getCommentedBy()->getLastName());
             array_push($comments, $dto);
         }
         $response->setData($comments);
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
Example #17
0
 function getFundDetails($id = null)
 {
     $response = new Response();
     try {
         if ($id == null) {
             throw new RuntimeException("Invalid Request..!");
         }
         $funds = parent::getFundDetails($id);
         $fundArray = array();
         foreach ($funds as $fund) {
             $dto = new FundDetailsDto();
             $dto->setAmount($fund->getAmount());
             $dto->setProjectName($fund->getProject()->getName());
             $dto->setFundAmount($fund->getFund()->getAmount());
             array_push($fundArray, $dto);
         }
         $response->setData($fundArray);
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
Example #18
0
 function addContractor()
 {
     $response = new Response();
     try {
         $userId = $this->input->post("user-id");
         $firstName = $this->input->post("first-name");
         $lastName = $this->input->post("last-name");
         $email = $this->input->post("email");
         $phone = $this->input->post("phone");
         $contractor = new Contractor();
         if ($userId != null && $userId != "") {
             $contractor = $this->findById("Contractor", $userId);
         }
         $contractor->setFirstName($firstName);
         $contractor->setLastName($lastName);
         $contractor->setEmail($email);
         $contractor->setPhone($phone);
         $this->save($contractor);
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
Example #19
0
 public function validate()
 {
     $response = new Response();
     try {
         $username = trim($this->input->post('username'));
         $password = trim($this->input->post('password'));
         if ($username != null && $username != "" && $password != null && $password != "") {
             $query = $this->doctrine->em->createQuery('SELECT u FROM User u WHERE u.email = :username and u.password = :password');
             $query->setParameter('username', $username);
             $query->setParameter('password', $password);
             $users = $query->getResult();
             if ($users != null) {
                 $loggedInUser = $users[0];
                 $this->session->set_userdata('logged_in', $loggedInUser->getId());
                 $subDivsionId = -1;
                 if ($loggedInUser->getSubdivision() != null) {
                     $subDivsionId = $loggedInUser->getSubdivision()->getId();
                 }
                 $this->session->set_userdata('sub_division_id', $subDivsionId);
                 $functions = array();
                 foreach ($loggedInUser->getRole()->getRoleFunction() as $fn) {
                     array_push($functions, $fn->getName());
                 }
                 $this->session->set_userdata('functions', $functions);
             } else {
                 throw new RuntimeException("Invalid Username/Password");
             }
         } else {
             throw new RuntimeException("Invalid Username/Password");
         }
     } catch (Exception $e) {
         $response->setStatus(false);
         $response->setErrorMessage($e->getMessage());
     }
     $this->output->set_content_type('application/json')->set_output(json_encode($response));
 }
 private function simpleErrorResponse($message)
 {
     $response = new Response();
     $response->setStatus(500, 'Internal Server Error')->setData(['result' => ['success' => false, 'error' => $message]]);
     return $response;
 }
Example #21
0
    /**
     * Test adding in-response-to to a status message.
     */
    public function testResponseTo()
    {
        $response = new Response();
        $response->setIssueInstant(1453323439);
        $response->setStatus(array('Code' => 'OurStatusCode'));
        $response->setInResponseTo('aabb12234');
        $responseElement = $response->toUnsignedXML();
        $expectedStructureDocument = new \DOMDocument();
        $expectedStructureDocument->loadXML(<<<STATUSXML
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
                xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
                ID="123"
                Version="2.0"
                IssueInstant="2016-01-20T20:57:19Z"
                InResponseTo="aabb12234">
  <samlp:Status>
    <samlp:StatusCode Value="OurStatusCode"/>
  </samlp:Status>
</samlp:Response>
STATUSXML
);
        $expectedStructure = $expectedStructureDocument->documentElement;
        $this->assertEqualXMLStructure($expectedStructure, $responseElement);
    }
Example #22
0
 private function sendPreAppOptionsResponse(Request $request, Response $response)
 {
     $response->setStatus(HTTP_STATUS["OK"]);
     $response->setHeader("Allow", implode(",", $this->options->allowedMethods));
     $response->end(null);
 }
Example #23
0
 public function __invoke(Request $request, Response $response, ...$args)
 {
     if ($request->getMethod() !== "GET") {
         $response->setStatus(HTTP_STATUS["METHOD_NOT_ALLOWED"]);
         $response->setHeader("Allow", "GET");
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     if ($request->getProtocolVersion() !== "1.1") {
         $response->setStatus(HTTP_STATUS["HTTP_VERSION_NOT_SUPPORTED"]);
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     $body = $request->getBody();
     if (!$body instanceof NullBody) {
         $response->setStatus(HTTP_STATUS["BAD_REQUEST"]);
         $response->setReason("Bad Request: Entity body disallowed for websocket endpoint");
         $response->setHeader("Connection", "close");
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     $hasUpgradeWebsocket = false;
     foreach ($request->getHeaderArray("Upgrade") as $value) {
         if (strcasecmp($value, "websocket") === 0) {
             $hasUpgradeWebsocket = true;
             break;
         }
     }
     if (empty($hasUpgradeWebsocket)) {
         $response->setStatus(HTTP_STATUS["UPGRADE_REQUIRED"]);
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     $hasConnectionUpgrade = false;
     foreach ($request->getHeaderArray("Connection") as $value) {
         $values = array_map("trim", explode(",", $value));
         foreach ($values as $token) {
             if (strcasecmp($token, "Upgrade") === 0) {
                 $hasConnectionUpgrade = true;
                 break;
             }
         }
     }
     if (empty($hasConnectionUpgrade)) {
         $response->setStatus(HTTP_STATUS["UPGRADE_REQUIRED"]);
         $response->setReason("Bad Request: \"Connection: Upgrade\" header required");
         $response->setHeader("Upgrade", "websocket");
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     if (!($acceptKey = $request->getHeader("Sec-Websocket-Key"))) {
         $response->setStatus(HTTP_STATUS["BAD_REQUEST"]);
         $response->setReason("Bad Request: \"Sec-Websocket-Key\" header required");
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     if (!in_array("13", $request->getHeaderArray("Sec-Websocket-Version"))) {
         $response->setStatus(HTTP_STATUS["BAD_REQUEST"]);
         $response->setReason("Bad Request: Requested Websocket version unavailable");
         $response->setHeader("Sec-WebSocket-Version", "13");
         $response->setHeader("Aerys-Generic-Response", "enable");
         $response->end();
         return;
     }
     $handshaker = new Handshake($response, $acceptKey);
     $onHandshakeResult = $this->application->onHandshake($request, $handshaker, ...$args);
     if ($onHandshakeResult instanceof \Generator) {
         $onHandshakeResult = (yield from $onHandshakeResult);
     }
     $request->setLocalVar("aerys.websocket", $onHandshakeResult);
     $handshaker->end();
 }
Example #24
0
 public static function run()
 {
     $dotenv = new \Dotenv\Dotenv(TXTROOT);
     $dotenv->load();
     if (isset($_SERVER['HTTP_USER_AGENT']) && stripos($_SERVER['HTTP_USER_AGENT'], 'Slackbot-LinkExpanding') !== false) {
         Response::sendResponse(Response::HTTP_403, ['error' => "No slackbots allowed"]);
         exit;
     }
     if (!getenv('REDIS_URL')) {
         Response::sendResponse(Response::HTTP_500, ['error' => "REDIS_URL environment variable required"]);
         exit;
     }
     if (!Request::isGet() && !Request::isPost()) {
         Response::sendResponse(Response::HTTP_405, ['error' => "Please use a GET or POST"]);
         exit;
     }
     if (getenv('AUTH') && (!isset($_POST['auth']) || !static::compareStrings(getenv('AUTH'), $_POST['auth']))) {
         Response::sendResponse(Response::HTTP_401, ['error' => "'auth' parameter is missing or invalid"]);
         exit;
     }
     //    header('Access-Control-Allow-Origin: ' . $_SERVER['ORIGIN']);
     //    header('Access-Control-Allow-Credentials: true');
     //    Access-Control-Allow-Methods: GET, POST
     // x-frame-options
     $redis = Redis::getRedis(getenv('REDIS_URL'));
     $hash = ltrim(Request::getPath(), '/');
     if ($hash) {
         if ($hash == 'robots.txt') {
             Response::setStatus(Response::HTTP_200);
             Response::setContentType(Response::TEXT);
             Response::setContent("User-agent: *\nDisallow: /");
             Response::send();
             exit;
         }
         if (Request::isPost()) {
             Response::sendResponse(Response::HTTP_405, ['error' => "Cannot post to a hash"]);
             exit;
         }
         if (strlen($hash) > Redis::MAX_KEY_LENGTH || !preg_match('/^[A-Za-z0-9]+$/', $hash)) {
             Response::sendResponse(Response::HTTP_404, ['error' => "Invalid hash"]);
             exit;
         }
         $data = $redis->hGetAll(Redis::PREFIX . $hash);
         if (!$data) {
             Response::sendResponse(Response::HTTP_404, ['error' => "Hash not found"]);
             exit;
         }
         $datum = Datum::createFromArray($data);
         if ($datum->once) {
             $redis->del(Redis::PREFIX . $hash);
         }
         // set proper cache header, esp for read-once
         // actually, PROBABLY NOT A GOOD IDEA, esp for things that are meant to expire. we should do the opposite - dont cache
         // Response::setCacheForeverHeaders();
         Response::sendResponse('datum', ['datum' => $datum]);
         exit;
     }
     if (Request::isGet()) {
         Response::sendResponse('home', ['domain' => 'http' . (Request::isSSL() ? 's' : '') . '://' . Request::getHost()]);
         exit;
     } else {
         $data = isset($_POST['data']) ? $_POST['data'] : file_get_contents("php://input");
         if (!$data) {
             Response::sendResponse(Response::HTTP_400, ['error' => 'No data submitted']);
             exit;
         }
         $datum = new Datum(trim($data), Datum::T_TEXT, Request::isFlagOn('once'));
         $key = substr(static::randId(), 0, Redis::MAX_KEY_LENGTH);
         $ttl = isset($_POST['ttl']) ? max(1, min((int) $_POST['ttl'], Redis::MAX_TTL)) : Redis::MAX_TTL;
         $redis->hMSet(Redis::PREFIX . $key, $datum->toArray());
         $redis->expire(Redis::PREFIX . $key, $ttl);
         $url = 'http' . (Request::isSSL() ? 's' : '') . '://' . Request::getHost() . '/' . $key;
         Response::sendResponse(Response::HTTP_201, ['url' => $url, 'ttl' => $ttl, '_textKey' => 'url']);
         exit;
     }
 }
Example #25
0
 function redirect($to, $status = 301)
 {
     if ($this->request->getParams()) {
         // Attempting to fill the blanks.
         $params = $this->request->getParams();
         $to = preg_replace_callback('%\\$(\\d+)%', function ($matches) use($params) {
             $index = $matches[1] - 1;
             if (array_key_exists($index, $params)) {
                 return $params[$index];
             } else {
                 return '';
             }
         }, $to);
     }
     $response = new Response();
     $response->redirect($to);
     $response->setStatus($status);
     return $response;
 }
Example #26
0
 /**
  * 处理异常
  *
  * @param Exception $e
  */
 public static function handleException(\Exception $e)
 {
     restore_error_handler();
     restore_exception_handler();
     // clean buffer
     if (!headers_sent()) {
         ob_get_level() and ob_clean();
     }
     $response = new Response();
     try {
         $status = $e instanceof \Lime\Exception\NotFoundException ? 404 : 500;
         $response->setStatus($status);
         $response->setBody($status == 404 ? static::notFound($e) : static::error($e));
         $response->respond();
     } catch (\Exception $e) {
         /* 异常处理中出错的最后处理 */
         ob_get_level() and ob_clean();
         header('Content-Type: text/plain; charset=UTF-8', true, 500);
         echo static::text($e);
     }
     exit(1);
 }
Example #27
0
 private function _perform($status, $text)
 {
     $this->response->setStatus($status);
     $this->response->setContent($text);
 }
Example #28
0
 protected function get_cover()
 {
     $userId = $this->ampacheUser->getUserId();
     $albumId = $this->params('filter');
     try {
         $album = $this->albumMapper->find($albumId, $userId);
     } catch (DoesNotExistException $e) {
         $r = new Response();
         $r->setStatus(Http::STATUS_NOT_FOUND);
         return $r;
     }
     $files = $this->rootFolder->getById($album->getCoverFileId());
     if (count($files) === 1) {
         return new FileResponse($files[0]);
     } else {
         $r = new Response();
         $r->setStatus(Http::STATUS_NOT_FOUND);
         return $r;
     }
 }
Example #29
0
 /**
  * @param Response $response
  * @param Response $services
  * @return Response
  */
 private function appendToResponse(Response $response, Response $services)
 {
     foreach ($services as $service) {
         $response->append($service);
     }
     $response->setStatus($services->getStatus());
     return $response;
 }
Example #30
0
 public function run()
 {
     $response = null;
     list($route_mask, $service_name) = $this->findServiceRoute();
     if (null !== $route_mask) {
         $response = $this->executeServiceRoute($route_mask, $service_name);
         if (null !== $response) {
             $response->generation_time = $this->getTimer();
             $response->generation_mem = $this->getMemory();
             if ($this->application->passport->is_auth()) {
                 $response->setHeader('User access token: ' . $this->application->passport->getSessionToken());
             }
             $response->output($service_name, $route_mask);
             $this->stop();
         }
     }
     // Статичная страница
     /** @var \Service\Pages\Model_Factory $pages_factory */
     $pages_factory = $this->service_factory->factoryPages;
     if (null !== $pages_factory) {
         $url = $this->request->url->toString(false);
         $page = $pages_factory->pages->getBySlug($url);
         if (null !== $page) {
             $service_name = 'Pages';
             $route_mask = new \Service\Pages\Router_Client_Page();
             $route_mask->found_variables[\Service\Pages\Model_Pages_Page::FIELD_SLUG] = $url;
             $response = $this->executeServiceRoute($route_mask, $service_name);
             if (null !== $response) {
                 $response->generation_time = $this->getTimer();
                 $response->generation_mem = $this->getMemory();
                 $response->output($service_name, $route_mask);
                 $this->stop();
             }
         }
     }
     // Есть стандартная страница ошибки
     $this->request->url->path = '/404.html';
     list($route_mask, $service_name) = $this->findServiceRoute();
     if (null !== $route_mask) {
         $response = $this->executeServiceRoute($route_mask, $service_name);
         if (null !== $response) {
             $response->setStatus(Response::HTTP_404_Not_Found);
             $response->generation_time = $this->getTimer();
             $response->generation_mem = $this->getMemory();
             $response->output();
             $this->stop();
         }
     }
     // Нет стандартной страницы ошибки
     $response = new Response();
     $response->setStatus(Response::HTTP_404_Not_Found);
     $response->setBody('Nothing found');
     $response->generation_time = $this->getTimer();
     $response->generation_mem = $this->getMemory();
     $response->output();
     $this->stop();
 }