Пример #1
0
 /**
  * La méthode très simple qui envoie à la vue d'affichage
  * d'un film toutes les données correspondantes au film.
  * @param $id L'id du film à afficher
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function show($id)
 {
     /*Le tout début est une petite astuce qui permet d'obtenir l'url réel d'une vidéo.
       En effet, dans la base de données, les url des vidéos sont des liens de redirection vers un lien
       (qui j'imagine doit être temporaire) réel de la vidéo
       Si l'on donne l'url de redirection au lecteur vidéo, tout marche bien SAUF si l'on souhaite avancer plus loin dans
       la vidéo (et uniquement sur les vidéos de plus de 10 min environ).
       L'astuce consiste donc à faire une requête via curl sur le lien pour obtenir le vrai url de la vidéo (qui
       lui marche sans soucis) ! */
     $curl = new cURL();
     $movie = Movies::find($id);
     $movie->ogv = $curl->get($movie->ogv)->getHeader('location');
     $topics = $movie->topics;
     // Le if qui suit est une personnalisation des recommandations pour les utilisateurs connectés
     if (Auth::guest()) {
         // SI l'utilisateur est un guest (non enregistré) on lui suggére des films du même auteur aléatoirement
         $suggestions = Movies::where('creator', 'LIKE', $movie->creator)->where('title', 'not like', $movie->title)->orderByRaw('RAND()')->take(5)->get();
     } else {
         $currentId = Auth::id();
         // On ajoute un à count pour chaque topic du film
         foreach ($topics as $topic) {
             $truc = UsersTopics::firstOrCreate(['user_id' => $currentId, 'topic_id' => $topic->id]);
             $truc->where('topic_id', '=', $topic->id)->increment('count', 1);
         }
         // On renvoie une liste de films qui sont parmis les genres préférés
         $maxTopic = User::find($currentId)->topics()->max('count');
         $suggestions = User::find($currentId)->topics()->where('count', $maxTopic)->first()->movies()->where('title', 'not like', $movie->title)->orderByRaw('RAND()')->take(5)->get();
     }
     return view('movies', compact('movie', 'topics', 'suggestions'));
 }
Пример #2
0
 public function setUnlocked($lockId)
 {
     $requestUrl = $this->baseURL . "/api/smartapps/installations/" . $this->smartthings->getEndpoint() . "/lock/";
     $requestUrl .= $lockId;
     $curl = new \anlutro\cURL\cURL();
     $result = $curl->newJsonRequest('PUT', $requestUrl, array('command' => 'unlock'))->setHeader('content-type', 'application/json')->setHeader('Accept', 'json')->setHeader('Authorization', 'Bearer ' . $this->smartthings->getAccessToken())->setOptions([CURLOPT_VERBOSE => true])->send();
     return $this;
 }
Пример #3
0
 public function getOTP(Request $request, $mail)
 {
     if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
         $key = $request->headers->get('pub-key');
         $app = \App\Aplication::where('public_key', $key)->get();
         //return var_dump($app[0]->id);
         if (isset($app[0])) {
             $client = \App\Client::where('email', $mail)->get();
             if (isset($client[0])) {
                 $list = ['libertad', 'patria', 'soberano', 'independencia', 'avanzadora', 'chavez', 'cimarron', 'cacao'];
                 $code = $list[rand(0, count($list) - 1)] . rand(100, 999);
                 /* Solicitar envio de SMS */
                 $curl = new cURL();
                 $params = array('telf' => $client[0]->phone, 'texto' => 'Hemos eviado una clave de acceso temporal para la aplicación: ' . $app[0]->name . ' Su clave temporal OTP es: ' . $code, 'app_name' => 'ssas');
                 $url = $curl->buildUrl('http://desarrollo.ssas.gob.ve/rest/SMS', $params);
                 $curl->get($url);
                 /* Solicitar envio de Correo */
                 $email = $client[0]->email;
                 \Mail::send('otp_mail', ['aplication' => $app[0]->name, 'otp' => $code], function ($message) use($email) {
                     $message->from('*****@*****.**', 'Aplicaciones SIAS');
                     $message->to($email);
                     $message->subject('Clave de Acceso Temporal');
                 });
                 /* Encriptamos el otp con clave privada */
                 $encrypt = crypt($code, $app[0]->private_key);
                 /* Almacenamos OTP */
                 $otp = new Otp();
                 $otp->code = $encrypt;
                 $otp->status = 'D';
                 $otp->clients_id = $client[0]->id;
                 $otp->aplication_id = $app[0]->id;
                 $otp->save();
                 return array('crypt' => $encrypt);
             } else {
                 return response()->json(['error' => 'no autorizado'], 401);
             }
         } else {
             return response()->json(['error' => 'no autorizado'], 401);
         }
     } else {
         return response()->json(['error' => 'no autorizado'], 401);
     }
 }
