/** * @param string $relation * @param array $parameters * @throws ServiceUnavailableHttpException * @return Navigator|mixed */ public function command($relation, array $parameters = [], $files = []) { $templatedUrl = $this->getRelation($relation); // expand template url + remove templated params from parameters $url = $this->renderUri($templatedUrl, $parameters); $templatedParameters = $this->uriTemplater->extract($templatedUrl, $url); $parameters = array_diff_key($parameters, $templatedParameters); try { $headers = []; if (!$files) { $headers = ['Content-Type' => 'application/json']; $parameters = json_encode($parameters); } $request = $this->guzzleClient->post($url, $headers, $parameters); $request->addPostFiles($files); $command = $this->guzzleClient->send($request); } catch (ClientErrorResponseException $e) { throw $e; } switch ($command->getContentType()) { case 'application/hal+json': $response = new Navigator($command->json()); break; case 'application/json': $response = $command->json(); break; default: $response = $command->getBody(true); break; } return $response; }
/** * Created by PhpStorm. * User: WhiteBlue * Date: 15/7/8 * Time: 下午10:11 */ function fetch() { $client = new Client(); $request = new Request('GET', 'http://api.bilibili.cn/index'); $response = $client->send($request, ['timeout' => 2]); $json = json_decode($response->getBody()); $count = 0; foreach ($json as $type => $value) { $sort = Sort::where('type', '=', $type)->first(); if ($sort != null) { foreach ($value as $id => $content) { if (is_object($content)) { if (Save::where('aid', '=', $content->aid)->first() == null) { $save = new Save(); $save->aid = $content->aid; $save->title = $content->title; if (strlen($content->description) > 70) { $save->content = mb_substr($content->description, 0, 70, 'utf-8') . '....'; } else { $save->content = $content->description; } $save->href = 'http://www.bilibili.com/video/AV' . $content->aid; $save->img = $content->pic; $sort->saves()->save($save); $count++; $sort->update = date('Y:m:d'); $sort->save(); } } } } } event(new UpdateEvent()); return $count; }
/** * @param EntityEnclosingRequest|EntityEnclosingRequest[] * @return array|\Guzzle\Http\Message\Response * @throws \Exception * @throws \Guzzle\Common\Exception\ExceptionCollection * @throws mixed */ public function send($requests) { if ( is_array($requests) && count($requests) > 1 ) { \eZDebug::writeError( 'Should not receive multiple guzzle requests', __CLASS__.'::'.__METHOD__ ); return parent::send($requests); } /* @var $request EntityEnclosingRequest */ $request = is_array($requests) ? $requests[0] : $requests; if ( $request->getMethod() !== 'POST' ) { \eZDebug::writeNotice( 'Not POST method used ('.$request->getMethod().'). Falling back to default Guzzle behaviour' ); return parent::send($requests); } return GuzzleCurlHelper::sendRequest( $request ); }
/** * {@inheritdoc} * @throws \Aws\Common\Exception\TransferException */ public function send($requests) { try { return parent::send($requests); } catch (CurlException $e) { $wrapped = new TransferException($e->getMessage(), null, $e); $wrapped->setCurlHandle($e->getCurlHandle())->setCurlInfo($e->getCurlInfo())->setError($e->getError(), $e->getErrorNo())->setRequest($e->getRequest()); throw $wrapped; } }