コード例 #1
0
 public function TreatRequest()
 {
     if ($this->IsAuthorized()) {
         $request = new Request();
         switch ($request->getMethod()) {
             case 'GET':
                 return $this->DoGet();
                 break;
             case 'POST':
                 return $this->DoPost();
                 break;
             default:
                 throw new \Exception();
         }
     }
     return "false";
 }
コード例 #2
0
 public function saveAction(Params $params, Request $request, Response $response, Form $form, Finder $finderService, Update $updateService, Form $form, View $view)
 {
     if ($request->getMethod() !== Request::METHOD_PUT) {
         return $view;
     }
     $id = $params('id');
     $entity = $finderService->find(['T4webTranslate' => ['Words' => ['Id' => (int) $id]]]);
     if (!$entity) {
         $response->setStatusCode(Response::STATUS_CODE_404);
         $view->setErrors(['message' => 'bad params']);
         return $view;
     }
     $data = Json::decode($request->getContent(), Json::TYPE_ARRAY);
     $form->setData($data);
     if (!$form->isValid()) {
         $response->setStatusCode(Response::STATUS_CODE_404);
         $view->setErrors($form->getMessages());
         return $view;
     }
     $entity->populate($data);
     $result = $updateService->update($id, $entity->extract());
     $view->setVariables($result->extract());
     return $view;
 }
コード例 #3
0
ファイル: Utility.php プロジェクト: logue/pukiwiki_adv
 /**
  * QueryStringをパースし、$_GETに上書き
  * @return void
  */
 public static function parseArguments()
 {
     global $cookie, $get, $post, $method;
     global $defaultpage;
     $request = new Request();
     // GET, POST, COOKIE
     $get = $request->getQuery();
     $post = $request->getPost();
     $cookie = $request->getCookie();
     $method = $request->getMethod();
     $vars = array();
     if (strlen($get->toString()) > self::MAX_QUERY_STRING_LENGTH) {
         // Something nasty attack?
         self::dump('suspicious');
         self::dieMessage(_('Query string is too long.'));
     }
     if (count($get) === 0) {
         // Queryがない場合
         $get->set('page', $defaultpage);
     } else {
         if (count($get) === 1 && empty(array_values((array) $get)[0])) {
             // 配列の長さが1で最初の配列に値が存在しない場合はキーをページ名とする。
             $k = trim(array_keys((array) $get)[0]);
             $get->set('page', rawurldecode($_SERVER['QUERY_STRING']));
             unset($get[$k]);
         }
     }
     // 外部からの変数を$vars配列にマージする
     if (empty($post)) {
         $vars = (array) $get;
         // Major pattern: Read-only access via GET
     } else {
         if (empty($get)) {
             $vars = (array) $post;
             // Minor pattern: Write access via POST etc.
         } else {
             $vars = array_merge((array) $get, (array) $post);
             // Considered reliable than $_REQUEST
         }
     }
     //		var_dump($vars);
     //		die;
     if (!isset($vars['cmd'])) {
         $vars['cmd'] = 'read';
     }
     if (isset($vars['page']) && is_string($vars['page']) && preg_match(Wiki::INVALIED_PAGENAME_PATTERN, $vars['page']) === false) {
         // ページ名チェック
         self::dump('suspicious');
         die('Invalid page name.');
     }
     if (is_string($vars['cmd']) && preg_match(PluginRenderer::PLUGIN_NAME_PATTERN, $vars['cmd']) === false) {
         // 入力チェック: cmdの文字列は英数字以外ありえない
         self::dump('suspicious');
         die(sprintf('Plugin name %s is invalied or too long! (less than 64 chars)', $vars['cmd']));
     }
     // 文字コード変換
     // <form> で送信された文字 (ブラウザがエンコードしたデータ) のコードを変換
     // POST method は常に form 経由なので、必ず変換する
     if (isset($vars['encode_hint']) && !empty($vars['encode_hint'])) {
         // do_plugin_xxx() の中で、<form> に encode_hint を仕込んでいるので、
         // encode_hint を用いてコード検出する。
         // 全体を見てコード検出すると、機種依存文字や、妙なバイナリ
         // コードが混入した場合に、コード検出に失敗する恐れがある。
         $encode = mb_detect_encoding($vars['encode_hint']);
         mb_convert_variables(SOURCE_ENCODING, $encode, $vars);
     } else {
         // 全部まとめて、自動検出/変換
         mb_convert_variables(SOURCE_ENCODING, 'auto', $vars);
     }
     // 環境変数のチェック
     self::checkEnv($request->getEnv());
     switch ($method) {
         case Request::METHOD_POST:
             self::spamCheck($vars['cmd']);
             break;
         case Request::METHOD_OPTIONS:
         case Request::METHOD_PROPFIND:
         case Request::METHOD_DELETE:
         case 'MOVE':
         case 'COPY':
         case 'PROPPATCH':
         case 'MKCOL':
         case 'LOCK':
         case 'UNLOCK':
             // WebDAV
             $matches = array();
             foreach (self::$ua_dav as $pattern) {
                 if (preg_match('/' . $pattern . '/', $log_ua, $matches)) {
                     PluginRenderer::executePluginAction('dav');
                     exit;
                 }
             }
             break;
     }
     return $vars;
 }
コード例 #4
0
ファイル: controller.php プロジェクト: kbokdia/DemoProject
//Do validation if required
do {
    $authHeader = $request->getHeader('authorization');
    if (!$authHeader) {
        $validate = false;
        $response = Response::createMessage("01");
        break;
    }
    $acmeRequest = new \Project\mediator\Request($configPath);
    $acmeRequest->authorize($authHeader);
    if (!$acmeRequest->isAuthorized) {
        $validate = false;
        $response = $acmeRequest->getResponse();
        break;
    }
    $requestMethod = $request->getMethod();
    /*
     * Types (Whenever new types are defined update this comment too)
     * AE => Add event
     * DE => Delete event
     * GE => Get Events
     * UE => Update Events
     * LI => Logged in status
     */
    switch (strtoupper($requestMethod)) {
        case 'AE':
            //validation
            //Todo-Ambuj Perform validation like check for name
            //if(empty($_POST['EventName']) || empty($_POST['EventDesc']) || empty($_POST['EventDate']) || empty($_POST['EventTime']) || empty($_POST['EventLocation']) || empty($_POST['EventDressCode'])) {
            $body = $request->getContent();
            if (!$body) {
コード例 #5
0
ファイル: Profiler.php プロジェクト: t4web/profiler
 /**
  * @return array
  */
 public function toArray()
 {
     return ['method' => $this->request->getMethod(), 'uri' => $this->request->getUriString(), 'responseCode' => $this->response->getStatusCode(), 'execution_time' => $this->endTime - $_SERVER['REQUEST_TIME_FLOAT'], 'timers' => $this->timersReport];
 }