public function testReceiveSignalRequestLogger()
 {
     $result = 'phpunit_' . mt_rand();
     $response = new Response();
     $response->create(200, $result);
     $this->mockTest->receiveSignalRequestLogger("http://notexistdomain.com", null, 'GET', $response);
     $this->assertEquals($result, $this->mockTest->responseRawResult);
 }
Example #2
0
 public function submit()
 {
     if ($this->validateAction()) {
         $comments = $this->request->request('comments');
         $comments = is_string($comments) ? trim($comments) : '';
         if ($comments === '' && $this->app->make('config')->get('concrete.misc.require_version_comments')) {
             return Response::create(t('Please specify the version comments'), 400);
         }
         $c = $this->page;
         $u = new User();
         $v = CollectionVersion::get($c, "RECENT");
         $v->setComment($_REQUEST['comments']);
         $pr = new PageEditResponse();
         if (($this->request->request->get('action') == 'publish' || $this->request->request->get('action') == 'schedule') && $this->permissions->canApprovePageVersions()) {
             $e = $this->checkForPublishing();
             $pr->setError($e);
             if (!$e->has()) {
                 $pkr = new ApprovePagePageWorkflowRequest();
                 $pkr->setRequestedPage($c);
                 $pkr->setRequestedVersionID($v->getVersionID());
                 $pkr->setRequesterUserID($u->getUserID());
                 $u->unloadCollectionEdit($c);
                 if ($this->request->request->get('action') == 'schedule') {
                     $dateTime = new DateTime();
                     $publishDateTime = $dateTime->translate('check-in-scheduler');
                     $pkr->scheduleVersion($publishDateTime);
                 }
                 if ($c->isPageDraft()) {
                     $pagetype = $c->getPageTypeObject();
                     $pagetype->publish($c, $pkr);
                 } else {
                     $pkr->trigger();
                 }
             }
         } else {
             if ($this->request->request->get('action') == 'discard') {
                 if ($c->isPageDraft() && $this->permissions->canDeletePage()) {
                     $u = new User();
                     $cID = $u->getPreviousFrontendPageID();
                     $this->page->delete();
                     $pr->setRedirectURL(DIR_REL . '/' . DISPATCHER_FILENAME . '?cID=' . $cID);
                     $pr->outputJSON();
                 } else {
                     if ($v->canDiscard()) {
                         $v->discard();
                     }
                 }
             } else {
                 $v->removeNewStatus();
             }
         }
         $nc = Page::getByID($c->getCollectionID(), $v->getVersionID());
         $u->unloadCollectionEdit();
         $pr->setRedirectURL(Loader::helper('navigation')->getLinkToCollection($nc, true));
         $pr->outputJSON();
     }
 }
Example #3
0
 /**
  * @param HttpException $e
  * @return Response
  */
 protected function renderHttpException(HttpException $e)
 {
     $status = $e->getStatusCode();
     $template = Config::get('http_exception_template');
     if (!\Norma\App::$debug && !empty($template[$status])) {
         return Response::create($template[$status], 'view', $status)->assign(['e' => $e]);
     } else {
         return $this->convertExceptionToResponse($e);
     }
 }
Example #4
0
 public function testCreateWithHttpErrorCode()
 {
     $code = 403;
     $rawResult = 'OK';
     $response = new Response();
     $response->create($code, $rawResult);
     $this->assertFalse($response->isOk());
     $this->assertEquals($rawResult, $response->getRawResult());
     $error = $response->getError();
     $this->assertEquals('HTTP_CODE_ERROR', $error);
 }
 public function register($app)
 {
     /**
      * Error handler
      */
     $whoops = new \Whoops\Run();
     if (getenv('MODE') === 'dev') {
         $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
     } else {
         $whoops->pushHandler(function () {
             Response::create('Something broke', Response::HTTP_INTERNAL_SERVER_ERROR)->send();
         });
     }
     $whoops->register();
 }
Example #6
0
 /**
  * @param string $title
  * @param string $error
  * @param bool|\Exception $exception
  */
 public function renderError($title, $error, $exception = false)
 {
     $o = new stdClass();
     $o->title = $title;
     $o->content = $error;
     if ($exception) {
         $o->content .= $exception->getTraceAsString();
     }
     \Response::closeOutputBuffers(1, false);
     $ve = new ErrorView($o);
     \Response::create($ve->render($o))->send();
 }
