Ejemplo n.º 1
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if ($request->format() == 'json') {
         return $next($request);
     } else {
         abort(403, 'Wrong Accept Header');
     }
 }
Ejemplo n.º 2
0
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index(Request $request)
 {
     $topics = Topic::orderBy('status', 'asc')->orderBy('sorter', 'desc')->get();
     if ($request->format() != 'html') {
         return $topics;
     } else {
         return view('topic.index', ['topics' => $topics]);
     }
 }
Ejemplo n.º 3
0
 public function show(Request $request)
 {
     $page = Router::getActivePage();
     $format = $request->format();
     if ($request->route() && $request->route()->getParameter('format')) {
         $format = $request->route()->getParameter('format');
     }
     $method = 'as' . ucfirst($format);
     if (method_exists($this, $method)) {
         return $this->{$method}($page);
     }
     abort(406);
 }
 /**
  * Check the Request before running it through the router.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response|null
  */
 public function onBefore($request)
 {
     $keys = $this->app['config']->get('api-inspector');
     App::bind('Pusher', function ($app) {
         $keys = $this->app['config']->get('api-inspector');
         return new \Pusher($keys['public'], $keys['secret'], $keys['app_id']);
     });
     if ($keys['active'] == false) {
         return;
     }
     App::make('Pusher')->trigger('apiChannel', 'apiCall', ['method' => $request->method(), 'root' => $request->root(), 'url' => $request->url(), 'path' => $request->path(), 'ajax' => $request->ajax(), 'ip' => $request->ip(), 'input' => $request->all(), 'is-json' => $request->isJson(), 'format' => $request->format(), 'session' => json_encode($request->session()), 'header' => $request->header(), 'input-json' => json_encode($request->json()), 'wants-json' => $request->wantsJson()]);
     return;
 }
Ejemplo n.º 5
0
 /**
  * 以客户端需求自动转换响应格式
  *
  * @param array       $data
  * @param string      $message
  * @param int         $code
  * @param null|string $format
  *
  * @return Response
  */
 public function make($data = array(), $message = '', $code = 0, $format = null)
 {
     !empty($data) && $this->setData($data);
     !empty($message) && $this->setMessage($message);
     $code && $this->setCode($code);
     !empty($format) && $this->setFormat($format);
     switch ($this->getFormat() ?: $this->request->format()) {
         case 'xml':
             return $this->response->make($this->toXML())->header('Content-Type', 'application/xml');
             break;
         case 'html':
             return $this->response->make($this->getMessage());
             break;
         case 'jsonp':
             $this->response->setCallback($this->getCallback());
         case 'json':
         default:
             return $this->response->json($this->toArray());
             break;
     }
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function omdbUpdate($id)
 {
     if (Request::format() == 'json') {
     }
     $rev = Movie::find($id);
     $rev->fl_dir_ar_id = Input::get('info.Director');
     $rev->fl_writer = Input::get('info.Writer');
     //$rev->fl_stars          = Input::get('info.Actors');
     $rev->fl_outline = Input::get('info.Plot');
     $rev->fl_genre = Input::get('info.Genre');
     $rev->fl_duration = Input::get('info.Runtime');
     $rev->fl_country = Input::get('info.Country');
     $rev->fl_imdbID = Input::get('info.imdbID');
     $rev->fl_imdbRating = Input::get('info.imdbRating');
     $rev->fl_imdbVotes = Input::get('info.imdbVotes');
     $rev->fl_metascore = Input::get('info.Metascore');
     $rev->fl_tomatoConsensus = Input::get('info.tomatoConsensus');
     $rev->fl_tomatoMeter = Input::get('info.tomatoMeter');
     $rev->fl_tomatoUserMeter = Input::get('info.tomatoUserMeter');
     $rev->save();
 }
Ejemplo n.º 7
0
 /**
  * Modify the response and inject the debugbar (or data in headers)
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Symfony\Component\HttpFoundation\Response  $response
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function modifyResponse($request, $response)
 {
     $app = $this->app;
     if ($app->runningInConsole() or !$this->isEnabled() || $this->isDebugbarRequest()) {
         return $response;
     }
     if ($this->shouldCollect('config', false)) {
         try {
             $configCollector = new ConfigCollector();
             $configCollector->setData($app['config']->getItems());
             $this->addCollector($configCollector);
         } catch (\Exception $e) {
             $this->addException(new Exception('Cannot add ConfigCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
         }
     }
     /** @var \Illuminate\Session\SessionManager $sessionManager */
     $sessionManager = $app['session'];
     $httpDriver = new SymfonyHttpDriver($sessionManager, $response);
     $this->setHttpDriver($httpDriver);
     if ($this->shouldCollect('symfony_request', true) and !$this->hasCollector('request')) {
         try {
             $this->addCollector(new SymfonyRequestCollector($request, $response, $sessionManager));
         } catch (\Exception $e) {
             $this->addException(new Exception('Cannot add SymfonyRequestCollector to Laravel Debugbar: ' . $e->getMessage(), $e->getCode(), $e));
         }
     }
     if ($response->isRedirection()) {
         try {
             $this->stackData();
         } catch (\Exception $e) {
             $app['log']->error('Debugbar exception: ' . $e->getMessage());
         }
     } elseif ($request->isXmlHttpRequest() || $request->wantsJson() and $app['config']->get('laravel-debugbar::config.capture_ajax', true)) {
         try {
             $this->sendDataInHeaders(true);
         } catch (\Exception $e) {
             $app['log']->error('Debugbar exception: ' . $e->getMessage());
         }
     } elseif ($response->headers->has('Content-Type') && false === strpos($response->headers->get('Content-Type'), 'html') || 'html' !== $request->format()) {
         //Do nothing
     } elseif ($app['config']->get('laravel-debugbar::config.inject', true)) {
         try {
             $this->injectDebugbar($response);
         } catch (\Exception $e) {
             $app['log']->error('Debugbar exception: ' . $e->getMessage());
         }
     }
     // Stop further rendering (on subrequests etc)
     $this->disable();
     return $response;
 }