Пример #4
0
 /**
  * @param $responseClass
  * @return BasicResponse
  * @throws TooManyRequestsException
  * @throws \Exception
  */
 public function make($responseClass = BasicResponse::class)
 {
     $connection = $this->getConnection();
     $curl = new cURL();
     $url = $curl->buildUrl($connection->getApiEntryPoint() . $this->getMethod() . '.' . $this->getFormat(), $this->getParameters());
     if ($connection->isCached($url)) {
         return $connection->getCached($url);
     }
     try {
         /** @var Request $request */
         $request = $curl->newRequest('get', $url)->setOption(CURLOPT_CONNECTTIMEOUT, static::CONNECTION_TIMEOUT)->setOption(CURLOPT_TIMEOUT, static::REQUEST_TIMEOUT)->setOption(CURLOPT_SSL_VERIFYPEER, static::SSL_VERIFICATION);
         $response = new $responseClass($request->send(), $this);
         $this->resetRetriesCount();
     } catch (TooManyRequestsException $e) {
         if (!$this->canRetry()) {
             throw $e;
         }
         $this->prepareRetry();
         return $this->make($responseClass);
     }
     return $connection->setCached($url, $response);
 }
Пример #5
0
 public function postSendsms(Request $request)
 {
     $mobile = Input::get('mobile');
     if (!preg_match("/1[3458]{1}\\d{9}\$/", $mobile)) {
         // if(!preg_match("/^13\d{9}$|^14\d{9}$|^15\d{9}$|^17\d{9}$|^18\d{9}$/",$mobile)){
         //手机号码格式不对
         return parent::returnJson(1, "手机号码格式不对" . $mobile);
     }
     if ($request->get("type") == "register") {
         $data = DB::select("select * from members where lifestatus=1 and mobile =" . $mobile);
         if (sizeof($data) > 0) {
             return parent::returnJson(1, "手机号已注册");
         }
     } else {
         if ($request->get("type") == "forget") {
             $userInput = $request->get('captcha');
             Log::error('checkcaptcha:session:' . Session::get('milkcaptcha') . "getcode:" . $userInput);
             if (Session::get('milkcaptcha') == $userInput) {
                 //用户输入验证码正确return '您输入验证码正确';
             } else {
                 return parent::returnJson(1, "验证码错误");
             }
         }
     }
     $checkCode = parent::get_code(6, 1);
     Session::put("m" . $mobile, $checkCode);
     $checkCode = Session::get("m" . $mobile);
     Log::error("sendsms:session:" . $checkCode);
     $msg = "尊敬的用户:" . $checkCode . "是您本次的短信验证码,5分钟内有效.";
     // Input::get('msg');
     $curl = new cURL();
     $serverUrl = "http://cf.lmobile.cn/submitdata/Service.asmx/g_Submit";
     $response = $curl->get($serverUrl . "?sname=dlrmcf58&spwd=ZRB2aP8K&scorpid=&sprdid=1012818&sdst=" . $mobile . "&smsg=" . rawurlencode($msg . "【投贷宝】"));
     $xml = simplexml_load_string($response);
     echo json_encode($xml);
     //$xml->State;
     //  <CSubmitState xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
     //   <State>0</State>
     //   <MsgID>1512191953407413801</MsgID>
     //   <MsgState>提交成功</MsgState>
     //   <Reserve>0</Reserve>
     // </CSubmitState>
 }
