public static function sum($filename) { $fhandler = fopen($filename, 'r'); $err = error_get_last(); if ($err !== null) { return array(null, $err); } $fstat = fstat($fhandler); $fsize = $fstat['size']; if ($fsize == 0) { fclose($fhandler); return array('Fto5o-5ea0sNMlW_75VgGJCv2AcJ', null); } $blockCnt = self::blockCount($fsize); $sha1Buf = array(); if ($blockCnt <= 1) { array_push($sha1Buf, 0x16); $fdata = fread($fhandler, Config::BLOCK_SIZE); if ($err !== null) { fclose($fhandler); return array(null, $err); } list($sha1Code, ) = calSha1($fdata); $sha1Buf = array_merge($sha1Buf, $sha1Code); } else { array_push($sha1Buf, 0x96); $sha1BlockBuf = array(); for ($i = 0; $i < $blockCnt; $i++) { $fdata = fread($fhandler, Config::BLOCK_SIZE); list($sha1Code, $err) = self::calcSha1($fdata); if ($err !== null) { fclose($fhandler); return array(null, $err); } $sha1BlockBuf = array_merge($sha1BlockBuf, $sha1Code); } $tmpData = self::packArray('C*', $sha1BlockBuf); list($sha1Final, ) = self::calcSha1($tmpData); $sha1Buf = array_merge($sha1Buf, $sha1Final); } $etag = Functions::base64_urlSafeEncode(self::packArray('C*', $sha1Buf)); return array($etag, null); }
public static function putFile($upToken, $key, $filePath, $config, $params, $mime, $checkCrc) { $fields = array('token' => $upToken, 'file' => self::createFile($filePath, $mime)); if ($key === null) { $fname = 'filename'; } else { $fname = $key; $fields['key'] = $key; } if ($checkCrc) { $fields['crc32'] = Functions::crc32_file($filePath); } if ($params) { foreach ($params as $k => $v) { $fields[$k] = $v; } } $headers = array('Content-Type' => 'multipart/form-data'); $response = client::post($config->getUpHost(), $fields, $headers); if (!$response->ok()) { return array(null, new Error($config->getUpHost(), $response)); } return array($response->json(), null); }
private static function twoKeyBatch($operation, $source_bucket, $key_pairs, $target_bucket) { if ($target_bucket === null) { $target_bucket = $source_bucket; } $data = array(); foreach ($key_pairs as $from_key => $to_key) { $from = Functions::entry($source_bucket, $from_key); $to = Functions::entry($target_bucket, $to_key); array_push($data, $operation . '/' . $from . '/' . $to); } return $data; }
public function signWithData($data) { $data = Functions::base64_urlSafeEncode($data); return $this->sign($data) . ':' . $data; }
private static function bodyJson($body, array $config = array()) { return Functions::json_decode((string) $body, array_key_exists('object', $config) ? !$config['object'] : true, 512, array_key_exists('big_int_strings', $config) ? JSON_BIGINT_AS_STRING : 0); }
private function fileUrl() { $url = $this->host . '/mkfile/' . $this->size; $url .= '/mimeType/' . Functions::base64_urlSafeEncode($this->mime); if ($this->key != null) { $url .= '/key/' . Functions::base64_urlSafeEncode($this->key); } if (!empty($this->params)) { foreach ($this->params as $key => $value) { $val = Functions::base64_urlSafeEncode($value); $url .= "/{$key}/{$val}"; } } return $url; }