Example #7
0
            $input['comments'] = 0;
        }
        if (empty($input['html'])) {
            $input['status'] = 'draft';
        }
        $post = Post::create($input);
        Extend::process('post', $post->id);
        Notify::success(__('posts.created'));
        return Response::redirect('admin/posts');
    });
    /*
    	Preview post
    */
    Route::post('admin/posts/preview', function () {
        $html = Input::get('html');
        // apply markdown processing
        $md = new Markdown();
        $output = Json::encode(array('html' => $md->transform($html)));
        return Response::create($output, 200, array('content-type' => 'application/json'));
    });
    /*
    	Delete post
    */
    Route::get('admin/posts/delete/(:num)', function ($id) {
        Post::find($id)->delete();
        Comment::where('post', '=', $id)->delete();
        Query::table(Base::table('post_meta'))->where('post', '=', $id)->delete();
        Notify::success(__('posts.deleted'));
        return Response::redirect('admin/posts');
    });
});
        return Response::create(new Template('404'), 404);
    }
    // search templating vars
    Registry::set('page', $page);
    Registry::set('page_offset', $offset);
    Registry::set('search_term', $term);
    Registry::set('search_results', new Items($posts));
    Registry::set('total_posts', $total);
    return new Template('search');
});
Route::post('search', function () {
    // search and save search ID
    $term = filter_var(Input::get('term', ''), FILTER_SANITIZE_STRING);
    // replace spaces with double-dash to pass through url
    $term = str_replace(' ', '--', $term);
    Session::put(slug($term), $term);
    return Response::redirect('search/' . slug($term));
});
/**
 * View pages
 */
Route::get('(:all)', function ($uri) {
    if (!($page = Page::slug($slug = basename($uri)))) {
        return Response::create(new Template('404'), 404);
    }
    if ($page->redirect) {
        return Response::redirect($page->redirect);
    }
    Registry::set('page', $page);
    return new Template('page');
});
Example #9
0
 /**
  * Execute the resource, that is, find the correct resource method to call
  * based upon the request and then call it.
  *
  * @return Tonic\Response
  */
 public function exec()
 {
     $this->setup();
     // get the annotation metadata for this resource
     $resourceMetadata = $this->app->getResourceMetadata($this);
     $methodPriorities = $this->calculateMethodPriorities($resourceMetadata);
     $methodName = null;
     $bestMatch = -2;
     foreach ($methodPriorities as $name => $priority) {
         if ($priority['value'] > $bestMatch) {
             $bestMatch = $priority['value'];
             $methodName = $name;
         }
     }
     if (!$methodName) {
         throw new Exception('No method matches request method');
     } elseif (isset($methodPriorities[$methodName]['response'])) {
         $response = Response::create($methodPriorities[$methodName]['response']);
     } elseif (isset($methodPriorities[$methodName]['exception'])) {
         throw $methodPriorities[$methodName]['exception'];
     } else {
         foreach (array('*', $methodName) as $mn) {
             if (isset($this->before[$mn])) {
                 foreach ($this->before[$mn] as $action) {
                     call_user_func($action, $this->request, $mn);
                 }
             }
         }
         $response = Response::create(call_user_func_array(array($this, $methodName), $this->params));
         foreach (array('*', $methodName) as $mn) {
             if (isset($this->after[$mn])) {
                 foreach ($this->after[$mn] as $action) {
                     call_user_func($action, $response, $mn);
                 }
             }
         }
     }
     return $response;
 }
Example #10
0
 /**
  * 读取或者设置缓存
  * @access public
  * @param string $key 缓存标识,支持变量规则 ,例如 item/:name/:id
  * @param mixed  $expire 缓存有效期
  * @return mixed
  */
 public function cache($key, $expire = null)
 {
     if (false !== strpos($key, ':')) {
         $param = $this->param();
         foreach ($param as $item => $val) {
             if (is_string($val) && false !== strpos($key, ':' . $item)) {
                 $key = str_replace(':' . $item, $val, $key);
             }
         }
     }
     if (Cache::has($key)) {
         // 读取缓存
         $content = Cache::get($key);
         $response = Response::create($content)->code(304)->header('Content-Type', Cache::get($key . '_header'));
         throw new \think\exception\HttpResponseException($response);
     } else {
         $this->cache = array($key, $expire);
     }
 }