Пример #6
0
 private function _request($url, $method = 'POST', $parameters = [])
 {
     if ($url[0] != '/') {
         throw new ApiConnectorException('Your service url must begin with slash.');
     }
     $response = null;
     $curl = new cURL();
     $token = $this->generateToken($parameters);
     $parameters['__token'] = $token;
     foreach ($this->files as $file) {
         $parameters[$file->getPostFilename()] = $file;
     }
     $return = null;
     $url = $this->ApiServer->getEndpointUrl() . $url;
     //$url = 'http://teste.local/index.php';
     /*if(in_array($method, ['POST', 'PUT'])) {
                 $req = curl_init($url);
                 curl_setopt($req, CURLOPT_POST, 1);
                 curl_setopt($req, CURLOPT_FOLLOWLOCATION, 1);
                 curl_setopt($req, CURLOPT_URL, $url);
                 curl_setopt($req, CURLOPT_RETURNTRANSFER, 1);
     
                 if(count($this->files) > 0) {
                     //curl_setopt($req, CURLOPT_UPLOAD, 1);
                     //curl_setopt($req, CURLOPT_UPLOAD, 1);
                     //$request->setOption(CURLOPT_SAFE_UPLOAD, true);
                     curl_setopt($req, CURLOPT_HTTPHEADER, ['Content-type: multipart/form-data']);
     
                 }
                 //dd($url, $parameters);
     
     
                 curl_setopt($req, CURLOPT_POSTFIELDS, http_build_query($parameters));
     
                 $retorno = curl_exec($req);
                 dd('aki', $retorno, 'arquivo existe??', file_exists($this->files[0]->getFilename()), $this->files[0]->getFilename());
                 $retorno = $this->translate($retorno);
                 return $retorno;
     
             }*/
     $request = $curl->newRequest($method, $url, $parameters);
     /*if(count($this->files) > 0) {
           $request->setOption(CURLOPT_UPLOAD, true);
           $request->setOption(CURLOPT_SAFE_UPLOAD, true);
       }*/
     $request->setHeader('X-Requested-With', 'XMLHttpRequest');
     if (class_exists('Illuminate\\Support\\Facades\\Config')) {
         $request->setHeader('language', \Illuminate\Support\Facades\Config::get('app.locale'));
     }
     $request->setOption(CURLOPT_FOLLOWLOCATION, 1);
     if ($method == 'GET' || $method == 'DELETE') {
         $parameters['__token'] = $token;
         $iurl = $curl->buildUrl($url, $parameters);
         $request->setUrl($iurl);
     }
     if (in_array($method, ['DELETE', 'PUT'])) {
         $parameters['_method'] = $method;
         $method = 'POST';
     }
     try {
         if (count($this->files) > 0) {
             $novo = [];
             $this->http_build_query_for_curl($parameters, $novo);
             foreach ($this->files as $file) {
                 $novo[$file->getPostFilename()] = $file;
             }
             $curl->setDefaultOptions([CURLOPT_HEADER => ['Content-type: multipart/form-data']]);
             switch ($method) {
                 case 'POST':
                     $return = $curl->rawPost($url, $novo);
                     break;
                 case 'PUT':
                     $url = $curl->buildUrl($url, $novo);
                     //Seria um problema do verbo put? Ter que passar parametros via get por não suportar uma payload assim como o POST....
                     $return = $curl->rawPut($url, $novo);
                     break;
             }
         } else {
             $return = $request->send();
         }
         //$return = $request->send();
     } catch (\Exception $err) {
         throw new \Exception('Falha ao conectar. Url completa: ' . $url . ' | token: ' . $parameters['__token'] . ' exception: ' . $err->getMessage());
     }
     try {
         $ret = $this->translate($return->body);
         $ret->response = $return;
         return $ret;
     } catch (\Exception $e) {
         return $return->body;
     }
 }
Пример #7
0
 /**
  * 发起请求
  * @param $uri
  * @param string $method
  * @param array $data
  * @return mixed
  * @throws NotSupportedException
  */
 private function _request($uri, $method = 'get', array $data = [])
 {
     $curl = new cURL();
     $url = $this->_createUrl($uri);
     $request = $curl->newRequest($method, $url, $data);
     $response = $this->_createHttpHeader($request)->send();
     // todo: 记录接口日志
     return $response;
 }