public static function uploadFile($access_token, $uploadFile, $fileName, $config)
 {
     if (!isset($access_token)) {
         return array('status' => 'error', 'msg' => 'refreshToken', 'url' => self::auth(\HttpReceiver\HttpReceiver::get('userId', 'int'), $config));
     }
     if (!file_exists($uploadFile)) {
         return array('status' => 'error', 'fileNotExist');
     }
     $dbxClient = new dbx\Client($access_token, "PHP-Example/1.0");
     $f = fopen($uploadFile, "rb");
     try {
         if (!isset($fileName) || strlen($fileName) == 0 || $fileName == '0') {
             $tmp = explode('/', $uploadFile);
             $fileName = $tmp[sizeof($tmp) - 1];
         } else {
             $fileName .= '.pdf';
         }
         $result = $dbxClient->uploadFile("/" . $config['SAVE_FOLDER'] . "/" . $fileName, dbx\WriteMode::add(), $f);
     } catch (Exception $e) {
         return array('status' => 'error', 'msg' => 'refreshToken', 'url' => self::auth(\HttpReceiver\HttpReceiver::get('userId', 'int'), $config));
     }
     fclose($f);
     if (!isset($result) || !isset($result['size'])) {
         return array('status' => 'error', 'msg' => 'refreshToken');
     } else {
         return array('status' => 'ok');
     }
 }
 public static function auth($type, $code, $config)
 {
     if ($code == 'code') {
         switch ($type) {
             case 0:
                 $data = \HttpReceiver\HttpReceiver::get('userId', 'int');
                 return \UploadModels\DropBoxModel::auth($data, $config);
                 break;
             case 1:
                 $data = \HttpReceiver\HttpReceiver::get('userId', 'int');
                 return \UploadModels\GoogleDriveModel::auth($data, $config);
                 break;
             case 2:
                 $data = \HttpReceiver\HttpReceiver::get('userId', 'int');
                 return \UploadModels\BoxModel::auth($data, $config);
                 break;
             case 3:
                 $data = \HttpReceiver\HttpReceiver::get('userId', 'int');
                 return \UploadModels\OneDriveModel::auth($data, $config);
                 break;
         }
     } elseif ($code == 'access_token') {
         $result = self::getToken($type, $config);
         $data = array('service' => $type, 'token_data' => $result);
         return $data;
     }
 }
 private static function getGoogleClient($config)
 {
     $client = new \Google_Client();
     $config = self::getGoogleConfig($config);
     $client->setAuthConfigFile($config);
     $userId = \HttpReceiver\HttpReceiver::get('userId', 'int');
     if (!isset($userId)) {
         $userId = \HttpReceiver\HttpReceiver::get('state', 'int');
     }
     $client->setRedirectUri($config['GOOGLEDRIVE_REDIRECT2']);
     $client->addScope(\Google_Service_Drive::DRIVE);
     return $client;
 }
 public static function getToken($config)
 {
     $array = array();
     $driveData = new \stdClass();
     $driveData->redirect_uri = $config['ONEDRIVE_CALLBACK_URI'];
     $driveData->token = '';
     $array['onedrive.client.state'] = $driveData;
     $client = self::getOneDriveClient($config, $array);
     $code = \HttpReceiver\HttpReceiver::get('code', 'string');
     $client->obtainAccessToken($config['ONEDRIVE_CLIENT_SECRET'], $code);
     $info = $client->getState();
     $access_token = json_encode($info->token, JSON_UNESCAPED_SLASHES);
     return $access_token;
 }
 public static function getToken($config)
 {
     $box = self::getBox($config);
     $url = $box->token_url;
     if (!empty($box->refresh_token)) {
         $params = array('grant_type' => 'refresh_token', 'refresh_token' => $box->refresh_token, 'client_id' => $box->client_id, 'client_secret' => $box->client_secret);
     } else {
         $params = array('grant_type' => 'authorization_code', 'code' => \HttpReceiver\HttpReceiver::get('code', 'string'), 'client_id' => $box->client_id, 'client_secret' => $box->client_secret);
     }
     $data = json_decode($box->post($url, $params), true);
     if (isset($data['error'])) {
         return '';
     }
     return $data['access_token'];
 }