Example #11
0
 /**
  * 原始发送请求
  * @param string $url 完整URL
  * @param string|array $bodyParam body请求体。$requestMethod为POST时有效
  * @param string $requestMethod 请求方法,必须全大写
  * @param Response $response
  * @return Response $response
  */
 public function rawSend($url, $bodyParam = null, $requestMethod = 'GET', Response $response = null)
 {
     if (null === $response) {
         $response = new Response();
     }
     if (null === $this->curlInit) {
         $this->curlInit = curl_init();
     }
     $curlOpt = $this->getDefaultCurlOpt();
     $curlOpt[CURLOPT_URL] = $url;
     if ($requestMethod == 'POST') {
         $curlOpt[CURLOPT_POST] = true;
     }
     $curlOpt[CURLOPT_CUSTOMREQUEST] = $requestMethod;
     if ($requestMethod == 'POST' || $requestMethod == 'PUT') {
         if (is_array($bodyParam)) {
             if (!$this->rawSendCheckHasFile($bodyParam)) {
                 $bodyParam = http_build_query($bodyParam);
             } else {
                 $bodyParam = $this->rawSendBuildCleanUploadBody($bodyParam);
             }
         }
         if ($bodyParam !== null && $bodyParam !== "") {
             $curlOpt[CURLOPT_POSTFIELDS] = $bodyParam;
         } else {
             $curlOpt[CURLOPT_POSTFIELDS] = "";
         }
     }
     curl_setopt_array($this->curlInit, $curlOpt);
     $rawResult = curl_exec($this->curlInit);
     $curlInfo = curl_getinfo($this->curlInit);
     $curl_errno = curl_errno($this->curlInit);
     if ($curl_errno) {
         $response->setError("CURL_ERROR", curl_error($this->curlInit) . '[ErrCode ' . $curl_errno . ']');
     } else {
         $response->create($curlInfo['http_code'], $rawResult);
     }
     $response->setExtractInfo($curlInfo);
     if (!empty($this->requestLoggerStack)) {
         $this->dispatchRequestLogger($url, isset($curlOpt[CURLOPT_POSTFIELDS]) ? $curlOpt[CURLOPT_POSTFIELDS] : null, $requestMethod, $response);
     }
     return $response;
 }
 */
include "./admin/include/common.php";
$r_id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
$exists = Ad::exists($r_id, array("active" => 1));
if ($exists) {
    $ad = Ad::get_one($r_id);
    if (isset($_POST['send']) && User::is_logged_in()) {
        $success = true;
        $errors = array();
        $p_message = strip_tags($_POST['message']);
        if ($p_message == '') {
            $success = false;
            array_push($errors, "Please enter your message.");
        }
        if ($p_message != '' && !preg_match('/^[\\s\\S]{0,500}$/u', $p_message)) {
            $success = false;
            array_push($errors, "The message must be no more than 500 character long.");
        }
        if ($success) {
            $userid = USER::get_id();
            $username = USER::get_name();
            $adid = $r_id;
            $response = $p_message;
            Response::create(array('ad_id' => $adid, 'user_id' => $userid, 'message' => $response));
            $content = StaticContent::get_content('ad-response-email');
            eval("\$content = \"{$content}\";");
            mail($ad['email'], 'Response to your ad', $content, "From: " . $noreply);
        }
    }
}
include "./templates/ad-respond.php";
 function addResponse($vars, &$errors)
 {
     $vars['ticketId'] = $this->getTicketId();
     $vars['userId'] = 0;
     return Response::create($vars, $errors);
 }
Example #14
0
 function addResponse($vars, &$errors)
 {
     $vars['ticketId'] = $this->getTicketId();
     // DELME: When HTML / rich-text is supported
     $vars['title'] = Format::htmlchars($vars['title']);
     $vars['response'] = Format::htmlchars($vars['response']);
     return Response::create($vars, $errors);
 }
Example #15
0
    case 'GET':
        $request->parameters = $_GET;
        break;
    case 'POST':
        $request->parameters = $_POST;
        break;
    case 'PUT':
        parse_str(file_get_contents('php://input'), $request->parameters);
        break;
}
/**
 * Route the request.
 */