Ejemplo n.º 8
0
 /**
  * Get the data format expected in the response.
  *
  * @param string $default
  * @return string 
  * @static 
  */
 public static function format($default = 'html')
 {
     return \Illuminate\Http\Request::format($default);
 }
Ejemplo n.º 9
0
 /**
  * Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.
  * Xpressengine 은 Register Container 로 등록된 Renderer 를 사용한다.
  *
  * @return RendererInterface
  */
 protected function get()
 {
     $format = $this->request->format();
     if (isset($this->presentables[$format]) === false) {
         throw new NotFoundFormatException(['name' => $format]);
     }
     if ($format == HtmlPresenter::format() && $this->api === true && $this->html === false) {
         $format = JsonPresenter::format();
     }
     $presenter = $this->getPresenter($format);
     if (is_subclass_of($presenter, RendererInterface::class) === false && is_subclass_of($presenter, Presentable::class) === false) {
         throw new InvalidPresenterException(['name' => get_class($presenter)]);
     }
     return $presenter;
 }
Ejemplo n.º 10
0
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, $productId)
 {
     // Check the request format
     if ('json' !== $request->format()) {
         $this->response['status'] = 'fail';
         $this->response['messages'][] = 'Unknown request format';
     } else {
         $data = $request->json()->all();
         // Check whether the data is empty
         if (!empty($data)) {
             $validator = $this->validator($data);
             // Check whether the data is valid
             if (false === $validator->fails()) {
                 // Check whether the data able to be saved to database
                 if ($this->model->update($productId, $data)) {
                     $this->response['status'] = 'success';
                     $this->response['messages'][0] = 'none';
                 } else {
                     $this->response['status'] = 'fail';
                     $this->response['messages'][0] = 'Failed to save to database';
                 }
             } else {
                 $this->response['status'] = 'fail';
                 $this->response['messages'] = $validator->errors()->all();
             }
         } else {
             $this->response['status'] = 'fail';
             $this->response['messages'][0] = "Can't parse the data";
         }
     }
     return response($this->response)->header('Content-Type:', 'json');
 }
Ejemplo n.º 11
0
 /**
  * Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.
  * Xpressengine 은 Register Container 로 등록된 Renderer 를 사용한다.
  *
  * @return RendererInterface
  */
 protected function get()
 {
     // is ajax call ? remove theme, skin html tags
     // $this->request->ajax();
     $format = $this->request->format();
     if ($this->isApproveFormat($format) === false) {
         throw new Exceptions\NotApprovedFormatException();
     }
     if (isset($this->renderes[$format]) === false) {
         throw new Exceptions\NotFoundFormatException();
     }
     $callback = $this->renderes[$format];
     $renderer = call_user_func_array($callback, [$this]);
     if (is_subclass_of($renderer, 'Xpressengine\\Presenter\\RendererInterface') === false) {
         throw new Exceptions\InvalidRendererException();
     }
     return $renderer;
 }
Ejemplo n.º 12
0
 /**
  * Get the expected format type.
  *
  * @return string
  */
 public function format($default = 'html')
 {
     $this->parseAcceptHeader();
     return $this->accept['format'] ?: parent::format($default);
 }
Ejemplo n.º 13
0
 /**
  * Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.
  * Xpressengine 은 Register Container 로 등록된 Renderer 를 사용한다.
  *
  * @return RendererInterface
  */
 protected function get()
 {
     // is ajax call ? remove theme, skin html tags
     // $this->request->ajax();
     $format = $this->request->format();
     if ($this->isApproveFormat($format) === false) {
         throw new NotApprovedFormatException(['name' => $format]);
     }
     if (isset($this->renderers[$format]) === false) {
         throw new NotFoundFormatException(['name' => $format]);
     }
     $renderer = $this->getRenderer($format);
     if (is_subclass_of($renderer, 'Xpressengine\\Presenter\\RendererInterface') === false) {
         throw new InvalidRendererException(['name' => get_class($renderer)]);
     }
     return $renderer;
 }
Ejemplo n.º 14
0
 /**
  * Modify the laravel response, if needed, to add the toolbar.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Illuminate\Http\Response $response
  *
  * @return \Illuminate\Http\Response
  * @return mixed
  */
 public function modifyResponse($request, $response)
 {
     $app = $this->app;
     if ($app->runningInConsole() || $request->isXmlHttpRequest() || $request->wantsJson()) {
         return $response;
     } elseif ($response->headers->has('Content-Type') && strpos($response->headers->get('Content-Type'), 'html') === false || 'html' !== $request->format()) {
         return $response;
     } elseif (!$response instanceof Response) {
         return $response;
     }
     $this->injectToolbar($response);
     return $response;
 }