if (!empty($request->url_elements)) {
    $controller_name = ucfirst($request->url_elements[0]) . 'Controller';
    if (class_exists($controller_name)) {
        $controller = new $controller_name();
        $action_name = strtolower($request->method);
        $response_str = call_user_func_array(array($controller, $action_name), array($request));
    } else {
        header('HTTP/1.1 404 Not Found');
        $response_str = 'Unknown request: ' . $request->url_elements[0];
    }
} else {
    $response_str = 'Unknown request';
}
/**
 * Send the response to the client.
 */
$response_obj = Response::create($response_str, $_SERVER['HTTP_ACCEPT']);
echo $response_obj->render();
Example #16
0
 /**
  * 执行应用
  * @static
  * @access public
  */
 public static function listen(Request $request = null, $type = 'web')
 {
     is_null($request) && ($request = Request::instance());
     //请求筛选
     \Norma\Hook::trigger('request_action', [$request]);
     //加载应用独立文件
     if (\Norma\Config::has('extra_config_list')) {
         $extra_config_list = \Norma\Config::get('extra_config_list');
         if (is_string($extra_config_list)) {
             $extra_config_list = explode(',', $extra_config_list);
         }
         foreach ($extra_config_list as $key => $file) {
             \Norma\Config::load(APP_PATH . '/Config/' . $file . '.php');
         }
     }
     // 设置系统时区
     date_default_timezone_set(\Norma\Config::get('default_timezone'));
     // 应用调试模式
     self::$debug = Config::get('app_debug');
     if (!self::$debug) {
         ini_set('display_errors', 'Off');
     } else {
         //重新申请一块比较大的buffer
         if (ob_get_level() > 0) {
             $output = ob_get_clean();
         }
         ob_start();
         if (!empty($output)) {
             echo $output;
         }
     }
     // 注册应用实现类名称空间
     \Norma\App::$loader->addNamespace(\Norma\Config::get('app_namespace') ?: "App", APP_PATH);
     // 加载插件
     \Norma\Hook::loadPlugin(APP_PATH . '/Plugin', \Norma\Config::get('app_namespace'));
     // 开启多语言机制
     if (\Norma\Config::get('lang_switch_on')) {
         // 获取当前语言
         $request->langset(Lang::detect());
         // 加载系统语言包
         Lang::load(FRAME_PATH . '/Ability/Lang' . DIRECTORY_SEPARATOR . $request->langset() . '.php');
         if (!\Norma\Config::get('app_multi_module')) {
             Lang::load(APP_PATH . '/Lang' . DIRECTORY_SEPARATOR . $request->langset() . '.php');
         }
     }
     // 获取应用调度信息
     $dispatch = self::$dispatch;
     if (empty($dispatch)) {
         // 进行URL路由检测
         $dispatch = self::routeCheck($request, \Norma\Config::get());
     }
     // 记录当前调度信息
     $request->dispatch($dispatch);
     // 记录路由信息
     //self::$debug && Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info');
     // 监听app_begin
     //Hook::listen('app_begin', $dispatch);
     switch ($dispatch['type']) {
         case 'redirect':
             // 执行重定向跳转
             $data = Response::create($dispatch['url'], 'redirect')->code($dispatch['status']);
             break;
         case 'module':
             // 模块/控制器/操作
             $data = self::module($dispatch['module'], \Norma\Config::get(), isset($dispatch['convert']) ? $dispatch['convert'] : null);
             break;
         case 'controller':
             // 执行控制器操作
             $data = Loader::action($dispatch['controller'], $dispatch['params']);
             break;
         case 'method':
             // 执行回调方法
             $data = self::invokeMethod($dispatch['method'], $dispatch['params']);
             break;
         case 'function':
             // 执行闭包
             $data = self::invokeFunction($dispatch['function'], $dispatch['params']);
             break;
         case 'response':
             $data = $dispatch['response'];
             break;
         default:
             throw new \InvalidArgumentException('dispatch type not support');
     }
     // 输出数据到客户端
     if ($data instanceof Response) {
         $response = $data;
     } elseif (!is_null($data)) {
         // 默认自动识别响应输出类型
         $isAjax = $request->isAjax();
         $type = $isAjax ? Config::get('default_ajax_return') : Config::get('default_return_type');
         \Norma\Hook::trigger('output', [$data, $type]);
     } else {
         \Norma\Hook::trigger('output');
     }
     //
     //return $response;
 }