diff --git a/build.cmd b/build.cmd index 5c604bdae..bfc3d5480 100644 --- a/build.cmd +++ b/build.cmd @@ -1,4 +1,3 @@ @echo off -@rmdir /s/q vendor thinkphp -composer update --profile --prefer-dist --optimize-autoloader -composer dump-autoload --optimize +@rmdir /s/q vendor +composer update --profile --prefer-dist --no-dev --optimize-autoloader \ No newline at end of file diff --git a/composer.json b/composer.json index a29311e1f..357929f04 100644 --- a/composer.json +++ b/composer.json @@ -22,11 +22,5 @@ "zoujingli/ip2region": "^1.0", "zoujingli/think-library": "5.1.*-dev", "zoujingli/weopen-developer": "dev-master" - }, - "repositories": { - "packagist": { - "type": "composer", - "url": "https://mirrors.aliyun.com/composer" - } } } diff --git a/thinkphp/composer.json b/thinkphp/composer.json index cc4fca912..33477b1d7 100644 --- a/thinkphp/composer.json +++ b/thinkphp/composer.json @@ -26,7 +26,7 @@ "require-dev": { "phpunit/phpunit": "^5.0|^6.0", "johnkary/phpunit-speedtrap": "^1.0", - "mikey179/vfsStream": "~1.6", + "mikey179/vfsstream": "~1.6", "phploc/phploc": "2.*", "sebastian/phpcpd": "2.*", "squizlabs/php_codesniffer": "2.*", diff --git a/thinkphp/library/think/App.php b/thinkphp/library/think/App.php index 7766555eb..5cd55a8b7 100644 --- a/thinkphp/library/think/App.php +++ b/thinkphp/library/think/App.php @@ -20,7 +20,7 @@ use think\route\Dispatch; */ class App extends Container { - const VERSION = '5.1.38 LTS'; + const VERSION = '5.1.39 LTS'; /** * 当前模块路径 diff --git a/thinkphp/library/think/Model.php b/thinkphp/library/think/Model.php index 65e543d9f..93be3dc01 100644 --- a/thinkphp/library/think/Model.php +++ b/thinkphp/library/think/Model.php @@ -780,12 +780,19 @@ abstract class Model implements \JsonSerializable, \ArrayAccess // 删除条件 $pk = $this->getPk(); + $where = []; if (is_string($pk) && isset($this->data[$pk])) { $where[] = [$pk, '=', $this->data[$pk]]; - } elseif (!empty($this->updateWhere)) { - $where = $this->updateWhere; - } else { - $where = null; + } elseif (is_array($pk)) { + foreach ($pk as $field) { + if (isset($this->data[$field])) { + $where[] = [$field, '=', $this->data[$field]]; + } + } + } + + if (empty($where)) { + $where = empty($this->updateWhere) ? null : $this->updateWhere; } return $where; diff --git a/thinkphp/library/think/Request.php b/thinkphp/library/think/Request.php index e0488e77f..92a401d73 100644 --- a/thinkphp/library/think/Request.php +++ b/thinkphp/library/think/Request.php @@ -1044,7 +1044,7 @@ class Request protected function getInputData($content) { - if ($this->isJson()) { + if (false !== strpos($this->contentType(), 'json')) { return (array) json_decode($content, true); } elseif (strpos($content, '=')) { parse_str($content, $data); @@ -1643,10 +1643,7 @@ class Request */ public function isJson() { - $contentType = $this->contentType(); - $acceptType = $this->type(); - - return false !== strpos($contentType, 'json') || false !== strpos($acceptType, 'json'); + return false !== strpos($this->type(), 'json'); } /** diff --git a/thinkphp/library/think/Url.php b/thinkphp/library/think/Url.php index cccabc222..acd510aa6 100644 --- a/thinkphp/library/think/Url.php +++ b/thinkphp/library/think/Url.php @@ -349,6 +349,7 @@ class Url // 匹配路由地址 public function getRuleUrl($rule, &$vars = [], $allowDomain = '') { + $port = $this->app['request']->port(); foreach ($rule as $item) { list($url, $pattern, $domain, $suffix, $method) = $item; @@ -356,8 +357,8 @@ class Url continue; } - if (!in_array($this->app['request']->port(), [80, 443])) { - $domain .= ':' . $this->app['request']->port(); + if ($port && !in_array($port, [80, 443])) { + $domain .= ':' . $port; } if (empty($pattern)) { @@ -365,11 +366,12 @@ class Url } $type = $this->config['url_common_param']; + $keys = []; foreach ($pattern as $key => $val) { if (isset($vars[$key])) { - $url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key, '<' . $key . '>'], $type ? $vars[$key] : urlencode($vars[$key]), $url); - unset($vars[$key]); + $url = str_replace(['[:' . $key . ']', '<' . $key . '?>', ':' . $key, '<' . $key . '>'], $type ? $vars[$key] : urlencode($vars[$key]), $url); + $keys[] = $key; $url = str_replace(['/?', '-?'], ['/', '-'], $url); $result = [rtrim($url, '?/-'), $domain, $suffix]; } elseif (2 == $val) { @@ -377,10 +379,14 @@ class Url $url = str_replace(['/?', '-?'], ['/', '-'], $url); $result = [rtrim($url, '?/-'), $domain, $suffix]; } else { + $result = null; + $keys = []; break; } } + $vars = array_diff_key($vars, array_flip($keys)); + if (isset($result)) { return $result; } diff --git a/thinkphp/library/think/Validate.php b/thinkphp/library/think/Validate.php index d4f6d236f..f58d7a88d 100644 --- a/thinkphp/library/think/Validate.php +++ b/thinkphp/library/think/Validate.php @@ -570,7 +570,7 @@ class Validate $result = str_replace(':attribute', $title, $result); if (strpos($result, ':rule') && is_scalar($rule)) { - $msg = str_replace(':rule', (string) $rule, $result); + $result = str_replace(':rule', (string) $rule, $result); } } @@ -934,8 +934,8 @@ class Validate if (isset($rule[2])) { $imageType = strtolower($rule[2]); - if ('jpeg' == $imageType) { - $imageType = 'jpg'; + if ('jpg' == $imageType) { + $imageType = 'jpeg'; } if (image_type_to_extension($type, false) != $imageType) { diff --git a/thinkphp/library/think/cache/driver/File.php b/thinkphp/library/think/cache/driver/File.php index 93d321f23..60be08db4 100644 --- a/thinkphp/library/think/cache/driver/File.php +++ b/thinkphp/library/think/cache/driver/File.php @@ -278,11 +278,13 @@ class File extends Driver if (is_dir($path)) { $matches = glob($path . DIRECTORY_SEPARATOR . '*.php'); if (is_array($matches)) { - array_map('unlink', $matches); + array_map(function ($v) { + $this->unlink($v); + }, $matches); } rmdir($path); } else { - unlink($path); + $this->unlink($path); } } diff --git a/thinkphp/library/think/cache/driver/Memcached.php b/thinkphp/library/think/cache/driver/Memcached.php index 6af60d19b..4533e78ac 100644 --- a/thinkphp/library/think/cache/driver/Memcached.php +++ b/thinkphp/library/think/cache/driver/Memcached.php @@ -67,7 +67,7 @@ class Memcached extends Driver } $this->handler->addServers($servers); - + $this->handler->setOption(\Memcached::OPT_COMPRESSION, false); if ('' != $this->options['username']) { $this->handler->setOption(\Memcached::OPT_BINARY_PROTOCOL, true); $this->handler->setSaslAuthData($this->options['username'], $this->options['password']); @@ -232,7 +232,7 @@ class Memcached extends Driver $this->handler->delete($tagName); } - if (!$this->handler->has($tagName)) { + if (!$this->has($tagName)) { $this->handler->set($tagName, ''); } @@ -255,7 +255,7 @@ class Memcached extends Driver if ($this->tag) { $tagName = $this->getTagKey($this->tag); - if ($this->handler->has($tagName)) { + if ($this->has($tagName)) { $this->handler->append($tagName, ',' . $name); } else { $this->handler->set($tagName, $name); diff --git a/thinkphp/library/think/db/Builder.php b/thinkphp/library/think/db/Builder.php index 09df1a072..a0faada87 100644 --- a/thinkphp/library/think/db/Builder.php +++ b/thinkphp/library/think/db/Builder.php @@ -313,9 +313,10 @@ abstract class Builder // 使用闭包查询 $newQuery = $query->newQuery()->setConnection($this->connection); $value($newQuery); - $whereClause = $this->buildWhere($query, $newQuery->getOptions('where')); + $whereClause = $this->buildWhere($newQuery, $newQuery->getOptions('where')); if (!empty($whereClause)) { + $query->bind($newQuery->getBind(false)); $str[] = ' ' . $logic . ' ( ' . $whereClause . ' )'; } } elseif (is_array($field)) { diff --git a/thinkphp/library/think/db/Query.php b/thinkphp/library/think/db/Query.php index 4d6329099..0c3df8995 100644 --- a/thinkphp/library/think/db/Query.php +++ b/thinkphp/library/think/db/Query.php @@ -133,7 +133,27 @@ class Query */ public function newQuery() { - return new static($this->connection); + $query = new static($this->connection); + + if ($this->model) { + $query->model($this->model); + } + + if (isset($this->options['table'])) { + $query->table($this->options['table']); + } else { + $query->name($this->name); + } + + if (isset($this->options['json'])) { + $query->json($this->options['json'], $this->options['json_assoc']); + } + + if (isset($this->options['field_type'])) { + $query->setJsonFieldType($this->options['field_type']); + } + + return $query; } /** @@ -562,12 +582,12 @@ class Query default: if (function_exists($type)) { // 支持指定函数哈希 - $seq = (ord(substr($type($value), 0, 1)) % $rule['num']) + 1; - } else { - // 按照字段的首字母的值分表 - $seq = (ord($value{0}) % $rule['num']) + 1; + $value = $type($value); } + + $seq = (ord(substr($value, 0, 1)) % $rule['num']) + 1; } + return $this->getTable() . '_' . $seq; } // 当设置的分表字段不在查询条件或者数据中 @@ -2470,7 +2490,7 @@ class Query if (is_array($value)) { $this->bind = array_merge($this->bind, $value); } else { - $name = $name ?: 'ThinkBind_' . (count($this->bind) + 1) . '_'; + $name = $name ?: 'ThinkBind_' . (count($this->bind) + 1) . '_' . mt_rand() . '_'; $this->bind[$name] = [$value, $type]; return $name; diff --git a/thinkphp/library/think/db/builder/Mysql.php b/thinkphp/library/think/db/builder/Mysql.php index c715aa34f..af364dff0 100644 --- a/thinkphp/library/think/db/builder/Mysql.php +++ b/thinkphp/library/think/db/builder/Mysql.php @@ -62,7 +62,7 @@ class Mysql extends Builder $bind = $this->connection->getFieldsBind($options['table']); foreach ($dataSet as $k => $data) { - $data = $this->parseData($query, $data, $allowFields, $bind, '_' . $k); + $data = $this->parseData($query, $data, $allowFields, $bind); $values[] = '( ' . implode(',', array_values($data)) . ' )'; diff --git a/thinkphp/library/think/model/relation/BelongsTo.php b/thinkphp/library/think/model/relation/BelongsTo.php index 1dea3b3b5..056c7d766 100644 --- a/thinkphp/library/think/model/relation/BelongsTo.php +++ b/thinkphp/library/think/model/relation/BelongsTo.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\Loader; use think\Model; @@ -49,7 +50,7 @@ class BelongsTo extends OneToOne */ public function getRelation($subRelation = '', $closure = null) { - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -79,7 +80,7 @@ class BelongsTo extends OneToOne */ public function getRelationCountQuery($closure, $aggregate = 'count', $field = '*', &$aggregateAlias = '') { - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -111,7 +112,7 @@ class BelongsTo extends OneToOne return 0; } - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { diff --git a/thinkphp/library/think/model/relation/BelongsToMany.php b/thinkphp/library/think/model/relation/BelongsToMany.php index 54df68b0c..2d64f683c 100644 --- a/thinkphp/library/think/model/relation/BelongsToMany.php +++ b/thinkphp/library/think/model/relation/BelongsToMany.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\Collection; use think\db\Query; use think\Exception; @@ -166,7 +167,7 @@ class BelongsToMany extends Relation */ public function getRelation($subRelation = '', $closure = null) { - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -377,7 +378,7 @@ class BelongsToMany extends Relation $pk = $result->$pk; - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -401,7 +402,7 @@ class BelongsToMany extends Relation */ public function getRelationCountQuery($closure, $aggregate = 'count', $field = '*', &$aggregateAlias = '') { - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -428,7 +429,7 @@ class BelongsToMany extends Relation protected function eagerlyManyToMany($where, $relation, $subRelation = '', $closure = null) { // 预载入关联查询 支持嵌套预载入 - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } diff --git a/thinkphp/library/think/model/relation/HasMany.php b/thinkphp/library/think/model/relation/HasMany.php index 728ca1818..e4df5c4b4 100644 --- a/thinkphp/library/think/model/relation/HasMany.php +++ b/thinkphp/library/think/model/relation/HasMany.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\db\Query; use think\Loader; use think\Model; @@ -48,7 +49,7 @@ class HasMany extends Relation */ public function getRelation($subRelation = '', $closure = null) { - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -163,7 +164,7 @@ class HasMany extends Relation return 0; } - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { $name = $return; @@ -186,7 +187,7 @@ class HasMany extends Relation */ public function getRelationCountQuery($closure, $aggregate = 'count', $field = '*', &$aggregateAlias = '') { - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -216,7 +217,7 @@ class HasMany extends Relation $this->query->removeWhereField($this->foreignKey); // 预载入关联查询 支持嵌套预载入 - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } diff --git a/thinkphp/library/think/model/relation/HasManyThrough.php b/thinkphp/library/think/model/relation/HasManyThrough.php index c048eb911..6e39f2ad5 100644 --- a/thinkphp/library/think/model/relation/HasManyThrough.php +++ b/thinkphp/library/think/model/relation/HasManyThrough.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\db\Query; use think\Loader; use think\Model; @@ -60,7 +61,7 @@ class HasManyThrough extends Relation */ public function getRelation($subRelation = '', $closure = null) { - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -143,11 +144,11 @@ class HasManyThrough extends Relation * @access protected * @param array $resultSet 数据集 * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 + * @param mixed $subRelation 子关联名 * @param Closure $closure 闭包 * @return void */ - public function eagerlyResultSet(array &$resultSet, $relation, array $subRelation = [], $closure = null) + public function eagerlyResultSet(array &$resultSet, $relation, $subRelation = '', $closure = null) { $localKey = $this->localKey; $foreignKey = $this->foreignKey; @@ -192,11 +193,11 @@ class HasManyThrough extends Relation * @access protected * @param Model $result 数据对象 * @param string $relation 当前关联名 - * @param array $subRelation 子关联名 + * @param mixed $subRelation 子关联名 * @param Closure $closure 闭包 * @return void */ - public function eagerlyResult($result, $relation, array $subRelation = [], $closure = null) + public function eagerlyResult($result, $relation, $subRelation = '', $closure = null) { $localKey = $this->localKey; $foreignKey = $this->foreignKey; @@ -226,17 +227,17 @@ class HasManyThrough extends Relation * @param array $where 关联预查询条件 * @param string $key 关联键名 * @param string $relation 关联名 - * @param array $subRelation 子关联 + * @param mixed $subRelation 子关联 * @param Closure $closure * @return array */ - protected function eagerlyWhere(array $where, $key, $relation, array $subRelation = [], $closure = null) + protected function eagerlyWhere(array $where, $key, $relation, $subRelation = '', $closure = null) { // 预载入关联查询 支持嵌套预载入 $throughList = $this->through->where($where)->select(); $keys = $throughList->column($this->throughPk, $this->throughPk); - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -271,7 +272,7 @@ class HasManyThrough extends Relation return 0; } - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { $name = $return; @@ -307,7 +308,7 @@ class HasManyThrough extends Relation */ public function getRelationCountQuery($closure = null, $aggregate = 'count', $field = '*', &$name = null) { - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { $name = $return; diff --git a/thinkphp/library/think/model/relation/HasOne.php b/thinkphp/library/think/model/relation/HasOne.php index 7d582a142..e036bba4e 100644 --- a/thinkphp/library/think/model/relation/HasOne.php +++ b/thinkphp/library/think/model/relation/HasOne.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\db\Query; use think\Loader; use think\Model; @@ -50,7 +51,7 @@ class HasOne extends OneToOne { $localKey = $this->localKey; - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -79,7 +80,7 @@ class HasOne extends OneToOne */ public function getRelationCountQuery($closure, $aggregate = 'count', $field = '*', &$aggregateAlias = '') { - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -111,7 +112,7 @@ class HasOne extends OneToOne return 0; } - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { $name = $return; diff --git a/thinkphp/library/think/model/relation/MorphMany.php b/thinkphp/library/think/model/relation/MorphMany.php index a1f54889b..d2af66e9b 100644 --- a/thinkphp/library/think/model/relation/MorphMany.php +++ b/thinkphp/library/think/model/relation/MorphMany.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\db\Query; use think\Exception; use think\Loader; @@ -53,7 +54,7 @@ class MorphMany extends Relation */ public function getRelation($subRelation = '', $closure = null) { - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -197,7 +198,7 @@ class MorphMany extends Relation return 0; } - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -224,7 +225,7 @@ class MorphMany extends Relation */ public function getRelationCountQuery($closure, $aggregate = 'count', $field = '*', &$aggregateAlias = '') { - if ($closure) { + if ($closure instanceof Closure) { $return = $closure($this->query); if ($return && is_string($return)) { @@ -253,7 +254,7 @@ class MorphMany extends Relation // 预载入关联查询 支持嵌套预载入 $this->query->removeOption('where'); - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } diff --git a/thinkphp/library/think/model/relation/MorphOne.php b/thinkphp/library/think/model/relation/MorphOne.php index 775b2dfd7..6bc205c5b 100644 --- a/thinkphp/library/think/model/relation/MorphOne.php +++ b/thinkphp/library/think/model/relation/MorphOne.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\db\Query; use think\Exception; use think\Loader; @@ -53,7 +54,7 @@ class MorphOne extends Relation */ public function getRelation($subRelation = '', $closure = null) { - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } @@ -186,7 +187,7 @@ class MorphOne extends Relation protected function eagerlyMorphToOne($where, $relation, $subRelation = '', $closure = null) { // 预载入关联查询 支持嵌套预载入 - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); } diff --git a/thinkphp/library/think/model/relation/MorphTo.php b/thinkphp/library/think/model/relation/MorphTo.php index 6da6a0252..17771ce86 100644 --- a/thinkphp/library/think/model/relation/MorphTo.php +++ b/thinkphp/library/think/model/relation/MorphTo.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\Exception; use think\Loader; use think\Model; diff --git a/thinkphp/library/think/model/relation/OneToOne.php b/thinkphp/library/think/model/relation/OneToOne.php index 59fce77fb..a0333c863 100644 --- a/thinkphp/library/think/model/relation/OneToOne.php +++ b/thinkphp/library/think/model/relation/OneToOne.php @@ -11,6 +11,7 @@ namespace think\model\relation; +use Closure; use think\db\Query; use think\Exception; use think\Loader; @@ -87,7 +88,7 @@ abstract class OneToOne extends Relation $joinOn = $name . '.' . $this->localKey . '=' . $joinAlias . '.' . $this->foreignKey; } - if ($closure) { + if ($closure instanceof Closure) { // 执行闭包查询 $closure($query); // 使用withField指定获取关联的字段,如 @@ -311,7 +312,7 @@ abstract class OneToOne extends Relation protected function eagerlyWhere($where, $key, $relation, $subRelation = '', $closure = null) { // 预载入关联查询 支持嵌套预载入 - if ($closure) { + if ($closure instanceof Closure) { $closure($this->query); if ($field = $this->query->getOptions('with_field')) { diff --git a/thinkphp/library/think/route/dispatch/Url.php b/thinkphp/library/think/route/dispatch/Url.php index 00dc8cca3..acc524e3e 100644 --- a/thinkphp/library/think/route/dispatch/Url.php +++ b/thinkphp/library/think/route/dispatch/Url.php @@ -60,7 +60,7 @@ class Url extends Dispatch $controller = !empty($path) ? array_shift($path) : null; } - if ($controller && !preg_match('/^[A-Za-z][\w|\.]*$/', $controller)) { + if ($controller && !preg_match('/^[A-Za-z0-9][\w|\.]*$/', $controller)) { throw new HttpException(404, 'controller not exists:' . $controller); } diff --git a/thinkphp/library/think/session/driver/Redis.php b/thinkphp/library/think/session/driver/Redis.php index 646700bd6..5a0e7bc73 100644 --- a/thinkphp/library/think/session/driver/Redis.php +++ b/thinkphp/library/think/session/driver/Redis.php @@ -124,7 +124,7 @@ class Redis implements SessionHandlerInterface */ public function destroy($sessID) { - return $this->handler->delete($this->config['session_name'] . $sessID) > 0; + return $this->handler->del($this->config['session_name'] . $sessID) > 0; } /** diff --git a/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md b/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md index 042a72a0b..d349d907b 100644 --- a/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md +++ b/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md @@ -1,39 +1,44 @@ # ChangeLog - Aliyun OSS SDK for PHP +## v2.3.1 / 2019-011-15 + +* translate chinese comments into english +* Added: endpoint validity check + ## v2.3.0 / 2018-01-05 -* 修复:putObject支持创建空文件 -* 修复:createBucket支持IA/Archive -* 增加:支持restoreObject -* 增加:支持Symlink功能 -* 增加:支持getBucketLocation -* 增加:支持getBucketMeta -* 增加:支持代理服务器Proxy +* Fixed: putObject support creating empty files +* Fixed: createBucket support IA/Archive +* Added: support restoreObject +* Added: support the Symlink feature +* Added: support getBucketLocation +* Added: support getBucketMeta +* Added: support proxy server Proxy ## v2.2.4 / 2017-04-25 -* fix getObject to local file bug +* Fixed getObject to local file bug ## v2.2.3 / 2017-04-14 -* fix md5 check +* Fixed md5 check ## v2.2.2 / 2017-01-18 -* 解决在php7上运行连接数和内存bug +* Resolve to run the connection number and memory bug on php7 ## v2.2.1 / 2016-12-01 -* 禁止http curl自动填充Accept-Encoding +* No HTTP curl is allowed to automatically populate accept-encoding ## v2.2.0 / 2016-11-22 -* 修复PutObject/CompleteMultipartUpload的返回值问题(#26) +* Fixed PutObject/CompleteMultipartUpload return values(#26) ## v2.1.0 / 2016-11-12 -* 增加[RTMP](https://help.aliyun.com/document_detail/44297.html)接口 -* 增加支持[图片服务](https://help.aliyun.com/document_detail/44686.html) +* Added[RTMP](https://help.aliyun.com/document_detail/44297.html)interface +* Add support[image service](https://help.aliyun.com/document_detail/44686.html) ## v2.0.7 / 2016-06-17 @@ -46,47 +51,47 @@ ## v2.0.5 -* 增加Add/Delete/Get BucketCname接口 +* Added Add/Delete/Get BucketCname interface ## v2.0.4 -* 增加Put/Get Object Acl接口 +* Added Put/Get Object Acl interface ## v2.0.3 -* 修复Util中的常量定义在低于5.6的PHP版本中报错的问题 +* Fixing the constants in Util is defined in a PHP version that is less than 5.6. ## v2.0.2 -* 修复multipart上传时无法指定Content-Type的问题 +* The problem of content-type cannot be specified when restoring multipart uploads ## v2.0.1 -* 增加对ListObjects/ListMultipartUploads时特殊字符的处理 -* 提供接口获取OssException中的详细信息 +* Increase the ListObjects/ListMultipartUploads special characters +* Provides the interface to get the details of the OssException ## 2015.11.25 -* **大版本升级,不再兼容以前接口,新版本对易用性做了很大的改进,建议用户迁移到新版本。** +* **Large version upgrade, no longer compatible with previous interface, new version has made great improvements to ease of use, suggesting that users migrate to a new version.** -## 修改内容 +## Modify the content -* 不再支持PHP 5.2版本 +* PHP 5.2 is no longer supported -### 新增内容 +### Add the cotent -* 引入命名空间 -* 接口命名修正,采用驼峰式命名 -* 接口入参修改,把常用参数从Options参数中提出来 -* 接口返回结果修改,对返回结果进行处理,用户可以直接得到容易处理的数据结构  -* OssClient的构造函数变更 -* 支持CNAME和IP格式的Endpoint地址 -* 重新整理sample文件组织结构,使用function组织功能点 -* 增加设置连接超时,请求超时的接口 -* 去掉Object Group相关的已经过时的接口 -* OssException中的message改为英文 +* Introduce namespace +* Interface naming and modification, using hump naming +* The interface is modified, and the common parameters are extracted from the Options parameter. +* The interface returns the result modification, processing the return result, and the user can directly get the data structure easily processed  +* OssClient's constructor changes +* The Endpoint address that support CNAME and IP formats +* Rearrange the sample file organization structure and use function to organize the function points +* Add an interface that sets the connection timeout and requests timeout +* Remove the outdated interface associated with the Object Group +* The message in the OssException is changed to English -### 问题修复 +### Repair problem -* object名称校验不完备 +* The object name is not complete diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php b/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php index bd16e6556..7dc50b894 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php @@ -8,28 +8,28 @@ $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); $bucket = Common::getBucketName(); -//******************************* 简单使用 **************************************************************** +//******************************* Simple Usage**************************************************************** -//创建bucket +// Create a bucket $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); Common::println("bucket $bucket created"); -// 判断Bucket是否存在 +// Check whether a bucket exists $doesExist = $ossClient->doesBucketExist($bucket); Common::println("bucket $bucket exist? " . ($doesExist ? "yes" : "no")); -// 获取Bucket列表 +// Get the bucket list $bucketListInfo = $ossClient->listBuckets(); -// 设置bucket的ACL +// Set bucket ACL $ossClient->putBucketAcl($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); Common::println("bucket $bucket acl put"); -// 获取bucket的ACL +// Get bucket ACL $acl = $ossClient->getBucketAcl($bucket); Common::println("bucket $bucket acl get: " . $acl); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** createBucket($ossClient, $bucket); doesBucketExist($ossClient, $bucket); @@ -39,13 +39,13 @@ getBucketAcl($ossClient, $bucket); listBuckets($ossClient); /** - * 创建一个存储空间 - * acl 指的是bucket的访问控制权限,有三种,私有读写,公共读私有写,公共读写。 - * 私有读写就是只有bucket的拥有者或授权用户才有权限操作 - * 三种权限分别对应 (OssClient::OSS_ACL_TYPE_PRIVATE,OssClient::OSS_ACL_TYPE_PUBLIC_READ, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE) + * Create a new bucket + * acl indicates the access permission of a bucket, including: private, public-read-only/private-read-write, and public read-write. + * Private indicates that only the bucket owner or authorized users can access the data.. + * The three permissions are separately defined by (OssClient::OSS_ACL_TYPE_PRIVATE,OssClient::OSS_ACL_TYPE_PUBLIC_READ, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE) * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 要创建的存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket Name of the bucket to create * @return null */ function createBucket($ossClient, $bucket) @@ -61,10 +61,10 @@ function createBucket($ossClient, $bucket) } /** - * 判断Bucket是否存在 + * Check whether a bucket exists. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name */ function doesBucketExist($ossClient, $bucket) { @@ -83,10 +83,11 @@ function doesBucketExist($ossClient, $bucket) } /** - * 删除bucket,如果bucket不为空则bucket无法删除成功, 不为空表示bucket既没有object,也没有未完成的multipart上传时的parts + * Delete a bucket. If the bucket is not empty, the deletion fails. + * A bucket which is not empty indicates that it does not contain any objects or parts that are not completely uploaded during multipart upload * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 待删除的存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket Name of the bucket to delete * @return null */ function deleteBucket($ossClient, $bucket) @@ -102,10 +103,10 @@ function deleteBucket($ossClient, $bucket) } /** - * 设置bucket的acl配置 + * Set bucket ACL * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function putBucketAcl($ossClient, $bucket) @@ -123,10 +124,10 @@ function putBucketAcl($ossClient, $bucket) /** - * 获取bucket的acl配置 + * Get bucket ACL * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getBucketAcl($ossClient, $bucket) @@ -144,9 +145,9 @@ function getBucketAcl($ossClient, $bucket) /** - * 列出用户所有的Bucket + * List all buckets * - * @param OssClient $ossClient OssClient实例 + * @param OssClient $ossClient OssClient instance * @return null */ function listBuckets($ossClient) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php b/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php index cc5c0b9c5..dfa42d323 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php @@ -11,9 +11,9 @@ if (is_null($ossClient)) exit(1); $bucket = Common::getBucketName(); -//******************************* 简单使用 **************************************************************** +//******************************* Simple usage**************************************************************** -// 设置cors配置 +// Set cors configuration $corsConfig = new CorsConfig(); $rule = new CorsRule(); $rule->addAllowedHeader("x-oss-header"); @@ -24,15 +24,15 @@ $corsConfig->addRule($rule); $ossClient->putBucketCors($bucket, $corsConfig); Common::println("bucket $bucket corsConfig created:" . $corsConfig->serializeToXml()); -// 获取cors配置 +// Get cors configuration $corsConfig = $ossClient->getBucketCors($bucket); Common::println("bucket $bucket corsConfig fetched:" . $corsConfig->serializeToXml()); -// 删除cors配置 +// Delete cors configuration $ossClient->deleteBucketCors($bucket); Common::println("bucket $bucket corsConfig deleted"); -//******************************* 完整用法参考下面函数 ***************************************************** +//******************************* For complete usage, see the following functions ***************************************************** putBucketCors($ossClient, $bucket); getBucketCors($ossClient, $bucket); @@ -40,10 +40,10 @@ deleteBucketCors($ossClient, $bucket); getBucketCors($ossClient, $bucket); /** - * 设置bucket的cors配置 + * Set bucket cores * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function putBucketCors($ossClient, $bucket) @@ -67,10 +67,10 @@ function putBucketCors($ossClient, $bucket) } /** - * 获取并打印bucket的cors配置 + * Get and print the cors configuration of a bucket * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getBucketCors($ossClient, $bucket) @@ -88,10 +88,10 @@ function getBucketCors($ossClient, $bucket) } /** - * 删除bucket的所有的cors配置 + * Delete all cors configuraiton of a bucket * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteBucketCors($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php b/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php index ec0c37f8f..04d2edd64 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php @@ -11,9 +11,9 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//******************************* 简单使用 ******************************************************* +//******************************* Simple Usage ******************************************************* -//设置lifecycle规则 +// Set lifecycle configuration $lifecycleConfig = new LifecycleConfig(); $actions = array(); $actions[] = new LifecycleAction("Expiration", "Days", 3); @@ -22,16 +22,16 @@ $lifecycleConfig->addRule($lifecycleRule); $ossClient->putBucketLifecycle($bucket, $lifecycleConfig); Common::println("bucket $bucket lifecycleConfig created:" . $lifecycleConfig->serializeToXml()); -//获取lifecycle规则 +// Get lifecycle configuration $lifecycleConfig = $ossClient->getBucketLifecycle($bucket); Common::println("bucket $bucket lifecycleConfig fetched:" . $lifecycleConfig->serializeToXml()); -//删除bucket的lifecycle配置 +// Delete bucket lifecycle configuration $ossClient->deleteBucketLifecycle($bucket); Common::println("bucket $bucket lifecycleConfig deleted"); -//***************************** 完整用法参考下面函数 *********************************************** +//***************************** For complete usage, see the following functions *********************************************** putBucketLifecycle($ossClient, $bucket); getBucketLifecycle($ossClient, $bucket); @@ -39,10 +39,10 @@ deleteBucketLifecycle($ossClient, $bucket); getBucketLifecycle($ossClient, $bucket); /** - * 设置bucket的生命周期配置 + * Set bucket lifecycle configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function putBucketLifecycle($ossClient, $bucket) @@ -67,10 +67,10 @@ function putBucketLifecycle($ossClient, $bucket) } /** - * 获取bucket的生命周期配置 + * Get bucket lifecycle configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getBucketLifecycle($ossClient, $bucket) @@ -88,10 +88,10 @@ function getBucketLifecycle($ossClient, $bucket) } /** - * 删除bucket的生命周期配置 + * Delete bucket lifecycle configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteBucketLifecycle($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php b/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php index 406e1d472..eef71f221 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php @@ -8,21 +8,21 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//*******************************简单使用*************************************************************** +//*******************************Simple Usage *************************************************************** -// 设置Bucket访问日志记录规则, 访问日志文件的存放位置是同bucket下的access.log前缀的文件 +// Set bucket access logging rules. Access logs are stored under the same bucket with a 'access.log' prefix. $ossClient->putBucketLogging($bucket, $bucket, "access.log", array()); Common::println("bucket $bucket lifecycleConfig created"); -// 获取Bucket访问日志记录规则 +// Get bucket access logging rules $loggingConfig = $ossClient->getBucketLogging($bucket, array()); Common::println("bucket $bucket lifecycleConfig fetched:" . $loggingConfig->serializeToXml()); -// 删除Bucket访问日志记录规则 +// Delete bucket access logging rules $loggingConfig = $ossClient->getBucketLogging($bucket, array()); Common::println("bucket $bucket lifecycleConfig deleted"); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** putBucketLogging($ossClient, $bucket); getBucketLogging($ossClient, $bucket); @@ -30,16 +30,16 @@ deleteBucketLogging($ossClient, $bucket); getBucketLogging($ossClient, $bucket); /** - * 设置bucket的Logging配置 + * Set bucket logging configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function putBucketLogging($ossClient, $bucket) { $option = array(); - //访问日志存放在本bucket下 + // Access logs are stored in the same bucket. $targetBucket = $bucket; $targetPrefix = "access.log"; @@ -54,10 +54,10 @@ function putBucketLogging($ossClient, $bucket) } /** - * 获取bucket的Logging配置 + * Get bucket logging configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getBucketLogging($ossClient, $bucket) @@ -76,10 +76,10 @@ function getBucketLogging($ossClient, $bucket) } /** - * 删除bucket的Logging配置 + * Delete bucket logging configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteBucketLogging($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php b/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php index 3828df696..628f7846b 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php @@ -9,26 +9,26 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//******************************* 简单使用 **************************************************************** +//******************************* Simple Usage **************************************************************** -//设置referer白名单 +// Set referer whitelist $refererConfig = new RefererConfig(); $refererConfig->setAllowEmptyReferer(true); $refererConfig->addReferer("www.aliiyun.com"); $refererConfig->addReferer("www.aliiyuncs.com"); $ossClient->putBucketReferer($bucket, $refererConfig); Common::println("bucket $bucket refererConfig created:" . $refererConfig->serializeToXml()); -//获取Referer白名单 +// Get referer whitelist $refererConfig = $ossClient->getBucketReferer($bucket); Common::println("bucket $bucket refererConfig fetched:" . $refererConfig->serializeToXml()); -//删除referer白名单 +// Delete referrer whitelist $refererConfig = new RefererConfig(); $ossClient->putBucketReferer($bucket, $refererConfig); Common::println("bucket $bucket refererConfig deleted"); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** putBucketReferer($ossClient, $bucket); getBucketReferer($ossClient, $bucket); @@ -36,10 +36,10 @@ deleteBucketReferer($ossClient, $bucket); getBucketReferer($ossClient, $bucket); /** - * 设置bucket的防盗链配置 + * Set bucket referer configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function putBucketReferer($ossClient, $bucket) @@ -59,10 +59,10 @@ function putBucketReferer($ossClient, $bucket) } /** - * 获取bucket的防盗链配置 + * Get bucket referer configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getBucketReferer($ossClient, $bucket) @@ -80,11 +80,11 @@ function getBucketReferer($ossClient, $bucket) } /** - * 删除bucket的防盗链配置 - * Referer白名单不能直接清空,只能通过重新设置来覆盖之前的规则。 + * Delete bucket referer configuration + * Referer whitelist cannot be directly deleted. So use a empty one to overwrite it. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteBucketReferer($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php b/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php index 54706f834..6c387e68f 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php @@ -9,22 +9,22 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//*******************************简单使用*************************************************************** +//******************************* Simple Usage *************************************************************** -// 设置Bucket的静态网站托管模式 +// Set bucket static website configuration $websiteConfig = new WebsiteConfig("index.html", "error.html"); $ossClient->putBucketWebsite($bucket, $websiteConfig); Common::println("bucket $bucket websiteConfig created:" . $websiteConfig->serializeToXml()); -// 查看Bucket的静态网站托管状态 +// Get bucket static website configuration $websiteConfig = $ossClient->getBucketWebsite($bucket); Common::println("bucket $bucket websiteConfig fetched:" . $websiteConfig->serializeToXml()); -// 删除Bucket的静态网站托管模式 +// Delete bucket static website configuration $ossClient->deleteBucketWebsite($bucket); Common::println("bucket $bucket websiteConfig deleted"); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** putBucketWebsite($ossClient, $bucket); getBucketWebsite($ossClient, $bucket); @@ -32,10 +32,10 @@ deleteBucketWebsite($ossClient, $bucket); getBucketWebsite($ossClient, $bucket); /** - * 设置bucket的静态网站托管模式配置 + * Sets bucket static website configuration * * @param $ossClient OssClient - * @param $bucket string 存储空间名称 + * @param $bucket string bucket name * @return null */ function putBucketWebsite($ossClient, $bucket) @@ -52,10 +52,10 @@ function putBucketWebsite($ossClient, $bucket) } /** - * 获取bucket的静态网站托管状态 + * Get bucket static website configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getBucketWebsite($ossClient, $bucket) @@ -73,10 +73,10 @@ function getBucketWebsite($ossClient, $bucket) } /** - * 删除bucket的静态网站托管模式配置 + * Delete bucket static website configuration * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteBucketWebsite($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Callback.php b/vendor/aliyuncs/oss-sdk-php/samples/Callback.php index 8612a1c54..4b7bc41ca 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Callback.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Callback.php @@ -7,14 +7,14 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//*******************************简单使用*************************************************************** +//******************************* Simple Usage *************************************************************** -/** putObject 使用callback上传内容到oss文件 - * callbackurl参数指定请求回调的服务器url - * callbackbodytype参数可为application/json或application/x-www-form-urlencoded, 可选参数,默认为application/x-www-form-urlencoded - * OSS_CALLBACK_VAR参数可以不设置 +/** putObject Upload content to an OSS file using callback. + * The callbackurl specifies the server url for the request callback. + * The callbackbodytype can be application/json or application/x-www-form-urlencoded,the optional parameters,the default for the application/x - WWW - form - urlencoded + * Users can choose not to set OSS_BACK_VAR */ -$url = +$url = '{ "callbackUrl":"callback.oss-demo.com:23450", "callbackHost":"oss-cn-hangzhou.aliyuncs.com", @@ -35,17 +35,17 @@ Common::println($result['body']); Common::println($result['info']['http_code']); /** - * completeMultipartUpload 使用callback上传内容到oss文件 - * callbackurl参数指定请求回调的服务器url - * callbackbodytype参数可为application/json或application/x-www-form-urlencoded, 可选参数,默认为application/x-www-form-urlencoded - * OSS_CALLBACK_VAR参数可以不设置 - */ + * completeMultipartUpload Upload content to an OSS file using callback. + * callbackurl specifies the server url for the request callback + * The callbackbodytype can be application/json or application/x-www-form-urlencoded,the optional parameters,the default for the application/x - WWW - form - urlencoded + * Users can choose not to set OSS_BACK_VAR. + */ $object = "multipart-callback-test.txt"; $copiedObject = "multipart-callback-test.txt.copied"; $ossClient->putObject($bucket, $copiedObject, file_get_contents(__FILE__)); /** - * step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id + * step 1. Initialize a block upload event, that is, a multipart upload process to get an upload id */ $upload_id = $ossClient->initiateMultipartUpload($bucket, $object); diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Common.php b/vendor/aliyuncs/oss-sdk-php/samples/Common.php index f419d1782..49bd49318 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Common.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Common.php @@ -14,7 +14,7 @@ use OSS\Core\OssException; /** * Class Common * - * 示例程序【Samples/*.php】 的Common类,用于获取OssClient实例和其他公用方法 + * The Common class for 【Samples/*.php】 used to obtain OssClient instance and other common functions */ class Common { @@ -24,9 +24,9 @@ class Common const bucket = Config::OSS_TEST_BUCKET; /** - * 根据Config配置,得到一个OssClient实例 + * Get an OSSClient instance according to config. * - * @return OssClient 一个OssClient实例 + * @return OssClient An OssClient instance */ public static function getOssClient() { @@ -46,7 +46,7 @@ class Common } /** - * 工具方法,创建一个存储空间,如果发生异常直接exit + * A tool function which creates a bucket and exists the process if there are exceptions */ public static function createBucket() { @@ -81,4 +81,4 @@ class Common } } -Common::createBucket(); +# Common::createBucket(); diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Config.php b/vendor/aliyuncs/oss-sdk-php/samples/Config.php index 35c0dc7c4..fc3a1673a 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Config.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Config.php @@ -3,13 +3,13 @@ /** * Class Config * - * 执行Sample示例所需要的配置,用户在这里配置好Endpoint,AccessId, AccessKey和Sample示例操作的 - * bucket后,便可以直接运行RunAll.php, 运行所有的samples + * Make configurations required by the sample. + * Users can run RunAll.php which runs all the samples after configuring Endpoint, AccessId, and AccessKey. */ final class Config { - const OSS_ACCESS_ID = ''; - const OSS_ACCESS_KEY = ''; - const OSS_ENDPOINT = ''; - const OSS_TEST_BUCKET = ''; + const OSS_ACCESS_ID = 'update me'; + const OSS_ACCESS_KEY = 'update me'; + const OSS_ENDPOINT = 'update me'; + const OSS_TEST_BUCKET = 'update me'; } diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Image.php b/vendor/aliyuncs/oss-sdk-php/samples/Image.php index 53ec04758..6e51d06d2 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Image.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Image.php @@ -9,54 +9,54 @@ $ossClient = Common::getOssClient(); $download_file = "download.jpg"; if (is_null($ossClient)) exit(1); -//*******************************简单使用*************************************************************** +//******************************* Simple Usage *************************************************************** -// 先把本地的example.jpg上传到指定$bucket, 命名为$object +// Upload example.jpg to the specified bucket and rename it to $object. $ossClient->uploadFile($bucketName, $object, "example.jpg"); -// 图片缩放 +// Image resize $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100", ); $ossClient->getObject($bucketName, $object, $options); printImage("imageResize",$download_file); -// 图片裁剪 +// Image crop $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/crop,w_100,h_100,x_100,y_100,r_1", ); $ossClient->getObject($bucketName, $object, $options); printImage("iamgeCrop", $download_file); -// 图片旋转 +// Image rotate $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/rotate,90", ); $ossClient->getObject($bucketName, $object, $options); printImage("imageRotate", $download_file); -// 图片锐化 +// Image sharpen $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/sharpen,100", ); $ossClient->getObject($bucketName, $object, $options); printImage("imageSharpen", $download_file); -// 图片水印 +// Add watermark into a image $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ", ); $ossClient->getObject($bucketName, $object, $options); printImage("imageWatermark", $download_file); -// 图片格式转换 +// Image format convertion $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/format,png", ); $ossClient->getObject($bucketName, $object, $options); printImage("imageFormat", $download_file); -// 获取图片信息 +// Get image information $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/info", ); @@ -65,7 +65,7 @@ printImage("imageInfo", $download_file); /** - * 生成一个带签名的可用于浏览器直接打开的url, URL的有效期是3600秒 + * Generate a signed url which could be used in browser to access the object. The expiration time is 1 hour. */ $timeout = 3600; $options = array( @@ -74,7 +74,7 @@ $options = array( $signedUrl = $ossClient->signUrl($bucketName, $object, $timeout, "GET", $options); Common::println("rtmp url: \n" . $signedUrl); -//最后删除上传的$object +// Finally delete the $object uploaded. $ossClient->deleteObject($bucketName, $object); function printImage($func, $imageFile) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php b/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php index 2f7d3a8b9..67bb5415e 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php @@ -8,11 +8,14 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//******************************* 简单使用 ******************************************************* +//******************************* Simple Usage ******************************************************* /** - 创建一个直播频道 - 频道的名称是test_rtmp_live。直播生成的m3u8文件叫做test.m3u8,该索引文件包含3片ts文件,每片ts文件的时长为5秒(这只是一个建议值,具体的时长取决于关键帧)。 + * Create a Live Channel + * The live channel's name is test_rtmp_live. + * The play url file is named as test.m3u8, which includes 3 ts files. + * The time period of each file is 5 seconds.(It is recommneded value only for demo purpose, the actual period depends on the key frame.) + * */ $config = new LiveChannelConfig(array( 'description' => 'live channel test', @@ -29,9 +32,9 @@ Common::println("bucket $bucket liveChannel created:\n" . "playurls: ". $info->getPlayUrls()[0] . "\n"); /** - 对创建好的频道,可以使用listBucketLiveChannels来进行列举已达到管理的目的。 - prefix可以按照前缀过滤list出来的频道。 - max_keys表示迭代器内部一次list出来的频道的最大数量,这个值最大不能超过1000,不填写的话默认为100。 + * You can use listBucketLiveChannels to list and manage all existing live channels. + * Prefix can be used to filter listed live channels by prefix. + * Max_keys indicates the maximum numbers of live channels that can be listed in an iterator at one time. Its value is 1000 in maximum and 100 by default. */ $list = $ossClient->listBucketLiveChannels($bucket); Common::println("bucket $bucket listLiveChannel:\n" . @@ -50,7 +53,9 @@ foreach($list->getChannelList() as $list) "list live channel getNextMarker: ". $list->getLastModified() . "\n"); } /** - 创建直播频道之后拿到推流用的play_url(rtmp推流的url,如果Bucket不是公共读写权限那么还需要带上签名,见下文示例)和推流用的publish_url(推流产生的m3u8文件的url) + * Obtain the play_url (url used for rtmp stream pushing. + * If the the bucket is not globally readable and writable, + * the url must be signed as shown in the following.) and pulish_url (the url included in the m3u8 file generated in stream pushing) used to push streams. */ $play_url = $ossClient->signRtmpUrl($bucket, "test_rtmp_live", 3600, array('params' => array('playlistName' => 'playlist.m3u8'))); Common::println("bucket $bucket rtmp url: \n" . $play_url); @@ -58,12 +63,13 @@ $play_url = $ossClient->signRtmpUrl($bucket, "test_rtmp_live", 3600); Common::println("bucket $bucket rtmp url: \n" . $play_url); /** - 创建好直播频道,如果想把这个频道禁用掉(断掉正在推的流或者不再允许向一个地址推流),应该使用putLiveChannelStatus接口,将频道的status改成“Disabled”,如果要将一个禁用状态的频道启用,那么也是调用这个接口,将status改成“Enabled” + * If you want to disable a created live channel (disable the pushing streaming or do not allow stream pushing to an IP address), call putLiveChannelStatus to change the channel status to "Disabled". + * If you want to enable a disabled live channel, call PutLiveChannelStatus to chanage the channel status to "Enabled". */ $resp = $ossClient->putLiveChannelStatus($bucket, "test_rtmp_live", "enabled"); /** - 创建好直播频道之后调用getLiveChannelInfo可以得到频道相关的信息 + * You can callLiveChannelInfo to get the information about a live channel. */ $info = $ossClient->getLiveChannelInfo($bucket, 'test_rtmp_live'); Common::println("bucket $bucket LiveChannelInfo:\n" . @@ -75,7 +81,7 @@ Common::println("bucket $bucket LiveChannelInfo:\n" . "live channel info playListName: ". $info->getPlayListName() . "\n"); /** - 如果想查看一个频道历史推流记录,可以调用getLiveChannelHistory。目前最多可以看到10次推流的记录 + * Gets the historical pushing streaming records by calling getLiveChannelHistory. Now the max records to return is 10. */ $history = $ossClient->getLiveChannelHistory($bucket, "test_rtmp_live"); if (count($history->getLiveRecordList()) != 0) @@ -90,9 +96,9 @@ if (count($history->getLiveRecordList()) != 0) } /** - 对于正在推流的频道调用get_live_channel_stat可以获得流的状态信息。 - 如果频道正在推流,那么stat_result中的所有字段都有意义。 - 如果频道闲置或者处于“Disabled”状态,那么status为“Idle”或“Disabled”,其他字段无意义。 + * Get the live channel's status by calling getLiveChannelStatus. + * If the live channel is receiving the pushing stream, all attributes in stat_result are valid. + * If the live channel is idle or disabled, then the status is idle or Disabled and other attributes have no meaning. */ $status = $ossClient->getLiveChannelStatus($bucket, "test_rtmp_live"); Common::println("bucket $bucket listLiveChannel:\n" . @@ -108,9 +114,9 @@ Common::println("bucket $bucket listLiveChannel:\n" . "live channel status AdioCodec: ". $status->getAudioCodec() . "\n"); /** - * 如果希望利用直播推流产生的ts文件生成一个点播列表,可以使用postVodPlaylist方法。 - * 指定起始时间为当前时间减去60秒,结束时间为当前时间,这意味着将生成一个长度为60秒的点播视频。 - * 播放列表指定为“vod_playlist.m3u8”,也就是说这个接口调用成功之后会在OSS上生成一个名叫“vod_playlist.m3u8”的播放列表文件。 + * If you want to generate a play url from the ts files generated from pushing streaming, call postVodPlayList. + * Specify the start time to 60 seconds before the current time and the end time to the current time, which means that a video of 60 seconds is generated. + * The playlist file is specified to “vod_playlist.m3u8”, which means that a palylist file named vod_playlist.m3u8 is created after the interface is called. */ $current_time = time(); $ossClient->postVodPlaylist($bucket, @@ -120,6 +126,6 @@ $ossClient->postVodPlaylist($bucket, ); /** - * 如果一个直播频道已经不打算再使用了,那么可以调用delete_live_channel来删除频道。 + * Call delete_live_channel to delete a live channel if it will no longer be in used. */ $ossClient->deleteBucketLiveChannel($bucket, "test_rtmp_live"); diff --git a/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php b/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php index e8d69a3ee..21756b7cd 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php @@ -9,27 +9,27 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//*******************************简单使用*************************************************************** +//******************************* Simple usage *************************************************************** /** - * 查看完整用法中的 "putObjectByRawApis"函数,查看使用基础的分片上传api进行文件上传,用户可以基于这个自行实现断点续传等功能 + * See the putObjectByRawAPis usage in complete example to check out basic multipart upload APIs which can be used as resumable upload. */ -// 使用分片上传接口上传文件, 接口会根据文件大小决定是使用普通上传还是分片上传 +// Upload a file using the multipart upload interface, which determines to use simple upload or multipart upload based on the file size. $ossClient->multiuploadFile($bucket, "file.php", __FILE__, array()); Common::println("local file " . __FILE__ . " is uploaded to the bucket $bucket, file.php"); -// 上传本地目录到bucket内的targetdir子目录中 +// Upload local directory's data into target dir $ossClient->uploadDir($bucket, "targetdir", __DIR__); Common::println("local dir " . __DIR__ . " is uploaded to the bucket $bucket, targetdir/"); -// 列出当前未完成的分片上传 +// List the incomplete multipart uploads $listMultipartUploadInfo = $ossClient->listMultipartUploads($bucket, array()); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** multiuploadFile($ossClient, $bucket); putObjectByRawApis($ossClient, $bucket); @@ -37,10 +37,10 @@ uploadDir($ossClient, $bucket); listMultipartUploads($ossClient, $bucket); /** - * 通过multipart上传文件 + * Upload files using multipart upload * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function multiuploadFile($ossClient, $bucket) @@ -60,17 +60,17 @@ function multiuploadFile($ossClient, $bucket) } /** - * 使用基本的api分阶段进行分片上传 + * Use basic multipart upload for file upload. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @throws OssException */ function putObjectByRawApis($ossClient, $bucket) { $object = "test/multipart-test.txt"; /** - * step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id + * step 1. Initialize a block upload event, that is, a multipart upload process to get an upload id */ try { $uploadId = $ossClient->initiateMultipartUpload($bucket, $object); @@ -81,7 +81,7 @@ function putObjectByRawApis($ossClient, $bucket) } print(__FUNCTION__ . ": initiateMultipartUpload OK" . "\n"); /* - * step 2. 上传分片 + * step 2. Upload parts */ $partSize = 10 * 1024 * 1024; $uploadFile = __FILE__; @@ -104,7 +104,7 @@ function putObjectByRawApis($ossClient, $bucket) $contentMd5 = OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos); $upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5; } - //2. 将每一分片上传到OSS + //2. Upload each part to OSS try { $responseUploadPart[] = $ossClient->uploadPart($bucket, $object, $uploadId, $upOptions); } catch (OssException $e) { @@ -122,7 +122,7 @@ function putObjectByRawApis($ossClient, $bucket) ); } /** - * step 3. 完成上传 + * step 3. Complete the upload */ try { $ossClient->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts); @@ -135,10 +135,10 @@ function putObjectByRawApis($ossClient, $bucket) } /** - * 按照目录上传文件 + * Upload by directories * * @param OssClient $ossClient OssClient - * @param string $bucket 存储空间名称 + * @param string $bucket bucket name * */ function uploadDir($ossClient, $bucket) @@ -156,7 +156,7 @@ function uploadDir($ossClient, $bucket) } /** - * 获取当前未完成的分片上传列表 + * Get ongoing multipart uploads * * @param $ossClient OssClient * @param $bucket string diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Object.php b/vendor/aliyuncs/oss-sdk-php/samples/Object.php index 3bf024b02..ae6eb839a 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Object.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Object.php @@ -7,9 +7,9 @@ use OSS\Core\OssException; $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//*******************************简单使用*************************************************************** +//******************************* Simple usage *************************************************************** -// 简单上传变量的内容到oss文件 +// Upload the in-memory string (hi, oss) to an OSS file $result = $ossClient->putObject($bucket, "b.file", "hi, oss"); Common::println("b.file is created"); Common::println($result['x-oss-request-id']); @@ -17,7 +17,7 @@ Common::println($result['etag']); Common::println($result['content-md5']); Common::println($result['body']); -// 上传本地文件 +// Uploads a local file to an OSS file $result = $ossClient->uploadFile($bucket, "c.file", __FILE__); Common::println("c.file is created"); Common::println("b.file is created"); @@ -26,21 +26,21 @@ Common::println($result['etag']); Common::println($result['content-md5']); Common::println($result['body']); -// 下载object到本地变量 +// Download an oss object as an in-memory variable $content = $ossClient->getObject($bucket, "b.file"); Common::println("b.file is fetched, the content is: " . $content); -// 给object添加symlink +// Add a symlink to an object $content = $ossClient->putSymlink($bucket, "test-symlink", "b.file"); Common::println("test-symlink is created"); Common::println($result['x-oss-request-id']); Common::println($result['etag']); -// 获取symlink +// Get a symlink $content = $ossClient->getSymlink($bucket, "test-symlink"); Common::println("test-symlink refer to : " . $content[OssClient::OSS_SYMLINK_TARGET]); -// 下载object到本地文件 +// Download an object to a local file. $options = array( OssClient::OSS_FILE_DOWNLOAD => "./c.file.localcopy", ); @@ -48,26 +48,26 @@ $ossClient->getObject($bucket, "c.file", $options); Common::println("b.file is fetched to the local file: c.file.localcopy"); Common::println("b.file is created"); -// 拷贝object +// Copy an object $result = $ossClient->copyObject($bucket, "c.file", $bucket, "c.file.copy"); Common::println("lastModifiedTime: " . $result[0]); Common::println("ETag: " . $result[1]); -// 判断object是否存在 +// Check whether an object exists $doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy"); Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no")); -// 删除object +// Delete an object $result = $ossClient->deleteObject($bucket, "c.file.copy"); Common::println("c.file.copy is deleted"); Common::println("b.file is created"); Common::println($result['x-oss-request-id']); -// 判断object是否存在 +// Check whether an object exists $doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy"); Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no")); -// 批量删除object +// Delete multiple objects in batch $result = $ossClient->deleteObjects($bucket, array("b.file", "c.file")); foreach($result as $object) Common::println($object); @@ -75,7 +75,7 @@ foreach($result as $object) sleep(2); unlink("c.file.localcopy"); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** listObjects($ossClient, $bucket); listAllObjects($ossClient, $bucket); @@ -93,10 +93,10 @@ doesObjectExist($ossClient, $bucket); getSymlink($ossClient, $bucket); putSymlink($ossClient, $bucket); /** - * 创建虚拟目录 + * Create a 'virtual' folder * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function createObjectDir($ossClient, $bucket) @@ -112,12 +112,12 @@ function createObjectDir($ossClient, $bucket) } /** - * 把本地变量的内容到文件 + * Upload in-memory data to oss * - * 简单上传,上传指定变量的内存值作为object的内容 + * Simple upload---upload specified in-memory data to an OSS object * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function putObject($ossClient, $bucket) @@ -137,10 +137,10 @@ function putObject($ossClient, $bucket) /** - * 上传指定的本地文件内容 + * Uploads a local file to OSS * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function uploadFile($ossClient, $bucket) @@ -160,11 +160,12 @@ function uploadFile($ossClient, $bucket) } /** - * 列出Bucket内所有目录和文件, 注意如果符合条件的文件数目超过设置的max-keys, 用户需要使用返回的nextMarker作为入参,通过 - * 循环调用ListObjects得到所有的文件,具体操作见下面的 listAllObjects 示例 + * Lists all files and folders in the bucket. + * Note if there's more items than the max-keys specified, the caller needs to use the nextMarker returned as the value for the next call's maker paramter. + * Loop through all the items returned from ListObjects. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function listObjects($ossClient, $bucket) @@ -187,8 +188,8 @@ function listObjects($ossClient, $bucket) return; } print(__FUNCTION__ . ": OK" . "\n"); - $objectList = $listObjectInfo->getObjectList(); // 文件列表 - $prefixList = $listObjectInfo->getPrefixList(); // 目录列表 + $objectList = $listObjectInfo->getObjectList(); // object list + $prefixList = $listObjectInfo->getPrefixList(); // directory list if (!empty($objectList)) { print("objectList:\n"); foreach ($objectList as $objectInfo) { @@ -204,15 +205,15 @@ function listObjects($ossClient, $bucket) } /** - * 列出Bucket内所有目录和文件, 根据返回的nextMarker循环得到所有Objects + * Lists all folders and files under the bucket. Use nextMarker repeatedly to get all objects. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function listAllObjects($ossClient, $bucket) { - //构造dir下的文件和虚拟目录 + // Create dir/obj 'folder' and put some files into it. for ($i = 0; $i < 100; $i += 1) { $ossClient->putObject($bucket, "dir/obj" . strval($i), "hi"); $ossClient->createObjectDir($bucket, "dir/obj" . strval($i)); @@ -238,7 +239,7 @@ function listAllObjects($ossClient, $bucket) printf($e->getMessage() . "\n"); return; } - // 得到nextMarker,从上一次listObjects读到的最后一个文件的下一个文件开始继续获取文件列表 + // Get the nextMarker, and it would be used as the next call's marker parameter to resume from the last call $nextMarker = $listObjectInfo->getNextMarker(); $listObject = $listObjectInfo->getObjectList(); $listPrefix = $listObjectInfo->getPrefixList(); @@ -251,10 +252,10 @@ function listAllObjects($ossClient, $bucket) } /** - * 获取object的内容 + * Get the content of an object. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getObject($ossClient, $bucket) @@ -277,10 +278,10 @@ function getObject($ossClient, $bucket) } /** - * put symlink + * Put symlink * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient The Instance of OssClient + * @param string $bucket bucket name * @return null */ function putSymlink($ossClient, $bucket) @@ -305,10 +306,10 @@ function putSymlink($ossClient, $bucket) } /** - * 获取symlink + * Get symlink * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getSymlink($ossClient, $bucket) @@ -333,13 +334,13 @@ function getSymlink($ossClient, $bucket) } /** - * get_object_to_local_file + * Get_object_to_local_file * - * 获取object - * 将object下载到指定的文件 + * Get object + * Download object to a specified file. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getObjectToLocalFile($ossClient, $bucket) @@ -369,11 +370,11 @@ function getObjectToLocalFile($ossClient, $bucket) } /** - * 拷贝object - * 当目的object和源object完全相同时,表示修改object的meta信息 + * Copy object + * When the source object is same as the target one, copy operation will just update the metadata. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function copyObject($ossClient, $bucket) @@ -395,11 +396,11 @@ function copyObject($ossClient, $bucket) } /** - * 修改Object Meta - * 利用copyObject接口的特性:当目的object和源object完全相同时,表示修改object的meta信息 + * Update Object Meta + * it leverages the feature of copyObject: when the source object is just the target object, the metadata could be updated via copy * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function modifyMetaForObject($ossClient, $bucket) @@ -425,10 +426,10 @@ function modifyMetaForObject($ossClient, $bucket) } /** - * 获取object meta, 也就是getObjectMeta接口 + * Get object meta, that is, getObjectMeta * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function getObjectMeta($ossClient, $bucket) @@ -452,10 +453,10 @@ function getObjectMeta($ossClient, $bucket) } /** - * 删除object + * Delete an object * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteObject($ossClient, $bucket) @@ -473,10 +474,10 @@ function deleteObject($ossClient, $bucket) /** - * 批量删除object + * Delete multiple objects in batch * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function deleteObjects($ossClient, $bucket) @@ -495,10 +496,10 @@ function deleteObjects($ossClient, $bucket) } /** - * 判断object是否存在 + * Check whether an object exists * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null */ function doesObjectExist($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php b/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php index a4d6d9b9c..0cd7ec163 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php @@ -9,5 +9,5 @@ require_once __DIR__ . '/BucketReferer.php'; require_once __DIR__ . '/BucketLogging.php'; require_once __DIR__ . '/BucketWebsite.php'; require_once __DIR__ . '/Signature.php'; -require_once __DIR__ . '/Object.php'; +require_once __DIR__ . '/Object1.php'; require_once __DIR__ . '/MultipartUpload.php'; \ No newline at end of file diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Signature.php b/vendor/aliyuncs/oss-sdk-php/samples/Signature.php index 5ef2b7dde..eef598122 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Signature.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Signature.php @@ -10,33 +10,33 @@ $bucket = Common::getBucketName(); $ossClient = Common::getOssClient(); if (is_null($ossClient)) exit(1); -//******************************* 简单使用 *************************************************************** +//******************************* Simple Usage *************************************************************** $ossClient->uploadFile($bucket, "a.file", __FILE__); -// 生成GetObject的签名url,用户可以使用这个url直接在浏览器下载 +// Generate a signed url for getting an object. The URL can be used in browser directly to download the file. $signedUrl = $ossClient->signUrl($bucket, "a.file", 3600); Common::println($signedUrl); -// 生成用于putObject的签名URL,用户可以直接用put方法使用这个url上传文件到 "a.file" +// Generate the signed url for putting an object. User can use put method with this url to upload a file to "a.file". $signedUrl = $ossClient->signUrl($bucket, "a.file", "3600", "PUT"); Common::println($signedUrl); -// 生成从本地文件上传PutObject的签名url, 用户可以直接使用这个url把本地文件上传到 "a.file" +// Generate the signed url for putting an object from local file. The url can be used directly to upload the file to "a.file". $signedUrl = $ossClient->signUrl($bucket, "a.file", 3600, "PUT", array('Content-Type' => 'txt')); Common::println($signedUrl); -//******************************* 完整用法参考下面函数 **************************************************** +//******************************* For complete usage, see the following functions **************************************************** getSignedUrlForPuttingObject($ossClient, $bucket); getSignedUrlForPuttingObjectFromFile($ossClient, $bucket); getSignedUrlForGettingObject($ossClient, $bucket); /** - * 生成GetObject的签名url,主要用于私有权限下的读访问控制 + * Generate the signed url for getObject() to control read accesses under private privilege * - * @param $ossClient OssClient OssClient实例 - * @param $bucket string 存储空间名称 + * @param $ossClient OssClient OssClient instance + * @param $bucket string bucket name * @return null */ function getSignedUrlForGettingObject($ossClient, $bucket) @@ -52,7 +52,7 @@ function getSignedUrlForGettingObject($ossClient, $bucket) } print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n"); /** - * 可以类似的代码来访问签名的URL,也可以输入到浏览器中去访问 + * Use similar code to access the object by url, or use browser to access the object. */ $request = new RequestCore($signedUrl); $request->set_method('GET'); @@ -67,10 +67,10 @@ function getSignedUrlForGettingObject($ossClient, $bucket) } /** - * 生成PutObject的签名url,主要用于私有权限下的写访问控制 + * Generate the signed url for PutObject to control write accesses under private privilege. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @return null * @throws OssException */ @@ -105,11 +105,10 @@ function getSignedUrlForPuttingObject($ossClient, $bucket) } /** - * 生成PutObject的签名url,主要用于私有权限下的写访问控制, 用户可以利用生成的signedUrl - * 从文件上传文件 + * Generate the signed url for PutObject's signed url. User could use the signed url to upload file directly. * - * @param OssClient $ossClient OssClient实例 - * @param string $bucket 存储空间名称 + * @param OssClient $ossClient OssClient instance + * @param string $bucket bucket name * @throws OssException */ function getSignedUrlForPuttingObjectFromFile($ossClient, $bucket) diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php index e9b88ffa8..17685c31f 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php @@ -5,16 +5,17 @@ namespace OSS\Core; /** * Class MimeTypes * - * 在上传文件的时候,根据文件的缺省名,得到其对应的Content-type + * The map of a file's extention name to its corresponding Content-Type value in the file upload request. + * If the file extention name is not predefined in this class, getMimetype() returns null. * * @package OSS\Core */ class MimeTypes { /** - * 根据文件名,获取http协议header中的content-type应该填写的数据 + * Get the content-type value of http header from the file's extension name. * - * @param string $name 缺省名 + * @param string $name Default file extension name. * @return string content-type */ public static function getMimetype($name) diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php index b0e9e8b0d..2320c9e8a 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php @@ -5,8 +5,8 @@ namespace OSS\Core; /** * Class OssException * - * OssClient在使用的时候,所抛出的异常,用户在使用OssClient的时候,要Try住相关代码, - * try的Exception应该是OssException,其中会得到相关异常原因 + * This is the class that OSSClient is expected to thrown, which the caller needs to handle properly. + * It has the OSS specific errors which is useful for troubleshooting. * * @package OSS\Core */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php index 6e5d4133d..541d2c344 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php @@ -5,7 +5,7 @@ namespace OSS\Core; /** * Class OssUtil * - * Oss工具类,主要供OssClient使用,用户也可以使用本类进行返回结果的格式化 + * Oss Util class for OssClient. The caller could use it for formating the result from OssClient. * * @package OSS */ @@ -20,10 +20,10 @@ class OssUtil const OSS_MIN_PART_SIZE = 102400; // 100KB /** - * 生成query params + * Generate query params * - * @param array $options 关联数组 - * @return string 返回诸如 key1=value1&key2=value2 + * @param array $options: a key-value pair array. + * @return string: the key-value list in the format such as key1=value1&key2=value2 */ public static function toQueryString($options = array()) { @@ -38,7 +38,7 @@ class OssUtil } /** - * 转义字符替换 + * Html encoding '<', '>', '&', '\', '"' in subject parameter. * * @param string $subject * @return string @@ -51,7 +51,7 @@ class OssUtil } /** - * 检查是否是中文编码 + * Check whether the string includes any chinese character * * @param $str * @return int @@ -62,10 +62,10 @@ class OssUtil } /** - * 检测是否GB2312编码 + * Checks if the string is encoded by GB2312. * * @param string $str - * @return boolean false UTF-8编码 TRUE GB2312编码 + * @return boolean false UTF-8 encoding TRUE GB2312 encoding */ public static function isGb2312($str) { @@ -87,7 +87,7 @@ class OssUtil } /** - * 检测是否GBK编码 + * Checks if the string is encoded by GBK * * @param string $str * @param boolean $gbk @@ -114,13 +114,13 @@ class OssUtil } /** - * 检验bucket名称是否合法 - * bucket的命名规范: - * 1. 只能包括小写字母,数字 - * 2. 必须以小写字母或者数字开头 - * 3. 长度必须在3-63字节之间 + * Checks if the bucket name is valid + * bucket naming rules + * 1. Can only include lowercase letters, numbers, or dashes + * 2. Must start and end with lowercase letters or numbers + * 3. Must be within a length from 3 to 63 bytes. * - * @param string $bucket Bucket名称 + * @param string $bucket Bucket name * @return boolean */ public static function validateBucket($bucket) @@ -133,11 +133,11 @@ class OssUtil } /** - * 检验object名称是否合法 - * object命名规范: - * 1. 规则长度必须在1-1023字节之间 - * 2. 使用UTF-8编码 - * 3. 不能以 "/" "\\"开头 + * Checks if object name is valid + * object naming rules: + * 1. Must be within a length from 1 to 1023 bytes + * 2. Cannot start with '/' or '\\'. + * 3. Must be encoded in UTF-8. * * @param string $object Object名称 * @return boolean @@ -155,7 +155,7 @@ class OssUtil /** - * 判断字符串$str是不是以$findMe开始 + * Checks if $str starts with $findMe * * @param string $str * @param string $findMe @@ -170,8 +170,9 @@ class OssUtil } } + /** - * 生成createBucketXmlBody接口的xml消息 + * Generate the xml message of createBucketXmlBody. * * @param string $storageClass * @return string @@ -184,7 +185,7 @@ class OssUtil } /** - * 检验$options + * validate $options * * @param array $options * @throws OssException @@ -199,7 +200,7 @@ class OssUtil } /** - * 检查上传文件的内容是否合法 + * check whether the Content is valid. * * @param $content string * @throws OssException @@ -212,7 +213,7 @@ class OssUtil } /** - * 校验BUCKET/OBJECT/OBJECT GROUP是否为空 + * Check if BUCKET/OBJECT/OBJECT GROUP is empty. * * @param string $name * @param string $errMsg @@ -227,7 +228,7 @@ class OssUtil } /** - * 仅供测试使用的接口,请勿使用 + * This is a method for test only. DO NOT USE. * * @param $filename * @param $size @@ -268,7 +269,7 @@ BBB; } /** - * 得到文件的md5编码 + * Get MD5 of the file. * * @param $filename * @param $from_pos @@ -318,7 +319,7 @@ BBB; } /** - * 检测是否windows系统,因为windows系统默认编码为GBK + * Check if the OS is Windows. The default encoding in Windows is GBK. * * @return bool */ @@ -328,7 +329,9 @@ BBB; } /** - * 主要是由于windows系统编码是gbk,遇到中文时候,如果不进行转换处理会出现找不到文件的问题 + * Encodes the file path from GBK to UTF-8. + * The default encoding in Windows is GBK. + * And if the file path is in Chinese, the file would not be found without the transcoding to UTF-8. * * @param $file_path * @return string @@ -342,9 +345,9 @@ BBB; } /** - * 判断用户输入的endpoint是否是 xxx.xxx.xxx.xxx:port 或者 xxx.xxx.xxx.xxx的ip格式 + * Check if the endpoint is in the IPv4 format, such as xxx.xxx.xxx.xxx:port or xxx.xxx.xxx.xxx. * - * @param string $endpoint 需要做判断的endpoint + * @param string $endpoint The endpoint to check. * @return boolean */ public static function isIPFormat($endpoint) @@ -360,7 +363,44 @@ BBB; } /** - * 生成DeleteMultiObjects接口的xml消息 + * Get the host:port from endpoint. + * + * @param string $endpoint the endpoint. + * @return boolean + */ + public static function getHostPortFromEndpoint($endpoint) + { + $str = $endpoint; + $pos = strpos($str, "://"); + if ($pos !== false) { + $str = substr($str, $pos+3); + } + + $pos = strpos($str, '#'); + if ($pos !== false) { + $str = substr($str, 0, $pos); + } + + $pos = strpos($str, '?'); + if ($pos !== false) { + $str = substr($str, 0, $pos); + } + + $pos = strpos($str, '/'); + if ($pos !== false) { + $str = substr($str, 0, $pos); + } + + $pos = strpos($str, '@'); + if ($pos !== false) { + $str = substr($str, $pos+1); + } + + return $str; + } + + /** + * Generate the xml message of DeleteMultiObjects. * * @param string[] $objects * @param bool $quiet @@ -379,7 +419,7 @@ BBB; } /** - * 生成CompleteMultipartUpload接口的xml消息 + * Generate the xml message of CompleteMultipartUpload. * * @param array[] $listParts * @return string @@ -396,7 +436,7 @@ BBB; } /** - * 读取目录 + * Read the directory, return a associative array in which the MD5 is the named key and the is the value. * * @param string $dir * @param string $exclude diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php index 06d0f8783..e1d221e25 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php @@ -3,7 +3,7 @@ namespace OSS\Http; /** - * Handles all HTTP requests using cURL and manages the responses. + * Handle all HTTP requests using cURL and manages the responses. * * @version 2011.06.07 * @copyright 2006-2011 Ryan Parman @@ -75,7 +75,7 @@ class RequestCore public $method; /** - * Stores the proxy settings to use for the request. + * Store the proxy settings to use for the request. */ public $proxy = null; @@ -170,14 +170,14 @@ class RequestCore public $registered_streaming_write_callback = null; /** - * 请求超时时间, 默认是5184000秒,6天 + * The request timeout time, which is 5,184,000 seconds,that is, 6 days by default * * @var int */ public $timeout = 5184000; /** - * 连接超时时间,默认是10秒 + * The connection timeout time, which is 10 seconds by default * * @var int */ @@ -216,7 +216,7 @@ class RequestCore // CONSTRUCTOR/DESTRUCTOR /** - * Constructs a new instance of this class. + * Construct a new instance of this class. * * @param string $url (Optional) The URL to request or service endpoint to query. * @param string $proxy (Optional) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` @@ -249,7 +249,7 @@ class RequestCore } /** - * Destructs the instance. Closes opened file handles. + * Destruct the instance. Closes opened file handles. * * @return $this A reference to the current instance. */ @@ -271,7 +271,7 @@ class RequestCore // REQUEST METHODS /** - * Sets the credentials to use for authentication. + * Set the credentials to use for authentication. * * @param string $user (Required) The username to authenticate with. * @param string $pass (Required) The password to authenticate with. @@ -285,7 +285,7 @@ class RequestCore } /** - * Adds a custom HTTP header to the cURL request. + * Add a custom HTTP header to the cURL request. * * @param string $key (Required) The custom HTTP header to set. * @param mixed $value (Required) The value to assign to the custom HTTP header. @@ -298,7 +298,7 @@ class RequestCore } /** - * Removes an HTTP header from the cURL request. + * Remove an HTTP header from the cURL request. * * @param string $key (Required) The custom HTTP header to set. * @return $this A reference to the current instance. @@ -324,7 +324,7 @@ class RequestCore } /** - * Sets a custom useragent string for the class. + * Set a custom useragent string for the class. * * @param string $ua (Required) The useragent string to use. * @return $this A reference to the current instance. @@ -373,7 +373,7 @@ class RequestCore } /** - * Sets the length in bytes to read from the stream while streaming up. + * Set the length in bytes to read from the stream while streaming up. * * @param integer $size (Required) The length in bytes to read from the stream. * @return $this A reference to the current instance. @@ -386,7 +386,7 @@ class RequestCore } /** - * Sets the resource to read from while streaming up. Reads the stream from its current position until + * Set the resource to read from while streaming up. Reads the stream from its current position until * EOF or `$size` bytes have been read. If `$size` is not given it will be determined by and * . * @@ -414,7 +414,7 @@ class RequestCore } /** - * Sets the file to read from while streaming up. + * Set the file to read from while streaming up. * * @param string $location (Required) The readable location to read from. * @return $this A reference to the current instance. @@ -428,7 +428,7 @@ class RequestCore } /** - * Sets the resource to write to while streaming down. + * Set the resource to write to while streaming down. * * @param resource $resource (Required) The writeable resource to write to. * @return $this A reference to the current instance. @@ -441,7 +441,7 @@ class RequestCore } /** - * Sets the file to write to while streaming down. + * Set the file to write to while streaming down. * * @param string $location (Required) The writeable location to write to. * @return $this A reference to the current instance. @@ -631,7 +631,7 @@ class RequestCore } /** - * Prepares and adds the details of the cURL request. This can be passed along to a + * Prepare and adds the details of the cURL request. This can be passed along to a * function. * * @return resource The handle for the cURL object. @@ -685,7 +685,6 @@ class RequestCore // Enable a proxy connection if requested. if ($this->proxy) { - $host = $this->proxy['host']; $host .= ($this->proxy['port']) ? ':' . $this->proxy['port'] : ''; curl_setopt($curl_handle, CURLOPT_PROXY, $host); @@ -830,7 +829,7 @@ class RequestCore } /** - * Sends the request, calling necessary utility functions to update built-in properties. + * Send the request, calling necessary utility functions to update built-in properties. * * @param boolean $parse (Optional) Whether to parse the response with ResponseCore or not. * @return string The resulting unparsed data from the request. diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/ResponseCore.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/ResponseCore.php index 106d181cf..909356159 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/ResponseCore.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/ResponseCore.php @@ -8,25 +8,25 @@ namespace OSS\Http; class ResponseCore { /** - * Stores the HTTP header information. + * Store the HTTP header information. */ public $header; /** - * Stores the SimpleXML response. + * Store the SimpleXML response. */ public $body; /** - * Stores the HTTP response code. + * Store the HTTP response code. */ public $status; /** - * Constructs a new instance of this class. + * Construct a new instance of this class. * * @param array $header (Required) Associative array of HTTP headers (typically returned by ). - * @param string $body (Required) XML-formatted response from AWS. + * @param string $body (Required) XML-formatted response from OSS. * @param integer $status (Optional) HTTP response status code from the request. * @return Mixed Contains an `header` property (HTTP headers as an associative array), a or `body` property, and an `status` code. */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php index 9b89674f9..09e7deafb 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php @@ -4,7 +4,7 @@ namespace OSS\Model; /** - * Bucket信息,ListBuckets接口返回数据 + * Bucket information class. This is the type of element in BucketListInfo's * * Class BucketInfo * @package OSS\Model @@ -26,7 +26,7 @@ class BucketInfo } /** - * 得到bucket所在的region + * Get bucket location * * @return string */ @@ -36,7 +36,7 @@ class BucketInfo } /** - * 得到bucket的名称 + * Get bucket name * * @return string */ @@ -46,7 +46,7 @@ class BucketInfo } /** - * 得到bucket的创建时间 + * Get bucket creation time. * * @return string */ @@ -56,20 +56,20 @@ class BucketInfo } /** - * bucket所在的region + * bucket region * * @var string */ private $location; /** - * bucket的名称 + * bucket name * * @var string */ private $name; /** - * bucket的创建事件 + * bucket creation time * * @var string */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php index 910717f92..ce03a0d7e 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php @@ -5,7 +5,7 @@ namespace OSS\Model; /** * Class BucketListInfo * - * ListBuckets接口返回的数据类型 + * It's the type of return value of ListBuckets. * * @package OSS\Model */ @@ -21,7 +21,7 @@ class BucketListInfo } /** - * 得到BucketInfo列表 + * Get the BucketInfo list * * @return BucketInfo[] */ @@ -31,7 +31,7 @@ class BucketListInfo } /** - * BucketInfo信息列表 + * BucketInfo list * * @var array */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php index c44c10a1a..62a0d7103 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php @@ -22,7 +22,7 @@ class CorsConfig implements XmlConfig } /** - * 得到CorsRule列表 + * Get CorsRule list * * @return CorsRule[] */ @@ -33,7 +33,7 @@ class CorsConfig implements XmlConfig /** - * 添加一条CorsRule + * Add a new CorsRule * * @param CorsRule $rule * @throws OssException @@ -47,7 +47,7 @@ class CorsConfig implements XmlConfig } /** - * 从xml数据中解析出CorsConfig + * Parse CorsConfig from the xml. * * @param string $strXml * @throws OssException @@ -78,7 +78,7 @@ class CorsConfig implements XmlConfig } /** - * 生成xml字符串 + * Serialize the object into xml string. * * @return string */ @@ -105,7 +105,7 @@ class CorsConfig implements XmlConfig const OSS_MAX_RULES = 10; /** - * orsRule列表 + * CorsRule list * * @var CorsRule[] */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php index 2cbe1c17b..08353a0c0 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php @@ -13,7 +13,7 @@ use OSS\Core\OssException; class CorsRule { /** - * Rule中增加一条allowedOrigin + * Add an allowedOrigin rule * * @param string $allowedOrigin */ @@ -25,7 +25,7 @@ class CorsRule } /** - * Rule中增加一条allowedMethod + * Add an allowedMethod rule * * @param string $allowedMethod */ @@ -37,7 +37,7 @@ class CorsRule } /** - * Rule中增加一条allowedHeader + * Add an allowedHeader rule * * @param string $allowedHeader */ @@ -49,7 +49,7 @@ class CorsRule } /** - * Rule中增加一条exposeHeader + * Add an exposeHeader rule * * @param string $exposeHeader */ @@ -77,7 +77,7 @@ class CorsRule } /** - * 得到AllowedHeaders列表 + * Get the AllowedHeaders list * * @return string[] */ @@ -87,7 +87,7 @@ class CorsRule } /** - * 得到AllowedOrigins列表 + * Get the AllowedOrigins list * * @return string[] */ @@ -97,7 +97,7 @@ class CorsRule } /** - * 得到AllowedMethods列表 + * Get the AllowedMethods list * * @return string[] */ @@ -107,7 +107,7 @@ class CorsRule } /** - * 得到ExposeHeaders列表 + * Get the ExposeHeaders list * * @return string[] */ @@ -117,7 +117,7 @@ class CorsRule } /** - * 根据提供的xmlRule, 把this按照一定的规则插入到$xmlRule中 + * Serialize all the rules into the xml represented by parameter $xmlRule * * @param \SimpleXMLElement $xmlRule * @throws OssException diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php index 5abd825d0..a0e212692 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php @@ -71,7 +71,7 @@ class LifecycleAction } /** - * appendToXml 把actions插入到xml中 + * Use appendToXml to insert actions into xml. * * @param \SimpleXMLElement $xmlRule */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php index fc4f5755a..f2d2dc33c 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php @@ -13,7 +13,7 @@ use OSS\Core\OssException; class LifecycleConfig implements XmlConfig { /** - * 从xml数据中解析出LifecycleConfig + * Parse the xml into this object. * * @param string $strXml * @throws OssException @@ -48,7 +48,7 @@ class LifecycleConfig implements XmlConfig /** - * 生成xml字符串 + * Serialize the object to xml * * @return string */ @@ -65,7 +65,7 @@ class LifecycleConfig implements XmlConfig /** * - * 添加LifecycleRule + * Add a LifecycleRule * * @param LifecycleRule $lifecycleRule * @throws OssException @@ -79,7 +79,7 @@ class LifecycleConfig implements XmlConfig } /** - * 将配置转换成字符串,便于用户查看 + * Serialize the object into xml string. * * @return string */ @@ -89,7 +89,7 @@ class LifecycleConfig implements XmlConfig } /** - * 得到所有的生命周期规则 + * Get all lifecycle rules. * * @return LifecycleRule[] */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php index ec615b9af..73c6cc353 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php @@ -12,7 +12,7 @@ namespace OSS\Model; class LifecycleRule { /** - * 得到规则ID + * Get Id * * @return string */ @@ -22,7 +22,7 @@ class LifecycleRule } /** - * @param string $id 规则ID + * @param string $id Rule Id */ public function setId($id) { @@ -30,7 +30,7 @@ class LifecycleRule } /** - * 得到文件前缀 + * Get a file prefix * * @return string */ @@ -40,9 +40,9 @@ class LifecycleRule } /** - * 设置文件前缀 + * Set a file prefix * - * @param string $prefix 文件前缀 + * @param string $prefix The file prefix */ public function setPrefix($prefix) { @@ -50,7 +50,7 @@ class LifecycleRule } /** - * Lifecycle规则的状态 + * Get Lifecycle status * * @return string */ @@ -60,7 +60,7 @@ class LifecycleRule } /** - * 设置Lifecycle规则状态 + * Set Lifecycle status * * @param string $status */ @@ -90,9 +90,9 @@ class LifecycleRule /** * LifecycleRule constructor. * - * @param string $id 规则ID - * @param string $prefix 文件前缀 - * @param string $status 规则状态,可选[self::LIFECYCLE_STATUS_ENABLED, self::LIFECYCLE_STATUS_DISABLED] + * @param string $id rule Id + * @param string $prefix File prefix + * @param string $status Rule status, which has the following valid values: [self::LIFECYCLE_STATUS_ENABLED, self::LIFECYCLE_STATUS_DISABLED] * @param LifecycleAction[] $actions */ public function __construct($id, $prefix, $status, $actions) diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php index bb5093aa8..f4ee02f64 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php @@ -5,7 +5,7 @@ namespace OSS\Model; /** * Class LiveChannelListInfo * - * ListBucketLiveChannels接口返回数据 + * The data returned by ListBucketLiveChannels * * @package OSS\Model * @link http://help.aliyun.com/document_detail/oss/api-reference/bucket/GetBucket.html diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php index 978421a25..ed9fb1dbb 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php @@ -42,7 +42,7 @@ class LoggingConfig implements XmlConfig } /** - * 序列化成xml字符串 + * Serialize to xml string * */ public function serializeToXml() diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php index 2ae6c99bd..891f8625d 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php @@ -6,11 +6,11 @@ namespace OSS\Model; * * Class ObjectInfo * - * listObjects接口中返回的Object列表中的类 + * The element type of ObjectListInfo, which is the return value type of listObjects * - * listObjects接口返回数据中包含两个Array - * 一个是拿到的Object列表【可以理解成对应文件系统中的文件列表】 - * 一个是拿到的Prefix列表【可以理解成对应文件系统中的目录列表】 + * The return value of listObjects includes two arrays + * One is the returned ObjectListInfo, which is similar to a file list in a file system. + * The other is the returned prefix list, which is similar to a folder list in a file system. * * @package OSS\Model */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php index dbe7c7a76..81c5d27b9 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php @@ -5,7 +5,7 @@ namespace OSS\Model; /** * Class ObjectListInfo * - * ListObjects接口返回数据 + * The class of return value of ListObjects * * @package OSS\Model * @link http://help.aliyun.com/document_detail/oss/api-reference/bucket/GetBucket.html @@ -87,7 +87,7 @@ class ObjectListInfo } /** - * 返回ListObjects接口返回数据中的ObjectInfo列表 + * Get the ObjectInfo list. * * @return ObjectInfo[] */ @@ -97,7 +97,7 @@ class ObjectListInfo } /** - * 返回ListObjects接口返回数据中的PrefixInfo列表 + * Get the PrefixInfo list * * @return PrefixInfo[] */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php index e61eac449..27920b9f6 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php @@ -5,10 +5,10 @@ namespace OSS\Model; /** * Class PrefixInfo * - * listObjects接口中返回的Prefix列表中的类 - * listObjects接口返回数据中包含两个Array: - * 一个是拿到的Object列表【可以理解成对应文件系统中的文件列表】 - * 一个是拿到的Prefix列表【可以理解成对应文件系统中的目录列表】 + * ListObjects return Prefix list of classes + * The returned data contains two arrays + * One is to get the list of objects【Can be understood as the corresponding file system file list】 + * One is to get Prefix list【Can be understood as the corresponding file system directory list】 * * @package OSS\Model * @link http://help.aliyun.com/document_detail/oss/api-reference/bucket/GetBucket.html diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php index 1d7d975c5..083014396 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php @@ -29,7 +29,7 @@ class RefererConfig implements XmlConfig /** - * 把RefererConfig序列化成xml + * serialize the RefererConfig object into xml string * * @return string */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php index 05e6332c2..024b5c951 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php @@ -29,7 +29,7 @@ class StorageCapacityConfig implements XmlConfig } /** - * 把StorageCapacityConfig序列化成xml + * Serialize StorageCapacityConfig into xml * * @return string */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php index 8eaa3639f..49aa414e9 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php @@ -5,7 +5,7 @@ namespace OSS\Model; /** * Class UploadInfo * - * ListMultipartUpload接口得到的UploadInfo + * The return value of ListMultipartUpload * * @package OSS\Model */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php index 8ea08a030..e298eb460 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php @@ -40,7 +40,7 @@ class WebsiteConfig implements XmlConfig } /** - * 把WebsiteConfig序列化成xml + * Serialize the WebsiteConfig object into xml string. * * @return string * @throws OssException diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php index d353a2221..8c0a0db1c 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php @@ -10,7 +10,7 @@ interface XmlConfig { /** - * 接口定义,实现此接口的类都需要实现从xml数据解析的函数 + * Interface method: Parse the object from the xml. * * @param string $strXml * @return null @@ -18,7 +18,7 @@ interface XmlConfig public function parseFromXml($strXml); /** - * 接口定义,实现此接口的类,都需要实现把子类序列化成xml字符串的接口 + * Interface method: Serialize the object into xml. * * @return string */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php index 1c090d3d1..daae42c70 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php @@ -17,11 +17,12 @@ use OSS\Result\AclResult; use OSS\Result\BodyResult; use OSS\Result\GetCorsResult; use OSS\Result\GetLifecycleResult; +use OSS\Result\GetLocationResult; use OSS\Result\GetLoggingResult; use OSS\Result\GetRefererResult; +use OSS\Result\GetStorageCapacityResult; use OSS\Result\GetWebsiteResult; use OSS\Result\GetCnameResult; -use OSS\Result\GetLocationResult; use OSS\Result\HeaderResult; use OSS\Result\InitiateMultipartUploadResult; use OSS\Result\ListBucketsResult; @@ -39,9 +40,9 @@ use OSS\Result\GetLiveChannelHistoryResult; use OSS\Result\GetLiveChannelInfoResult; use OSS\Result\GetLiveChannelStatusResult; use OSS\Result\ListLiveChannelResult; -use OSS\Result\GetStorageCapacityResult; use OSS\Result\AppendResult; use OSS\Model\ObjectListInfo; +use OSS\Result\SymlinkResult; use OSS\Result\UploadPartResult; use OSS\Model\BucketListInfo; use OSS\Model\LifecycleConfig; @@ -49,35 +50,33 @@ use OSS\Model\RefererConfig; use OSS\Model\WebsiteConfig; use OSS\Core\OssUtil; use OSS\Model\ListPartsInfo; -use OSS\Result\SymlinkResult; /** * Class OssClient * - * Object Storage Service(OSS) 的客户端类,封装了用户通过OSS API对OSS服务的各种操作, - * 用户通过OssClient实例可以进行Bucket,Object,MultipartUpload, ACL等操作,具体 - * 的接口规则可以参考官方OSS API文档 + * Object Storage Service(OSS)'s client class, which wraps all OSS APIs user could call to talk to OSS. + * Users could do operations on bucket, object, including MultipartUpload or setting ACL via an OSSClient instance. + * For more details, please check out the OSS API document:https://www.alibabacloud.com/help/doc-detail/31947.htm */ class OssClient { /** - * 构造函数 + * Constructor * - * 构造函数有几种情况: - * 1. 一般的时候初始化使用 $ossClient = new OssClient($id, $key, $endpoint) - * 2. 如果使用CNAME的,比如使用的是www.testoss.com,在控制台上做了CNAME的绑定, - * 初始化使用 $ossClient = new OssClient($id, $key, $endpoint, true) - * 3. 如果使用了阿里云SecurityTokenService(STS),获得了AccessKeyID, AccessKeySecret, Token - * 初始化使用 $ossClient = new OssClient($id, $key, $endpoint, false, $token) - * 4. 如果用户使用的endpoint是ip - * 初始化使用 $ossClient = new OssClient($id, $key, “1.2.3.4:8900”) + * There're a few different ways to create an OssClient object: + * 1. Most common one from access Id, access Key and the endpoint: $ossClient = new OssClient($id, $key, $endpoint) + * 2. If the endpoint is the CName (such as www.testoss.com, make sure it's CName binded in the OSS console), + * uses $ossClient = new OssClient($id, $key, $endpoint, true) + * 3. If using Alicloud's security token service (STS), then the AccessKeyId, AccessKeySecret and STS token are all got from STS. + * Use this: $ossClient = new OssClient($id, $key, $endpoint, false, $token) + * 4. If the endpoint is in IP format, you could use this: $ossClient = new OssClient($id, $key, “1.2.3.4:8900”) * - * @param string $accessKeyId 从OSS获得的AccessKeyId - * @param string $accessKeySecret 从OSS获得的AccessKeySecret - * @param string $endpoint 您选定的OSS数据中心访问域名,例如oss-cn-hangzhou.aliyuncs.com - * @param boolean $isCName 是否对Bucket做了域名绑定,并且Endpoint参数填写的是自己的域名 - * @param string $securityToken - * @param string $requestProxy 添加代理支持 + * @param string $accessKeyId The AccessKeyId from OSS or STS + * @param string $accessKeySecret The AccessKeySecret from OSS or STS + * @param string $endpoint The domain name of the datacenter,For example: oss-cn-hangzhou.aliyuncs.com + * @param boolean $isCName If this is the CName and binded in the bucket. + * @param string $securityToken from STS. + * @param string $requestProxy * @throws OssException */ public function __construct($accessKeyId, $accessKeySecret, $endpoint, $isCName = false, $securityToken = NULL, $requestProxy = NULL) @@ -100,12 +99,11 @@ class OssClient $this->accessKeySecret = $accessKeySecret; $this->securityToken = $securityToken; $this->requestProxy = $requestProxy; - self::checkEnv(); } /** - * 列举用户所有的Bucket[GetService], Endpoint类型为cname不能进行此操作 + * Lists the Bucket [GetService]. Not applicable if the endpoint is CName (because CName must be binded to a specific bucket). * * @param array $options * @throws OssException @@ -126,7 +124,7 @@ class OssClient } /** - * 创建bucket,默认创建的bucket的ACL是OssClient::OSS_ACL_TYPE_PRIVATE + * Creates bucket,The ACL of the bucket created by default is OssClient::OSS_ACL_TYPE_PRIVATE * * @param string $bucket * @param string $acl @@ -152,9 +150,9 @@ class OssClient } /** - * 删除bucket - * 如果Bucket不为空(Bucket中有Object,或者有分块上传的碎片),则Bucket无法删除, - * 必须删除Bucket中的所有Object以及碎片后,Bucket才能成功删除。 + * Deletes bucket + * The deletion will not succeed if the bucket is not empty (either has objects or parts) + * To delete a bucket, all its objects and parts must be deleted first. * * @param string $bucket * @param array $options @@ -172,7 +170,7 @@ class OssClient } /** - * 判断bucket是否存在 + * Checks if a bucket exists * * @param string $bucket * @return bool @@ -189,9 +187,9 @@ class OssClient $result = new ExistResult($response); return $result->getData(); } - + /** - * 获取bucket所属的数据中心位置信息 + * Get the data center location information for the bucket * * @param string $bucket * @param array $options @@ -209,27 +207,27 @@ class OssClient $result = new GetLocationResult($response); return $result->getData(); } - + /** - * 获取Bucket的Meta信息 + * Get the Meta information for the Bucket * * @param string $bucket - * @param array $options 具体参考SDK文档 + * @param array $options Refer to the SDK documentation * @return array */ public function getBucketMeta($bucket, $options = NULL) { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; - $options[self::OSS_OBJECT] = '/'; - $response = $this->auth($options); - $result = new HeaderResult($response); - return $result->getData(); + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; + $options[self::OSS_OBJECT] = '/'; + $response = $this->auth($options); + $result = new HeaderResult($response); + return $result->getData(); } /** - * 获取bucket的ACL配置情况 + * Gets the bucket ACL * * @param string $bucket * @param array $options @@ -249,11 +247,11 @@ class OssClient } /** - * 设置bucket的ACL配置情况 + * Sets the bucket ACL * - * @param string $bucket bucket名称 - * @param string $acl 读写权限,可选值 ['private', 'public-read', 'public-read-write'] - * @param array $options 可以为空 + * @param string $bucket bucket name + * @param string $acl access permissions, valid values are ['private', 'public-read', 'public-read-write'] + * @param array $options by default is empty * @throws OssException * @return null */ @@ -271,7 +269,7 @@ class OssClient } /** - * 获取object的ACL属性 + * Gets object ACL * * @param string $bucket * @param string $object @@ -292,11 +290,11 @@ class OssClient } /** - * 设置object的ACL属性 + * Sets the object ACL * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param string $acl 读写权限,可选值 ['default', 'private', 'public-read', 'public-read-write'] + * @param string $bucket bucket name + * @param string $object object name + * @param string $acl access permissions, valid values are ['default', 'private', 'public-read', 'public-read-write'] * @throws OssException * @return null */ @@ -314,10 +312,10 @@ class OssClient } /** - * 获取Bucket的访问日志配置情况 + * Gets the bucket logging config * - * @param string $bucket bucket名称 - * @param array $options 可以为空 + * @param string $bucket bucket name + * @param array $options by default is empty * @throws OssException * @return LoggingConfig */ @@ -334,12 +332,12 @@ class OssClient } /** - * 开启Bucket访问日志记录功能,只有Bucket的所有者才能更改 + * Sets the bycket logging config. Only owner can call this API. * - * @param string $bucket bucket名称 - * @param string $targetBucket 日志文件存放的bucket - * @param string $targetPrefix 日志的文件前缀 - * @param array $options 可以为空 + * @param string $bucket bucket name + * @param string $targetBucket The logging file's bucket + * @param string $targetPrefix The logging file's prefix + * @param array $options By default is empty. * @throws OssException * @return null */ @@ -361,10 +359,10 @@ class OssClient } /** - * 关闭bucket访问日志记录功能 + * Deletes the bucket logging config * - * @param string $bucket bucket名称 - * @param array $options 可以为空 + * @param string $bucket bucket name + * @param array $options * @throws OssException * @return null */ @@ -381,11 +379,11 @@ class OssClient } /** - * 将bucket设置成静态网站托管模式 + * Sets the website config in bucket---that is could make the bucket as a static website once the CName is binded. * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param WebsiteConfig $websiteConfig - * @param array $options 可以为空 + * @param array $options * @throws OssException * @return null */ @@ -404,9 +402,9 @@ class OssClient } /** - * 获取bucket的静态网站托管状态 + * Gets the website config in the bucket * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return WebsiteConfig @@ -424,9 +422,9 @@ class OssClient } /** - * 关闭bucket的静态网站托管模式 + * Deletes the website config in the bucket * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return null @@ -444,10 +442,10 @@ class OssClient } /** - * 在指定的bucket上设定一个跨域资源共享(CORS)的规则,如果原规则存在则覆盖原规则 + * Sets the cross-origin-resource-sharing (CORS) rule. It would overwrite the originl one. * - * @param string $bucket bucket名称 - * @param CorsConfig $corsConfig 跨域资源共享配置,具体规则参见SDK文档 + * @param string $bucket bucket name + * @param CorsConfig $corsConfig CORS config. Check out the details from OSS API document * @param array $options array * @throws OssException * @return null @@ -467,10 +465,10 @@ class OssClient } /** - * 获取Bucket的CORS配置情况 + * Gets the bucket CORS config * - * @param string $bucket bucket名称 - * @param array $options 可以为空 + * @param string $bucket bucket name + * @param array $options * @throws OssException * @return CorsConfig */ @@ -487,9 +485,9 @@ class OssClient } /** - * 关闭指定Bucket对应的CORS功能并清空所有规则 + * Deletes the bucket's CORS config and disable the CORS on the bucket. * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return null @@ -507,9 +505,9 @@ class OssClient } /** - * 为指定Bucket增加CNAME绑定 + * Bind a CName for the bucket * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string $cname * @param array $options * @throws OssException @@ -534,9 +532,9 @@ class OssClient } /** - * 获取指定Bucket已绑定的CNAME列表 + * Gets the binded CName list of the bucket * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return CnameConfig @@ -554,9 +552,9 @@ class OssClient } /** - * 解除指定Bucket的CNAME绑定 + * Remove a CName binding from the bucket * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param CnameConfig $cnameConfig * @param array $options * @throws OssException @@ -581,9 +579,9 @@ class OssClient } /** - * 为指定Bucket创建LiveChannel + * Creates a Live Channel under a bucket * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName * @param LiveChannelConfig $channelConfig * @param array $options @@ -610,11 +608,11 @@ class OssClient } /** - * 设置LiveChannel的status + * Sets the LiveChannel status * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName - * @param string channelStatus $channelStatus 为enabled或disabled + * @param string channelStatus $channelStatus enabled or disabled * @param array $options * @throws OssException * @return null @@ -634,9 +632,9 @@ class OssClient } /** - * 获取LiveChannel信息 + * Gets the LiveChannel information by the channel name * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName * @param array $options * @throws OssException @@ -656,9 +654,9 @@ class OssClient } /** - * 获取LiveChannel状态信息 + * Gets the status of LiveChannel * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName * @param array $options * @throws OssException @@ -679,9 +677,9 @@ class OssClient } /** - *获取LiveChannel推流记录 + * Gets the LiveChannel pushing streaming record * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName * @param array $options * @throws OssException @@ -702,9 +700,9 @@ class OssClient } /** - *获取指定Bucket下的live channel列表 + *Gets the live channel list under a bucket. * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return LiveChannelListInfo @@ -730,12 +728,12 @@ class OssClient } /** - * 为指定LiveChannel生成播放列表 + * Creates a play list file for the LiveChannel * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName - * @param string $playlistName 指定生成的点播播放列表的名称,必须以“.m3u8”结尾 - * @param array $setTime startTime和EndTime以unix时间戳格式给定,跨度不能超过一天 + * @param string $playlistName The playlist name, must end with ".m3u8". + * @param array $setTime startTime and EndTime in unix time. No more than 1 day. * @throws OssException * @return null */ @@ -755,9 +753,9 @@ class OssClient } /** - * 删除指定Bucket的LiveChannel + * Deletes the Bucket LiveChannel * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName * @param array $options * @throws OssException @@ -777,14 +775,14 @@ class OssClient } /** - * 生成带签名的推流地址 + * Generates the signed pushing streaming url * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param string channelName $channelName - * @param int timeout 设置超时时间,单位为秒 + * @param int timeout timeout value in seconds * @param array $options * @throws OssException - * @return 推流地址 + * @return The signed pushing streaming url */ public function signRtmpUrl($bucket, $channelName, $timeout = 60, $options = NULL) { @@ -813,16 +811,16 @@ class OssClient } /** - * 检验跨域资源请求, 发送跨域请求之前会发送一个preflight请求(OPTIONS)并带上特定的来源域, - * HTTP方法和header信息等给OSS以决定是否发送真正的请求。 OSS可以通过putBucketCors接口 - * 来开启Bucket的CORS支持,开启CORS功能之后,OSS在收到浏览器preflight请求时会根据设定的 - * 规则评估是否允许本次请求 + * Precheck the CORS request. Before sending a CORS request, a preflight request (OPTIONS) is sent with the specific origin. + * HTTP METHOD and headers information are sent to OSS as well for evaluating if the CORS request is allowed. + * + * Note: OSS could enable the CORS on the bucket by calling putBucketCors. Once CORS is enabled, the OSS could evaluate accordingto the preflight request. * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param string $origin 请求来源域 - * @param string $request_method 表明实际请求中会使用的HTTP方法 - * @param string $request_headers 表明实际请求中会使用的除了简单头部之外的headers + * @param string $bucket bucket name + * @param string $object object name + * @param string $origin the origin of the request + * @param string $request_method The actual HTTP method which will be used in CORS request + * @param string $request_headers The actual HTTP headers which will be used in CORS request * @param array $options * @return array * @throws OssException @@ -845,10 +843,10 @@ class OssClient } /** - * 设置Bucket的Lifecycle配置 + * Sets the bucket's lifecycle config * - * @param string $bucket bucket名称 - * @param LifecycleConfig $lifecycleConfig Lifecycle配置类 + * @param string $bucket bucket name + * @param LifecycleConfig $lifecycleConfig LifecycleConfig instance * @param array $options * @throws OssException * @return null @@ -868,9 +866,9 @@ class OssClient } /** - * 获取Bucket的Lifecycle配置情况 + * Gets bucket's lifecycle config * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return LifecycleConfig @@ -888,9 +886,9 @@ class OssClient } /** - * 删除指定Bucket的生命周期配置 + * Deletes the bucket's lifecycle config * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return null @@ -908,10 +906,10 @@ class OssClient } /** - * 设置一个bucket的referer访问白名单和是否允许referer字段为空的请求访问 - * Bucket Referer防盗链具体见OSS防盗链 + * Sets a bucket's referer, which has a whitelist of referrer and specifies if empty referer is allowed. + * Checks out API document for more details about "Bucket Referer" * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param RefererConfig $refererConfig * @param array $options * @return ResponseCore @@ -932,10 +930,10 @@ class OssClient } /** - * 获取Bucket的Referer配置情况 - * Bucket Referer防盗链具体见OSS防盗链 + * Gets the bucket's Referer + * Checks out API document for more details about "Bucket Referer" * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return RefererConfig @@ -951,12 +949,13 @@ class OssClient $result = new GetRefererResult($response); return $result->getData(); } - + + /** - * 设置bucket的容量大小,单位GB - * 当bucket的容量大于设置的容量时,禁止继续写入 + * Set the size of the bucket,the unit is GB + * When the capacity of the bucket is bigger than the set, it's forbidden to continue writing * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param int $storageCapacity * @param array $options * @return ResponseCore @@ -976,11 +975,11 @@ class OssClient $result = new PutSetDeleteResult($response); return $result->getData(); } - + /** - * 获取bucket的容量大小,单位GB + * Get the capacity of the bucket, the unit is GB * - * @param string $bucket bucket名称 + * @param string $bucket bucket name * @param array $options * @throws OssException * @return int @@ -997,19 +996,19 @@ class OssClient return $result->getData(); } + /** - * 获取bucket下的object列表 + * Lists the bucket's object list (in ObjectListInfo) * * @param string $bucket - * @param array $options - * 其中options中的参数如下 + * @param array $options are defined below: * $options = array( - * 'max-keys' => max-keys用于限定此次返回object的最大数,如果不设定,默认为100,max-keys取值不能大于1000。 - * 'prefix' => 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。 - * 'delimiter' => 是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素 - * 'marker' => 用户设定结果从marker之后按字母排序的第一个开始返回。 + * 'max-keys' => specifies max object count to return. By default is 100 and max value could be 1000. + * 'prefix' => specifies the key prefix the returned objects must have. Note that the returned keys still contain the prefix. + * 'delimiter' => The delimiter of object name for grouping object. When it's specified, listObjects will differeniate the object and folder. And it will return subfolder's objects. + * 'marker' => The key of returned object must be greater than the 'marker'. *) - * 其中 prefix,marker用来实现分页显示效果,参数的长度必须小于256字节。 + * Prefix and marker are for filtering and paging. Their length must be less than 256 bytes * @throws OssException * @return ObjectListInfo */ @@ -1037,12 +1036,12 @@ class OssClient } /** - * 创建虚拟目录 (本函数会在object名称后增加'/', 所以创建目录的object名称不需要'/'结尾,否则,目录名称会变成'//') + * Creates a virtual 'folder' in OSS. The name should not end with '/' because the method will append the name with a '/' anyway. * - * 暂不开放此接口 + * Internal use only. * - * @param string $bucket bucket名称 - * @param string $object object名称 + * @param string $bucket bucket name + * @param string $object object name * @param array $options * @return null */ @@ -1059,11 +1058,11 @@ class OssClient } /** - * 上传内存中的内容 + * Uploads the $content object to OSS. * - * @param string $bucket bucket名称 - * @param string $object objcet名称 - * @param string $content 上传的内容 + * @param string $bucket bucket name + * @param string $object objcet name + * @param string $content The content object * @param array $options * @return null */ @@ -1102,11 +1101,12 @@ class OssClient return $result->getData(); } + /** - * 创建symlink - * @param string $bucket bucket名称 - * @param string $symlink symlink名称 - * @param string $targetObject 目标object名称 + * creates symlink + * @param string $bucket bucket name + * @param string $symlink symlink name + * @param string $targetObject targetObject name * @param array $options * @return null */ @@ -1126,9 +1126,9 @@ class OssClient } /** - * 获取symlink - *@param string $bucket bucket名称 - * @param string $symlink symlink名称 + * gets symlink + *@param string $bucket bucket name + * @param string $symlink symlink name * @return null */ public function getSymlink($bucket, $symlink) @@ -1146,11 +1146,11 @@ class OssClient } /** - * 上传本地文件 + * Uploads a local file * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param string $file 本地文件路径 + * @param string $bucket bucket name + * @param string $object object name + * @param string $file local file path * @param array $options * @return null * @throws OssException @@ -1183,11 +1183,11 @@ class OssClient } /** - * 追加上传内存中的内容 - * - * @param string $bucket bucket名称 - * @param string $object objcet名称 - * @param string $content 本次追加上传的内容 + * Append the object with the content at the specified position. + * The specified position is typically the lengh of the current file. + * @param string $bucket bucket name + * @param string $object objcet name + * @param string $content content to append * @param array $options * @return int next append position * @throws OssException @@ -1224,11 +1224,11 @@ class OssClient } /** - * 追加上传本地文件 + * Append the object with a local file * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param string $file 追加上传的本地文件路径 + * @param string $bucket bucket name + * @param string $object object name + * @param string $file The local file path to append with * @param array $options * @return int next append position * @throws OssException @@ -1266,12 +1266,12 @@ class OssClient } /** - * 拷贝一个在OSS上已经存在的object成另外一个object + * Copy from an existing OSS object to another OSS object. If the target object exists already, it will be overwritten. * - * @param string $fromBucket 源bucket名称 - * @param string $fromObject 源object名称 - * @param string $toBucket 目标bucket名称 - * @param string $toObject 目标object名称 + * @param string $fromBucket Source bucket name + * @param string $fromObject Source object name + * @param string $toBucket Target bucket name + * @param string $toObject Target object name * @param array $options * @return null * @throws OssException @@ -1294,11 +1294,11 @@ class OssClient } /** - * 获取Object的Meta信息 + * Gets Object metadata * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param string $options 具体参考SDK文档 + * @param string $bucket bucket name + * @param string $object object name + * @param string $options Checks out the SDK document for the detail * @return array */ public function getObjectMeta($bucket, $object, $options = NULL) @@ -1313,10 +1313,10 @@ class OssClient } /** - * 删除某个Object + * Deletes a object * - * @param string $bucket bucket名称 - * @param string $object object名称 + * @param string $bucket bucket name + * @param string $object object name * @param array $options * @return null */ @@ -1332,10 +1332,10 @@ class OssClient } /** - * 删除同一个Bucket中的多个Object + * Deletes multiple objects in a bucket * - * @param string $bucket bucket名称 - * @param array $objects object列表 + * @param string $bucket bucket name + * @param array $objects object list * @param array $options * @return ResponseCore * @throws null @@ -1367,11 +1367,11 @@ class OssClient } /** - * 获得Object内容 + * Gets Object content * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param array $options 该参数中必须设置ALIOSS::OSS_FILE_DOWNLOAD,ALIOSS::OSS_RANGE可选,可以根据实际情况设置;如果不设置,默认会下载全部内容 + * @param string $bucket bucket name + * @param string $object object name + * @param array $options It must contain ALIOSS::OSS_FILE_DOWNLOAD. And ALIOSS::OSS_RANGE is optional and empty means to download the whole file. * @return string */ public function getObject($bucket, $object, $options = NULL) @@ -1399,13 +1399,13 @@ class OssClient } /** - * 检测Object是否存在 - * 通过获取Object的Meta信息来判断Object是否存在, 用户需要自行解析ResponseCore判断object是否存在 + * Checks if the object exists + * It's implemented by getObjectMeta(). * - * @param string $bucket bucket名称 - * @param string $object object名称 + * @param string $bucket bucket name + * @param string $object object name * @param array $options - * @return bool + * @return bool True:object exists; False:object does not exist */ public function doesObjectExist($bucket, $object, $options = NULL) { @@ -1419,11 +1419,11 @@ class OssClient } /** - * 针对Archive类型的Object读取 - * 需要使用Restore操作让服务端执行解冻任务 + * Object reading for Archive type + * Use Restore to enable the server to perform the thawing task * - * @param string $bucket bucket名称 - * @param string $object object名称 + * @param string $bucket bucket name + * @param string $object object name * @return null * @throws OssException */ @@ -1440,8 +1440,9 @@ class OssClient } /** - * 获取分片大小,根据用户提供的part_size,重新计算一个更合理的partsize - * + * Gets the part size according to the preferred part size. + * If the specified part size is too small or too big, it will return a min part or max part size instead. + * Otherwise returns the specified part size. * @param int $partSize * @return int */ @@ -1457,12 +1458,12 @@ class OssClient } /** - * 计算文件可以分成多少个part,以及每个part的长度以及起始位置 - * 方法必须在 中调用 + * Computes the parts count, size and start position according to the file size and the part size. + * It must be only called by upload_Part(). * - * @param integer $file_size 文件大小 - * @param integer $partSize part大小,默认5M - * @return array An array 包含 key-value 键值对. Key 为 `seekTo` 和 `length`. + * @param integer $file_size File size + * @param integer $partSize part大小,part size. Default is 5MB + * @return array An array contains key-value pairs--the key is `seekTo`and value is `length`. */ public function generateMultiuploadParts($file_size, $partSize = 5242880) { @@ -1482,13 +1483,13 @@ class OssClient } /** - * 初始化multi-part upload + * Initialize a multi-part upload * - * @param string $bucket Bucket名称 - * @param string $object Object名称 - * @param array $options Key-Value数组 + * @param string $bucket bucket name + * @param string $object object name + * @param array $options Key-Value array * @throws OssException - * @return string 返回uploadid + * @return string returns uploadid */ public function initiateMultipartUpload($bucket, $object, $options = NULL) { @@ -1511,12 +1512,12 @@ class OssClient } /** - * 分片上传的块上传接口 + * Upload a part in a multiparts upload. * - * @param string $bucket Bucket名称 - * @param string $object Object名称 + * @param string $bucket bucket name + * @param string $object object name * @param string $uploadId - * @param array $options Key-Value数组 + * @param array $options Key-Value array * @return string eTag * @throws OssException */ @@ -1540,12 +1541,12 @@ class OssClient } /** - * 获取已成功上传的part + * Gets the uploaded parts. * - * @param string $bucket Bucket名称 - * @param string $object Object名称 + * @param string $bucket bucket name + * @param string $object object name * @param string $uploadId uploadId - * @param array $options Key-Value数组 + * @param array $options Key-Value array * @return ListPartsInfo * @throws OssException */ @@ -1569,12 +1570,12 @@ class OssClient } /** - * 中止进行一半的分片上传操作 + * Abort a multiparts upload * - * @param string $bucket Bucket名称 - * @param string $object Object名称 + * @param string $bucket bucket name + * @param string $object object name * @param string $uploadId uploadId - * @param array $options Key-Value数组 + * @param array $options Key-Value name * @return null * @throws OssException */ @@ -1591,13 +1592,13 @@ class OssClient } /** - * 在将所有数据Part都上传完成后,调用此接口完成本次分块上传 + * Completes a multiparts upload, after all parts are uploaded. * - * @param string $bucket Bucket名称 - * @param string $object Object名称 + * @param string $bucket bucket name + * @param string $object object name * @param string $uploadId uploadId * @param array $listParts array( array("PartNumber"=> int, "ETag"=>string)) - * @param array $options Key-Value数组 + * @param array $options Key-Value array * @throws OssException * @return null */ @@ -1623,11 +1624,10 @@ class OssClient } /** - * 罗列出所有执行中的Multipart Upload事件,即已经被初始化的Multipart Upload但是未被 - * Complete或者Abort的Multipart Upload事件 + * Lists all ongoing multipart upload events, which means all initialized but not completed or aborted multipart uploads. * * @param string $bucket bucket - * @param array $options 关联数组 + * @param array $options key-value array--expected keys are 'delimiter', 'key-marker', 'max-uploads', 'prefix', 'upload-id-marker' * @throws OssException * @return ListMultipartUploadInfo */ @@ -1657,15 +1657,15 @@ class OssClient } /** - * 从一个已存在的Object中拷贝数据来上传一个Part + * Copy an existing file as a part * - * @param string $fromBucket 源bucket名称 - * @param string $fromObject 源object名称 - * @param string $toBucket 目标bucket名称 - * @param string $toObject 目标object名称 - * @param int $partNumber 分块上传的块id - * @param string $uploadId 初始化multipart upload返回的uploadid - * @param array $options Key-Value数组 + * @param string $fromBucket source bucket name + * @param string $fromObject source object name + * @param string $toBucket target bucket name + * @param string $toObject target object name + * @param int $partNumber Part number + * @param string $uploadId Upload Id + * @param array $options Key-Value array---it should have 'start' or 'end' key to specify the range of the source object to copy. If it's not specifed, the whole object is copied. * @return null * @throws OssException */ @@ -1674,7 +1674,7 @@ class OssClient $this->precheckCommon($fromBucket, $fromObject, $options); $this->precheckCommon($toBucket, $toObject, $options); - //如果没有设置$options['isFullCopy'],则需要强制判断copy的起止位置 + //If $options['isFullCopy'] is not set, copy from the beginning $start_range = "0"; if (isset($options['start'])) { $start_range = $options['start']; @@ -1701,12 +1701,12 @@ class OssClient } /** - * multipart上传统一封装,从初始化到完成multipart,以及出错后中止动作 + * A higher level API for uploading a file with multipart upload. It consists of initialization, parts upload and completion. * - * @param string $bucket bucket名称 - * @param string $object object名称 - * @param string $file 需要上传的本地文件的路径 - * @param array $options Key-Value数组 + * @param string $bucket bucket name + * @param string $object object name + * @param string $file The local file to upload + * @param array $options Key-Value array * @return null * @throws OssException */ @@ -1739,7 +1739,7 @@ class OssClient if ($upload_position === false || !isset($upload_file_size) || $upload_file_size === false || $upload_file_size < 0) { throw new OssException('The size of `fileUpload` cannot be determined in ' . __FUNCTION__ . '().'); } - // 处理partSize + // Computes the part size and assign it to options. if (isset($options[self::OSS_PART_SIZE])) { $options[self::OSS_PART_SIZE] = $this->computePartSize($options[self::OSS_PART_SIZE]); } else { @@ -1747,20 +1747,20 @@ class OssClient } $is_check_md5 = $this->isCheckMD5($options); - // 如果上传的文件小于partSize,则直接使用普通方式上传 + // if the file size is less than part size, use simple file upload. if ($upload_file_size < $options[self::OSS_PART_SIZE] && !isset($options[self::OSS_UPLOAD_ID])) { return $this->uploadFile($bucket, $object, $uploadFile, $options); } - // 初始化multipart + // Using multipart upload, initialize if no OSS_UPLOAD_ID is specified in options. if (isset($options[self::OSS_UPLOAD_ID])) { $uploadId = $options[self::OSS_UPLOAD_ID]; } else { - // 初始化 + // initialize $uploadId = $this->initiateMultipartUpload($bucket, $object, $options); } - // 获取的分片 + // generates the parts information and upload them one by one $pieces = $this->generateMultiuploadParts($upload_file_size, (integer)$options[self::OSS_PART_SIZE]); $response_upload_part = array(); foreach ($pieces as $i => $piece) { @@ -1791,15 +1791,15 @@ class OssClient } /** - * 上传本地目录内的文件或者目录到指定bucket的指定prefix的object中 + * Uploads the local directory to the specified bucket into specified folder (prefix) * - * @param string $bucket bucket名称 - * @param string $prefix 需要上传到的object的key前缀,可以理解成bucket中的子目录,结尾不能是'/',接口中会补充'/' - * @param string $localDirectory 需要上传的本地目录 - * @param string $exclude 需要排除的目录 - * @param bool $recursive 是否递归的上传localDirectory下的子目录内容 + * @param string $bucket bucket name + * @param string $prefix The object key prefix. Typically it's folder name. The name should not end with '/' as the API appends it automatically. + * @param string $localDirectory The local directory to upload + * @param string $exclude To excluded directories + * @param bool $recursive Recursive flag. True: Recursively upload all datas under the local directory; False: only upload first layer's files. * @param bool $checkMd5 - * @return array 返回两个列表 array("succeededList" => array("object"), "failedList" => array("object"=>"errorMessage")) + * @return array Returns two list: array("succeededList" => array("object"), "failedList" => array("object"=>"errorMessage")) * @throws OssException */ public function uploadDir($bucket, $prefix, $localDirectory, $exclude = '.|..|.svn|.git', $recursive = false, $checkMd5 = true) @@ -1810,7 +1810,7 @@ class OssClient if (empty($localDirectory)) throw new OssException("parameter error, localDirectory is empty"); $directory = $localDirectory; $directory = OssUtil::encodePath($directory); - //判断是否目录 + //If it's not the local directory, throw OSSException. if (!is_dir($directory)) { throw new OssException('parameter error: ' . $directory . ' is not a directory, please check it'); } @@ -1840,14 +1840,14 @@ class OssClient } /** - * 支持生成get和put签名, 用户可以生成一个具有一定有效期的 - * 签名过的url + * Sign URL with specified expiration time in seconds (timeout) and HTTP method. + * The signed URL could be used to access the object directly. * * @param string $bucket * @param string $object - * @param int $timeout + * @param int $timeout expiration time in seconds. * @param string $method - * @param array $options Key-Value数组 + * @param array $options Key-Value array * @return string * @throws OssException */ @@ -1872,7 +1872,7 @@ class OssClient } /** - * 检测options参数 + * validates options. Create a empty array if it's NULL. * * @param array $options * @throws OssException @@ -1886,7 +1886,7 @@ class OssClient } /** - * 校验bucket参数 + * Validates bucket parameter * * @param string $bucket * @param string $errMsg @@ -1898,7 +1898,7 @@ class OssClient } /** - * 校验object参数 + * validates object parameter * * @param string $object * @throws OssException @@ -1918,21 +1918,21 @@ class OssClient { if (is_string($storage)) { switch ($storage) { - case self::OSS_STORAGE_ARCHIVE: - return; - case self::OSS_STORAGE_IA: - return; - case self::OSS_STORAGE_STANDARD: - return; - default: - break; + case self::OSS_STORAGE_ARCHIVE: + return; + case self::OSS_STORAGE_IA: + return; + case self::OSS_STORAGE_STANDARD: + return; + default: + break; } } throw new OssException('storage name is invalid'); } /** - * 校验bucket,options参数 + * Validates bucket,options parameters and optionally validate object parameter. * * @param string $bucket * @param string $object @@ -1949,7 +1949,7 @@ class OssClient } /** - * 参数校验 + * checks parameters * * @param array $options * @param string $param @@ -1964,7 +1964,7 @@ class OssClient } /** - * 检测md5 + * Checks md5 * * @param array $options * @return bool|null @@ -1975,7 +1975,7 @@ class OssClient } /** - * 获取value + * Gets value of the specified key from the options * * @param array $options * @param string $key @@ -2006,7 +2006,7 @@ class OssClient } /** - * 获取mimetype类型 + * Gets mimetype * * @param string $object * @return string @@ -2029,7 +2029,7 @@ class OssClient } /** - * 验证并且执行请求,按照OSS Api协议,执行操作 + * Validates and executes the request according to OSS API protocol. * * @param array $options * @return ResponseCore @@ -2039,24 +2039,24 @@ class OssClient private function auth($options) { OssUtil::validateOptions($options); - //验证bucket,list_bucket时不需要验证 + //Validates bucket, not required for list_bucket $this->authPrecheckBucket($options); - //验证object + //Validates object $this->authPrecheckObject($options); - //Object名称的编码必须是utf8 + //object name encoding must be UTF-8 $this->authPrecheckObjectEncoding($options); - //验证ACL + //Validates ACL $this->authPrecheckAcl($options); - // 获得当次请求使用的协议头,是https还是http + // Should https or http be used? $scheme = $this->useSSL ? 'https://' : 'http://'; - // 获得当次请求使用的hostname,如果是公共域名或者专有域名,bucket拼在前面构成三级域名 + // gets the host name. If the host name is public domain or private domain, form a third level domain by prefixing the bucket name on the domain name. $hostname = $this->generateHostname($options[self::OSS_BUCKET]); $string_to_sign = ''; $headers = $this->generateHeaders($options, $hostname); $signable_query_string_params = $this->generateSignableQueryStringParam($options); $signable_query_string = OssUtil::toQueryString($signable_query_string_params); $resource_uri = $this->generateResourceUri($options); - //生成请求URL + //Generates the URL (add query parameters) $conjunction = '?'; $non_signable_resource = ''; if (isset($options[self::OSS_SUB_RESOURCE])) { @@ -2073,7 +2073,7 @@ class OssClient } $this->requestUrl = $scheme . $hostname . $resource_uri . $signable_query_string . $non_signable_resource; - //创建请求 + //Creates the request $request = new RequestCore($this->requestUrl, $this->requestProxy); $request->set_useragent($this->generateUserAgent()); // Streaming uploads @@ -2157,11 +2157,11 @@ class OssClient $string_to_sign .= strtolower($header_key) . ':' . $header_value . "\n"; } } - // 生成 signable_resource + // Generates the signable_resource $signable_resource = $this->generateSignableResource($options); $string_to_sign .= rawurldecode($signable_resource) . urldecode($signable_query_string); - //对?后面的要签名的string字母序排序 + // Sort the strings to be signed. $string_to_sign_ordered = $this->stringToSignSorted($string_to_sign); $signature = base64_encode(hash_hmac('sha1', $string_to_sign_ordered, $this->accessKeySecret, true)); @@ -2196,7 +2196,7 @@ class OssClient //retry if OSS Internal Error if ((integer)$request->get_response_code() === 500) { if ($this->redirects <= $this->maxRetries) { - //设置休眠 + //Sets the sleep time betwen each retry. $delay = (integer)(pow(4, $this->redirects) * 100000); usleep($delay); $this->redirects++; @@ -2209,7 +2209,7 @@ class OssClient } /** - * 设置最大尝试次数 + * Sets the max retry count * * @param int $maxRetries * @return void @@ -2220,7 +2220,7 @@ class OssClient } /** - * 获取最大尝试次数 + * Gets the max retry count * * @return int */ @@ -2230,7 +2230,7 @@ class OssClient } /** - * 打开sts enable标志,使用户构造函数中传入的$sts生效 + * Enaable/disable STS in the URL. This is to determine the $sts value passed from constructor take effect or not. * * @param boolean $enable */ @@ -2256,7 +2256,7 @@ class OssClient } /** - * 检查bucket名称格式是否正确,如果非法抛出异常 + * Validates bucket name--throw OssException if it's invalid * * @param $options * @throws OssException @@ -2270,7 +2270,7 @@ class OssClient /** * - * 检查object名称格式是否正确,如果非法抛出异常 + * Validates the object name--throw OssException if it's invalid. * * @param $options * @throws OssException @@ -2287,9 +2287,9 @@ class OssClient } /** - * 检查object的编码,如果是gbk或者gb2312则尝试将其转化为utf8编码 + * Checks the object's encoding. Convert it to UTF8 if it's in GBK or GB2312 * - * @param mixed $options 参数 + * @param mixed $options parameter */ private function authPrecheckObjectEncoding(&$options) { @@ -2310,7 +2310,7 @@ class OssClient } /** - * 检查ACL是否是预定义中三种之一,如果不是抛出异常 + * Checks if the ACL is one of the 3 predefined one. Throw OSSException if not. * * @param $options * @throws OssException @@ -2325,11 +2325,11 @@ class OssClient } /** - * 获得档次请求使用的域名 - * bucket在前的三级域名,或者二级域名,如果是cname或者ip的话,则是二级域名 + * Gets the host name for the current request. + * It could be either a third level domain (prefixed by bucket name) or second level domain if it's CName or IP * * @param $bucket - * @return string 剥掉协议头的域名 + * @return string The host name without the protocol scheem (e.g. https://) */ private function generateHostname($bucket) { @@ -2338,17 +2338,17 @@ class OssClient } elseif ($this->hostType === self::OSS_HOST_TYPE_CNAME) { $hostname = $this->hostname; } else { - // 专有域或者官网endpoint + // Private domain or public domain $hostname = ($bucket == '') ? $this->hostname : ($bucket . '.') . $this->hostname; } return $hostname; } /** - * 获得当次请求的资源定位字段 + * Gets the resource Uri in the current request * * @param $options - * @return string 资源定位字段 + * @return string return the resource uri. */ private function generateResourceUri($options) { @@ -2375,7 +2375,7 @@ class OssClient } /** - * 生成signalbe_query_string_param, array类型 + * Generates the signalbe query string parameters in array type * * @param array $options * @return array @@ -2416,7 +2416,7 @@ class OssClient } /** - * 生成用于签名resource段 + * Generates the resource uri for signing * * @param mixed $options * @return string @@ -2427,7 +2427,7 @@ class OssClient $signableResource .= '/'; if (isset($options[self::OSS_BUCKET]) && '' !== $options[self::OSS_BUCKET]) { $signableResource .= $options[self::OSS_BUCKET]; - // 如果操作没有Object操作的话,这里最后是否有斜线有个trick,ip的域名下,不需要加'/', 否则需要加'/' + // if there's no object in options, adding a '/' if the host type is not IP.\ if ($options[self::OSS_OBJECT] == '/') { if ($this->hostType !== self::OSS_HOST_TYPE_IP) { $signableResource .= "/"; @@ -2445,14 +2445,14 @@ class OssClient } /** - * 生成query_string + * generates query string * * @param mixed $options * @return string */ private function generateQueryString($options) { - //请求参数 + //query parameters $queryStringParams = array(); if (isset($options[self::OSS_QUERY_STRING])) { $queryStringParams = array_merge($queryStringParams, $options[self::OSS_QUERY_STRING]); @@ -2482,7 +2482,7 @@ class OssClient } /** - * 初始化headers + * Initialize headers * * @param mixed $options * @param string $hostname hostname @@ -2500,11 +2500,11 @@ class OssClient $headers[self::OSS_CONTENT_MD5] = $options[self::OSS_CONTENT_MD5]; } - //添加stsSecurityToken + //Add stsSecurityToken if ((!is_null($this->securityToken)) && (!$this->enableStsInUrl)) { $headers[self::OSS_SECURITY_TOKEN] = $this->securityToken; } - //合并HTTP headers + //Merge HTTP headers if (isset($options[self::OSS_HEADERS])) { $headers = array_merge($headers, $options[self::OSS_HEADERS]); } @@ -2512,7 +2512,7 @@ class OssClient } /** - * 生成请求用的UserAgent + * Generates UserAgent * * @return string */ @@ -2522,13 +2522,12 @@ class OssClient } /** - * 检查endpoint的种类 - * 如有有协议头,剥去协议头 - * 并且根据参数 is_cname 和endpoint本身,判定域名类型,是ip,cname,还是专有域或者官网域名 + * Checks endpoint type and returns the endpoint without the protocol schema. + * Figures out the domain's type (ip, cname or private/public domain). * * @param string $endpoint * @param boolean $isCName - * @return string 剥掉协议头的域名 + * @return string The domain name without the protocol schema. */ private function checkEndpoint($endpoint, $isCName) { @@ -2542,6 +2541,8 @@ class OssClient $ret_endpoint = $endpoint; } + $ret_endpoint = OssUtil::getHostPortFromEndpoint($ret_endpoint); + if ($isCName) { $this->hostType = self::OSS_HOST_TYPE_CNAME; } elseif (OssUtil::isIPFormat($ret_endpoint)) { @@ -2553,14 +2554,14 @@ class OssClient } /** - * 用来检查sdk所以来的扩展是否打开 - * + * Check if all dependent extensions are installed correctly. + * For now only "curl" is needed. * @throws OssException */ public static function checkEnv() { if (function_exists('get_loaded_extensions')) { - //检测curl扩展 + //Test curl extension $enabled_extension = array("curl"); $extensions = get_loaded_extensions(); if ($extensions) { @@ -2578,7 +2579,7 @@ class OssClient } /** - //* 设置http库的请求超时时间,单位秒 + * Sets the http's timeout (in seconds) * * @param int $timeout */ @@ -2588,7 +2589,7 @@ class OssClient } /** - * 设置http库的连接超时时间,单位秒 + * Sets the http's connection timeout (in seconds) * * @param int $connectTimeout */ @@ -2597,11 +2598,11 @@ class OssClient $this->connectTimeout = $connectTimeout; } - // 生命周期相关常量 + // Constants for Life cycle const OSS_LIFECYCLE_EXPIRATION = "Expiration"; const OSS_LIFECYCLE_TIMING_DAYS = "Days"; const OSS_LIFECYCLE_TIMING_DATE = "Date"; - //OSS 内部常量 + //OSS Internal constants const OSS_BUCKET = 'bucket'; const OSS_OBJECT = 'object'; const OSS_HEADERS = OssUtil::OSS_HEADERS; @@ -2670,18 +2671,18 @@ class OssClient const OSS_STORAGE_IA = 'IA'; const OSS_STORAGE_ARCHIVE = 'Archive'; - //私有URL变量 + //private URLs const OSS_URL_ACCESS_KEY_ID = 'OSSAccessKeyId'; const OSS_URL_EXPIRES = 'Expires'; const OSS_URL_SIGNATURE = 'Signature'; - //HTTP方法 + //HTTP METHOD const OSS_HTTP_GET = 'GET'; const OSS_HTTP_PUT = 'PUT'; const OSS_HTTP_HEAD = 'HEAD'; const OSS_HTTP_POST = 'POST'; const OSS_HTTP_DELETE = 'DELETE'; const OSS_HTTP_OPTIONS = 'OPTIONS'; - //其他常量 + //Others const OSS_ACL = 'x-oss-acl'; const OSS_OBJECT_ACL = 'x-oss-object-acl'; const OSS_OBJECT_GROUP = 'x-oss-file-group'; @@ -2692,7 +2693,7 @@ class OssClient const OSS_PROCESS = "x-oss-process"; const OSS_CALLBACK = "x-oss-callback"; const OSS_CALLBACK_VAR = "x-oss-callback-var"; - //支持STS SecurityToken + //Constants for STS SecurityToken const OSS_SECURITY_TOKEN = "x-oss-security-token"; const OSS_ACL_TYPE_PRIVATE = 'private'; const OSS_ACL_TYPE_PUBLIC_READ = 'public-read'; @@ -2700,39 +2701,39 @@ class OssClient const OSS_ENCODING_TYPE = "encoding-type"; const OSS_ENCODING_TYPE_URL = "url"; - // 域名类型 + // Domain Types const OSS_HOST_TYPE_NORMAL = "normal";//http://bucket.oss-cn-hangzhou.aliyuncs.com/object const OSS_HOST_TYPE_IP = "ip"; //http://1.1.1.1/bucket/object const OSS_HOST_TYPE_SPECIAL = 'special'; //http://bucket.guizhou.gov/object const OSS_HOST_TYPE_CNAME = "cname"; //http://mydomain.com/object - //OSS ACL数组 + //OSS ACL array static $OSS_ACL_TYPES = array( self::OSS_ACL_TYPE_PRIVATE, self::OSS_ACL_TYPE_PUBLIC_READ, self::OSS_ACL_TYPE_PUBLIC_READ_WRITE ); - // OssClient版本信息 + // OssClient version information const OSS_NAME = "aliyun-sdk-php"; - const OSS_VERSION = "2.3.0"; - const OSS_BUILD = "20180105"; + const OSS_VERSION = "2.3.1"; + const OSS_BUILD = "20191115"; const OSS_AUTHOR = ""; const OSS_OPTIONS_ORIGIN = 'Origin'; const OSS_OPTIONS_REQUEST_METHOD = 'Access-Control-Request-Method'; const OSS_OPTIONS_REQUEST_HEADERS = 'Access-Control-Request-Headers'; - //是否使用ssl + //use ssl flag private $useSSL = false; private $maxRetries = 3; private $redirects = 0; - // 用户提供的域名类型,有四种 OSS_HOST_TYPE_NORMAL, OSS_HOST_TYPE_IP, OSS_HOST_TYPE_SPECIAL, OSS_HOST_TYPE_CNAME + // user's domain type. It could be one of the four: OSS_HOST_TYPE_NORMAL, OSS_HOST_TYPE_IP, OSS_HOST_TYPE_SPECIAL, OSS_HOST_TYPE_CNAME private $hostType = self::OSS_HOST_TYPE_NORMAL; private $requestUrl; + private $requestProxy = null; private $accessKeyId; private $accessKeySecret; private $hostname; private $securityToken; - private $requestProxy = null; private $enableStsInUrl = false; private $timeout = 0; private $connectTimeout = 0; diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php index 6da086042..7061ff090 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php @@ -5,8 +5,7 @@ namespace OSS\Result; use OSS\Core\OssException; /** - * Class AclResult getBucketAcl接口返回结果类,封装了 - * 返回的xml数据的解析 + * The type of the return value of getBucketAcl, it wraps the data parsed from xml. * * @package OSS\Result */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php index 433c03eb1..d898d585e 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php @@ -11,7 +11,7 @@ use OSS\Core\OssException; class AppendResult extends Result { /** - * 结果中part的next-append-position + * Get the value of next-append-position from append's response headers * * @return int * @throws OssException diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php index f7aa287c8..e9522d4f5 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php @@ -3,8 +3,7 @@ namespace OSS\Result; /** - * Class ExistResult 检查bucket和object是否存在的返回结果, - * 根据返回response的http status判断 + * Class ExistResult checks if bucket or object exists, according to the http status in response headers. * @package OSS\Result */ class ExistResult extends Result @@ -18,8 +17,8 @@ class ExistResult extends Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK, 判断是否存在的接口,404也认为是一种 - * 有效响应 + * Check if the response status is OK according to the http status code. + * [200-299]: OK; [404]: Not found. It means the object or bucket is not found--it's a valid response too. * * @return bool */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php index a51afe2a8..8fb10ea33 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php @@ -18,8 +18,7 @@ class GetCorsResult extends Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 - * 有效响应 + * Check if the response is OK, according to the http status. [200-299]:OK, the Cors config could be got; [404]: not found--no Cors config. * * @return bool */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php index 6b440c352..e0a9595f2 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php @@ -12,7 +12,7 @@ use OSS\Model\LifecycleConfig; class GetLifecycleResult extends Result { /** - * 解析Lifestyle数据 + * Parse the LifecycleConfig object from the response * * @return LifecycleConfig */ @@ -25,8 +25,8 @@ class GetLifecycleResult extends Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 - * 有效响应 + * Check if the response is OK according to the http status. + * [200-299]: OK, and the LifecycleConfig could be got; [404] The Life cycle config is not found. * * @return bool */ @@ -38,4 +38,4 @@ class GetLifecycleResult extends Result } return false; } -} \ No newline at end of file +} diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php index 71c4c96e9..a0c512957 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php @@ -4,8 +4,8 @@ namespace OSS\Result; use OSS\Core\OssException; /** - * Class GetLocationResult getBucketLocation接口返回结果类,封装了 - * 返回的xml数据的解析 + * Class GetLocationResult getBucketLocation interface returns the result class, encapsulated + * The returned xml data is parsed * * @package OSS\Result */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php index 72fc3aeb1..eab8c645f 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php @@ -12,7 +12,7 @@ use OSS\Model\LoggingConfig; class GetLoggingResult extends Result { /** - * 解析LoggingConfig数据 + * Parse LoggingConfig data * * @return LoggingConfig */ @@ -25,8 +25,8 @@ class GetLoggingResult extends Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 - * 有效响应 + * Judged according to the return HTTP status code, [200-299] that is OK, get the bucket configuration interface, + * 404 is also considered a valid response * * @return bool */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php index aee50d3ae..a8a649ebd 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php @@ -12,7 +12,7 @@ use OSS\Model\RefererConfig; class GetRefererResult extends Result { /** - * 解析RefererConfig数据 + * Parse RefererConfig data * * @return RefererConfig */ @@ -25,8 +25,8 @@ class GetRefererResult extends Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 - * 有效响应 + * Judged according to the return HTTP status code, [200-299] that is OK, get the bucket configuration interface, + * 404 is also considered a valid response * * @return bool */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php index 84e491606..2f4127b19 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php @@ -5,8 +5,8 @@ namespace OSS\Result; use OSS\Core\OssException; /** - * Class AclResult getBucketAcl接口返回结果类,封装了 - * 返回的xml数据的解析 + * Class AclResult GetBucketAcl interface returns the result class, encapsulated + * The returned xml data is parsed * * @package OSS\Result */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php index 3099172cd..64d54facb 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php @@ -11,7 +11,7 @@ use OSS\Model\WebsiteConfig; class GetWebsiteResult extends Result { /** - * 解析WebsiteConfig数据 + * Parse WebsiteConfig data * * @return WebsiteConfig */ @@ -24,8 +24,8 @@ class GetWebsiteResult extends Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 - * 有效响应 + * Judged according to the return HTTP status code, [200-299] that is OK, get the bucket configuration interface, + * 404 is also considered a valid response * * @return bool */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php index c9aae561f..1ca4d1a28 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php @@ -11,7 +11,7 @@ namespace OSS\Result; class HeaderResult extends Result { /** - * 把返回的ResponseCore中的header作为返回数据 + * The returned ResponseCore header is used as the return data * * @return array */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php index af985f272..53a15da86 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php @@ -12,7 +12,7 @@ use OSS\Core\OssException; class InitiateMultipartUploadResult extends Result { /** - * 结果中获取uploadId并返回 + * Get uploadId in result and return * * @throws OssException * @return string diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php index bcb20bf59..3220c8616 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php @@ -14,7 +14,7 @@ use OSS\Model\UploadInfo; class ListMultipartUploadResult extends Result { /** - * 解析从ListMultipartUpload接口的返回数据 + * Parse the return data from the ListMultipartUpload interface * * @return ListMultipartUploadInfo */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php index fcf493d25..f44c66a05 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php @@ -14,7 +14,7 @@ use OSS\Model\PrefixInfo; class ListObjectsResult extends Result { /** - * 解析ListObjects接口返回的xml数据 + * Parse the xml data returned by the ListObjects interface * * return ObjectListInfo */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php index fd8a1b863..092d94e0f 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php @@ -13,7 +13,7 @@ use OSS\Model\PartInfo; class ListPartsResult extends Result { /** - * 解析ListParts接口返回的xml数据 + * Parse the xml data returned by the ListParts interface * * @return ListPartsInfo */ diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php index 491256f00..e5d83d377 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php @@ -7,8 +7,8 @@ use OSS\Http\ResponseCore; /** - * Class Result, 操作结果类的基类,不同的请求在处理返回数据的时候有不同的逻辑, - * 具体的解析逻辑推迟到子类实现 + * Class Result, The result class of The operation of the base class, different requests in dealing with the return of data have different logic, + * The specific parsing logic postponed to subclass implementation * * @package OSS\Model */ @@ -29,7 +29,7 @@ abstract class Result } /** - * 获取requestId + * Get requestId * * @return string */ @@ -46,7 +46,7 @@ abstract class Result } /** - * 得到返回数据,不同的请求返回数据格式不同 + * Get the returned data, different request returns the data format is different * * $return mixed */ @@ -56,14 +56,14 @@ abstract class Result } /** - * 由子类实现,不同的请求返回数据有不同的解析逻辑,由子类实现 + * Subclass implementation, different requests return data has different analytical logic, implemented by subclasses * * @return mixed */ abstract protected function parseDataFromResponse(); /** - * 操作是否成功 + * Whether the operation is successful * * @return mixed */ @@ -99,7 +99,7 @@ abstract class Result } /** - * 尝试从body中获取错误Message + * Try to get the error message from body * * @param $body * @return string @@ -117,7 +117,7 @@ abstract class Result } /** - * 尝试从body中获取错误Code + * Try to get the error Code from body * * @param $body * @return string @@ -135,7 +135,7 @@ abstract class Result } /** - * 根据返回http状态码判断,[200-299]即认为是OK + * Judging from the return http status code, [200-299] that is OK * * @return bool */ @@ -149,7 +149,7 @@ abstract class Result } /** - * 返回原始的返回数据 + * Return the original return data * * @return ResponseCore */ @@ -159,15 +159,15 @@ abstract class Result } /** - * 标示请求是否成功 + * Indicate whether the request is successful */ protected $isOk = false; /** - * 由子类解析过的数据 + * Data parsed by subclasses */ protected $parsedData = null; /** - * 存放auth函数返回的原始Response + * Store the original Response returned by the auth function * * @var ResponseCore */ diff --git a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php index a0db00379..337ea2435 100644 --- a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php +++ b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php @@ -17,7 +17,7 @@ class CallbackTest extends TestOssClientBase $this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); /** - * step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id + * step 1. Initialize a block upload event, which is initialized to upload Multipart, get the upload id */ try { $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); @@ -44,11 +44,10 @@ class CallbackTest extends TestOssClientBase /** * step 3. */ - $json = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", "callbackBodyType":"application/json" }'; @@ -78,7 +77,7 @@ class CallbackTest extends TestOssClientBase $this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); /** - * step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id + * step 1. Initialize a block upload event, which is initialized to upload Multipart, get the upload id */ try { $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); @@ -139,8 +138,8 @@ class CallbackTest extends TestOssClientBase { $json = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size}}", "callbackBodyType":"application/json" }'; @@ -151,8 +150,8 @@ class CallbackTest extends TestOssClientBase { $url = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}", "callbackBodyType":"application/x-www-form-urlencoded" }'; @@ -163,8 +162,8 @@ class CallbackTest extends TestOssClientBase { $url = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}" }'; $options = array(OssClient::OSS_CALLBACK => $url); @@ -174,8 +173,8 @@ class CallbackTest extends TestOssClientBase { $json = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"{\" 春水碧于天,画船听雨眠。\":\"垆边人似月,皓腕凝霜雪。\"}", "callbackBodyType":"application/json" }'; @@ -186,8 +185,8 @@ class CallbackTest extends TestOssClientBase { $url = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"春水碧于天,画船听雨眠。垆边人似月,皓腕凝霜雪", "callbackBodyType":"application/x-www-form-urlencoded" }'; @@ -198,8 +197,8 @@ class CallbackTest extends TestOssClientBase { $json = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", "callbackBodyType":"application/json" }'; @@ -218,8 +217,8 @@ class CallbackTest extends TestOssClientBase { $url = '{ - "callbackUrl":"oss-demo.aliyuncs.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", + "callbackUrl":"'.Common::getCallbackUrl().'",'. + ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}", "callbackBodyType":"application/x-www-form-urlencoded" }'; diff --git a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php index 9d7190ccf..152894481 100644 --- a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php +++ b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php @@ -10,14 +10,14 @@ use OSS\Core\OssException; /** * Class Common * - * 示例程序【Samples/*.php】 的Common类,用于获取OssClient实例和其他公用方法 + * Sample program [Samples / *. Php] Common class, used to obtain OssClient instance and other public methods */ class Common { /** - * 根据Config配置,得到一个OssClient实例 + * According to the Config configuration, get an OssClient instance * - * @return OssClient 一个OssClient实例 + * @return OssClient An OssClient instance */ public static function getOssClient() { @@ -39,8 +39,18 @@ class Common return getenv('OSS_BUCKET'); } + public static function getRegion() + { + return getenv('OSS_REGION'); + } + + public static function getCallbackUrl() + { + return getenv('OSS_CALLBACK_URL'); + } + /** - * 工具方法,创建一个bucket + * Tool method, create a bucket */ public static function createBucket() { diff --git a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php index f207ca1ae..d0a2a225f 100644 --- a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php +++ b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php @@ -51,11 +51,11 @@ class OssClientBucketTest extends TestOssClientBase $this->assertTrue($this->ossClient->doesBucketExist($this->bucket)); $this->assertFalse($this->ossClient->doesBucketExist($this->bucket . '-notexist')); - $this->assertEquals($this->ossClient->getBucketLocation($this->bucket), 'oss-us-west-1'); + $this->assertEquals($this->ossClient->getBucketLocation($this->bucket), Common::getRegion()); $res = $this->ossClient->getBucketMeta($this->bucket); $this->assertEquals('200', $res['info']['http_code']); - $this->assertEquals('oss-us-west-1', $res['x-oss-bucket-region']); + $this->assertEquals(Common::getRegion(), $res['x-oss-bucket-region']); } public function testCreateBucketWithStorageType() diff --git a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php index 34e3ded7d..2f1201bb5 100644 --- a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php +++ b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php @@ -78,7 +78,7 @@ class OssClientObjectTest extends TestOssClientBase public function testObject() { /** - * 上传本地变量到bucket + * Upload the local variable to bucket */ $object = "oss-php-sdk-test/upload-test-object-name.txt"; $content = file_get_contents(__FILE__); @@ -129,7 +129,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * getObject到本地变量,检查是否match + * GetObject to the local variable and check for match */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -139,7 +139,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * getObject的前五个字节 + * GetObject first five bytes */ try { $options = array(OssClient::OSS_RANGE => '0-4'); @@ -151,7 +151,7 @@ class OssClientObjectTest extends TestOssClientBase /** - * 上传本地文件到object + * Upload the local file to object */ try { $this->ossClient->uploadFile($this->bucket, $object, __FILE__); @@ -160,7 +160,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 下载文件到本地变量,检查是否match + * Download the file to the local variable and check for match. */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -170,7 +170,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 下载文件到本地文件 + * Download the file to the local file */ $localfile = "upload-test-object-name.txt"; $options = array( @@ -188,7 +188,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 下载文件到本地文件 no such key + * Download the file to the local file. no such key */ $localfile = "upload-test-object-name-no-such-key.txt"; $options = array( @@ -208,7 +208,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 下载文件到内容 no such key + * Download the file to the content. no such key */ try { $result = $this->ossClient->getObject($this->bucket, $object . "no-such-key"); @@ -222,7 +222,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 复制object + * Copy object */ $to_bucket = $this->bucket; $to_object = $object . '.copy'; @@ -239,7 +239,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查复制的是否相同 + * Check if the replication is the same */ try { $content = $this->ossClient->getObject($this->bucket, $to_object); @@ -249,7 +249,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 列出bucket内的文件列表 + * List the files in your bucket. */ $prefix = ''; $delimiter = '/'; @@ -276,7 +276,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 设置文件的meta信息 + * Set the meta information for the file */ $from_bucket = $this->bucket; $from_object = "oss-php-sdk-test/upload-test-object-name.txt"; @@ -295,7 +295,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 获取文件的meta信息 + * Get the meta information for the file */ $object = "oss-php-sdk-test/upload-test-object-name.txt"; try { @@ -306,7 +306,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除单个文件 + * Delete single file */ $object = "oss-php-sdk-test/upload-test-object-name.txt"; @@ -319,7 +319,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除多个个文件 + * Delete multiple files */ $object1 = "oss-php-sdk-test/upload-test-object-name.txt"; $object2 = "oss-php-sdk-test/upload-test-object-name.txt.copy"; @@ -345,7 +345,7 @@ class OssClientObjectTest extends TestOssClientBase $content_array = array('Hello OSS', 'Hi OSS', 'OSS OK'); /** - * 追加上传字符串 + * Append the upload string */ try { $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[0], 0); @@ -359,7 +359,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查内容的是否相同 + * Check if the content is the same */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -370,7 +370,7 @@ class OssClientObjectTest extends TestOssClientBase /** - * 删除测试object + * Delete test object */ try { $this->ossClient->deleteObject($this->bucket, $object); @@ -379,7 +379,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 追加上传本地文件 + * Append the upload of local files */ try { $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, 0); @@ -391,7 +391,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查复制的是否相同 + * Check if the replication is the same */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -401,7 +401,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除测试object + * Delete test object */ try { $this->ossClient->deleteObject($this->bucket, $object); @@ -418,7 +418,7 @@ class OssClientObjectTest extends TestOssClientBase ); /** - * 带option的追加上传 + * Append upload with option */ try { $position = $this->ossClient->appendObject($this->bucket, $object, "Hello OSS, ", 0, $options); @@ -428,7 +428,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 获取文件的meta信息 + * Get the meta information for the file */ try { $objectMeta = $this->ossClient->getObjectMeta($this->bucket, $object); @@ -438,7 +438,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除测试object + * Delete test object */ try { $this->ossClient->deleteObject($this->bucket, $object); @@ -465,7 +465,7 @@ class OssClientObjectTest extends TestOssClientBase $options = array(OssClient::OSS_CHECK_MD5 => true); /** - * 上传数据开启MD5 + * Upload data to start MD5 */ try { $this->ossClient->putObject($this->bucket, $object, $content, $options); @@ -474,7 +474,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查复制的是否相同 + * Check if the replication is the same */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -484,7 +484,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 上传文件开启MD5 + * Upload file to start MD5 */ try { $this->ossClient->uploadFile($this->bucket, $object, __FILE__, $options); @@ -493,7 +493,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查复制的是否相同 + * Check if the replication is the same */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -503,7 +503,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除测试object + * Delete test object */ try { $this->ossClient->deleteObject($this->bucket, $object); @@ -516,7 +516,7 @@ class OssClientObjectTest extends TestOssClientBase $options = array(OssClient::OSS_CHECK_MD5 => true); /** - * 追加上传字符串 + * Append the upload string */ try { $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[0], 0, $options); @@ -530,7 +530,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查内容的是否相同 + * Check if the content is the same */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -540,7 +540,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除测试object + * Delete test object */ try { $this->ossClient->deleteObject($this->bucket, $object); @@ -549,7 +549,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 追加上传本地文件 + * Append upload of local files */ try { $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, 0, $options); @@ -561,7 +561,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 检查复制的是否相同 + * Check if the replication is the same */ try { $content = $this->ossClient->getObject($this->bucket, $object); @@ -571,7 +571,7 @@ class OssClientObjectTest extends TestOssClientBase } /** - * 删除测试object + * delete test object */ try { $this->ossClient->deleteObject($this->bucket, $object); @@ -580,6 +580,16 @@ class OssClientObjectTest extends TestOssClientBase } } + public function testWithInvalidBucketName() + { + try { + $this->ossClient->createBucket("abcefc/", "test-key"); + $this->assertFalse(true); + } catch (OssException $e) { + $this->assertEquals('"abcefc/"bucket name is invalid', $e->getMessage()); + } + } + public function setUp() { parent::setUp(); diff --git a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php index adf645719..c56524967 100644 --- a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php +++ b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php @@ -222,4 +222,30 @@ BBBB; return str_replace("\n", "", str_replace("\r", "", $xml)); } + public function testGetHostPortFromEndpoint() + { + $str = OssUtil::getHostPortFromEndpoint('http://username:password@hostname:80/path?arg=value#anchor'); + $this->assertEquals('hostname:80', $str); + + $str = OssUtil::getHostPortFromEndpoint('hostname:80'); + $this->assertEquals('hostname:80', $str); + + $str = OssUtil::getHostPortFromEndpoint('www.hostname.com'); + $this->assertEquals('www.hostname.com', $str); + + $str = OssUtil::getHostPortFromEndpoint('http://www.hostname.com'); + $this->assertEquals('www.hostname.com', $str); + + $str = OssUtil::getHostPortFromEndpoint('https://www.hostname.com'); + $this->assertEquals('www.hostname.com', $str); + + $str = OssUtil::getHostPortFromEndpoint('192.168.1.10:8080'); + $this->assertEquals('192.168.1.10:8080', $str); + + $str = OssUtil::getHostPortFromEndpoint('http:///path?arg=value#anchor'); + $this->assertEquals('', $str); + + $str = OssUtil::getHostPortFromEndpoint('file://username:password@hostname:80/path?arg=value#anchor'); + $this->assertEquals('hostname:80', $str); + } } diff --git a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php index d257c9485..4a39dfa97 100644 --- a/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php +++ b/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php @@ -53,7 +53,7 @@ class SymlinkTest extends TestOssClientBase $this->ossClient->getObject($bucket, $symlink); $this->assertTrue(false); }catch (OssException $e){ - $this->assertEquals('The symlink target object does not exist', $e->getErrorMessage()); + $this->assertEquals('The specified key does not exist.', $e->getErrorMessage()); } } diff --git a/vendor/autoload.php b/vendor/autoload.php index 847569b06..07fed98fe 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitaf543090a14d5bae306c4ccd766cf053::getLoader(); +return ComposerAutoloaderInitb049d9827cf74891bcac9ffe3dae65b9::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 765cbe707..9d10b1f00 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitaf543090a14d5bae306c4ccd766cf053 +class ComposerAutoloaderInitb049d9827cf74891bcac9ffe3dae65b9 { private static $loader; @@ -19,15 +19,15 @@ class ComposerAutoloaderInitaf543090a14d5bae306c4ccd766cf053 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitaf543090a14d5bae306c4ccd766cf053', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitb049d9827cf74891bcac9ffe3dae65b9', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInitaf543090a14d5bae306c4ccd766cf053', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitb049d9827cf74891bcac9ffe3dae65b9', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitaf543090a14d5bae306c4ccd766cf053::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitb049d9827cf74891bcac9ffe3dae65b9::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -48,19 +48,19 @@ class ComposerAutoloaderInitaf543090a14d5bae306c4ccd766cf053 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitaf543090a14d5bae306c4ccd766cf053::$files; + $includeFiles = Composer\Autoload\ComposerStaticInitb049d9827cf74891bcac9ffe3dae65b9::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequireaf543090a14d5bae306c4ccd766cf053($fileIdentifier, $file); + composerRequireb049d9827cf74891bcac9ffe3dae65b9($fileIdentifier, $file); } return $loader; } } -function composerRequireaf543090a14d5bae306c4ccd766cf053($fileIdentifier, $file) +function composerRequireb049d9827cf74891bcac9ffe3dae65b9($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 0954cb563..a89df4742 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitaf543090a14d5bae306c4ccd766cf053 +class ComposerStaticInitb049d9827cf74891bcac9ffe3dae65b9 { public static $files = array ( '841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php', @@ -321,9 +321,9 @@ class ComposerStaticInitaf543090a14d5bae306c4ccd766cf053 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitaf543090a14d5bae306c4ccd766cf053::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitaf543090a14d5bae306c4ccd766cf053::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitaf543090a14d5bae306c4ccd766cf053::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitb049d9827cf74891bcac9ffe3dae65b9::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitb049d9827cf74891bcac9ffe3dae65b9::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitb049d9827cf74891bcac9ffe3dae65b9::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index fb2fb39d5..5c68788d3 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,24 +1,18 @@ [ { "name": "aliyuncs/oss-sdk-php", - "version": "v2.3.0", - "version_normalized": "2.3.0.0", + "version": "v2.3.1", + "version_normalized": "2.3.1.0", "source": { "type": "git", "url": "https://github.com/aliyun/aliyun-oss-php-sdk.git", - "reference": "e69f57916678458642ac9d2fd341ae78a56996c8" + "reference": "053d7ba9e798e4c09b9c5c1edab153d25ea9643a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/e69f57916678458642ac9d2fd341ae78a56996c8", - "reference": "e69f57916678458642ac9d2fd341ae78a56996c8", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/053d7ba9e798e4c09b9c5c1edab153d25ea9643a", + "reference": "053d7ba9e798e4c09b9c5c1edab153d25ea9643a", + "shasum": "" }, "require": { "php": ">=5.3" @@ -27,7 +21,7 @@ "phpunit/phpunit": "~4.0", "satooshi/php-coveralls": "~1.0" }, - "time": "2018-01-08T06:59:35+00:00", + "time": "2019-11-15T11:05:42+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -61,13 +55,7 @@ "type": "zip", "url": "https://api.github.com/repos/endroid/qr-code/zipball/c9644bec2a9cc9318e98d1437de3c628dcd1ef93", "reference": "c9644bec2a9cc9318e98d1437de3c628dcd1ef93", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "shasum": "" }, "require": { "ext-gd": "*", @@ -118,24 +106,18 @@ }, { "name": "qiniu/php-sdk", - "version": "v7.2.9", - "version_normalized": "7.2.9.0", + "version": "v7.2.10", + "version_normalized": "7.2.10.0", "source": { "type": "git", "url": "https://github.com/qiniu/php-sdk.git", - "reference": "afe7d8715d8a688b1d8d8cdf031240d2363dad90" + "reference": "d89987163f560ebf9dfa5bb25de9bd9b1a3b2bd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/afe7d8715d8a688b1d8d8cdf031240d2363dad90", - "reference": "afe7d8715d8a688b1d8d8cdf031240d2363dad90", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/d89987163f560ebf9dfa5bb25de9bd9b1a3b2bd8", + "reference": "d89987163f560ebf9dfa5bb25de9bd9b1a3b2bd8", + "shasum": "" }, "require": { "php": ">=5.3.3" @@ -144,7 +126,7 @@ "phpunit/phpunit": "~4.0", "squizlabs/php_codesniffer": "~2.3" }, - "time": "2019-07-09T07:55:07+00:00", + "time": "2019-10-28T10:23:23+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -177,29 +159,23 @@ }, { "name": "symfony/options-resolver", - "version": "v3.4.32", - "version_normalized": "3.4.32.0", + "version": "v3.4.35", + "version_normalized": "3.4.35.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a7c00586a9ef70acf0f17085e51c399bf9620e03" + "reference": "b224d20be60e6f7b55cd66914379a13a0b28651a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a7c00586a9ef70acf0f17085e51c399bf9620e03", - "reference": "a7c00586a9ef70acf0f17085e51c399bf9620e03", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b224d20be60e6f7b55cd66914379a13a0b28651a", + "reference": "b224d20be60e6f7b55cd66914379a13a0b28651a", + "shasum": "" }, "require": { "php": "^5.5.9|>=7.0.8" }, - "time": "2019-08-03T21:15:25+00:00", + "time": "2019-10-26T11:02:01+00:00", "type": "library", "extra": { "branch-alias": { @@ -239,24 +215,18 @@ }, { "name": "topthink/framework", - "version": "v5.1.38.1", - "version_normalized": "5.1.38.1", + "version": "v5.1.39", + "version_normalized": "5.1.39.0", "source": { "type": "git", "url": "https://github.com/top-think/framework.git", - "reference": "12d15c29d5d6a972fc8bfc8db005d64d4786028c" + "reference": "5762858f3d58faafb3a39427f8788884b2927007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/12d15c29d5d6a972fc8bfc8db005d64d4786028c", - "reference": "12d15c29d5d6a972fc8bfc8db005d64d4786028c", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/top-think/framework/zipball/5762858f3d58faafb3a39427f8788884b2927007", + "reference": "5762858f3d58faafb3a39427f8788884b2927007", + "shasum": "" }, "require": { "php": ">=5.6.0", @@ -271,7 +241,7 @@ "sebastian/phpcpd": "2.*", "squizlabs/php_codesniffer": "2.*" }, - "time": "2019-08-12T00:58:30+00:00", + "time": "2019-11-17T23:22:02+00:00", "type": "think-framework", "installation-source": "dist", "notification-url": "https://packagist.org/downloads/", @@ -309,13 +279,7 @@ "type": "zip", "url": "https://api.github.com/repos/top-think/think-installer/zipball/f5400a12c60e513911aef41fe443fa6920952675", "reference": "f5400a12c60e513911aef41fe443fa6920952675", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "shasum": "" }, "require": { "composer-plugin-api": "^1.0" @@ -347,29 +311,23 @@ }, { "name": "zoujingli/ip2region", - "version": "v1.0.6", - "version_normalized": "1.0.6.0", + "version": "v1.0.7", + "version_normalized": "1.0.7.0", "source": { "type": "git", "url": "https://github.com/zoujingli/ip2region.git", - "reference": "054b6580f4e1f441ca700939fbddd6c0b8488f7a" + "reference": "f898a7d90cfacd54433de4028190c336164f2ae4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ip2region/zipball/054b6580f4e1f441ca700939fbddd6c0b8488f7a", - "reference": "054b6580f4e1f441ca700939fbddd6c0b8488f7a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/zoujingli/ip2region/zipball/f898a7d90cfacd54433de4028190c336164f2ae4", + "reference": "f898a7d90cfacd54433de4028190c336164f2ae4", + "shasum": "" }, "require": { "php": ">=5.3" }, - "time": "2019-05-18T06:44:34+00:00", + "time": "2019-10-29T09:03:57+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -401,19 +359,13 @@ "source": { "type": "git", "url": "https://github.com/zoujingli/ThinkLibrary.git", - "reference": "770c7466638da1910ccdd99aaf1b8747f7bf53ad" + "reference": "6dbcbc8ae1bcca6b18db58085deaa8f918b242da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/770c7466638da1910ccdd99aaf1b8747f7bf53ad", - "reference": "770c7466638da1910ccdd99aaf1b8747f7bf53ad", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/6dbcbc8ae1bcca6b18db58085deaa8f918b242da", + "reference": "6dbcbc8ae1bcca6b18db58085deaa8f918b242da", + "shasum": "" }, "require": { "aliyuncs/oss-sdk-php": "^2.3", @@ -425,7 +377,7 @@ "qiniu/php-sdk": "^7.2", "topthink/framework": "5.1.*" }, - "time": "2019-10-08T03:10:52+00:00", + "time": "2019-11-20T07:43:10+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -445,24 +397,18 @@ }, { "name": "zoujingli/wechat-developer", - "version": "v1.2.13", - "version_normalized": "1.2.13.0", + "version": "v1.2.14", + "version_normalized": "1.2.14.0", "source": { "type": "git", "url": "https://github.com/zoujingli/WeChatDeveloper.git", - "reference": "5789420f58eb4a506b6dca12bdcf094efd66f892" + "reference": "39d53dd91040517a01d7c7423235f56b47deefa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zoujingli/WeChatDeveloper/zipball/5789420f58eb4a506b6dca12bdcf094efd66f892", - "reference": "5789420f58eb4a506b6dca12bdcf094efd66f892", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "url": "https://api.github.com/repos/zoujingli/WeChatDeveloper/zipball/39d53dd91040517a01d7c7423235f56b47deefa3", + "reference": "39d53dd91040517a01d7c7423235f56b47deefa3", + "shasum": "" }, "require": { "ext-curl": "*", @@ -473,7 +419,7 @@ "ext-simplexml": "*", "php": ">=5.4" }, - "time": "2019-09-16T05:20:21+00:00", + "time": "2019-11-05T02:35:27+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -522,13 +468,7 @@ "type": "zip", "url": "https://api.github.com/repos/zoujingli/WeOpenDeveloper/zipball/4d0d3c064e54556621453845fc65ba52de58a880", "reference": "4d0d3c064e54556621453845fc65ba52de58a880", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] + "shasum": "" }, "require": { "ext-curl": "*", diff --git a/vendor/qiniu/php-sdk/.travis.yml b/vendor/qiniu/php-sdk/.travis.yml index cada8cd09..e4eee7bea 100644 --- a/vendor/qiniu/php-sdk/.travis.yml +++ b/vendor/qiniu/php-sdk/.travis.yml @@ -7,6 +7,8 @@ php: - 5.6 - 7.0 +dist: trusty + before_script: - export QINIU_TEST_ENV="travis" - travis_retry composer self-update diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php index c32475793..9b462f31a 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php @@ -170,23 +170,16 @@ final class CdnManager public static function createTimestampAntiLeechUrl($rawUrl, $encryptKey, $durationInSeconds) { $parsedUrl = parse_url($rawUrl); - $deadline = time() + $durationInSeconds; $expireHex = dechex($deadline); - $path = isset($parsedUrl['path']) ? $parsedUrl['path'] : ''; - $path = implode('/', array_map('rawurlencode', explode('/', $path))); $strToSign = $encryptKey . $path . $expireHex; $signStr = md5($strToSign); - - $url = $parsedUrl['scheme'].'://'.$parsedUrl['host'].$path; - if (isset($parsedUrl['query'])) { - $signedUrl = $url . '&sign=' . $signStr . '&t=' . $expireHex; + $signedUrl = $rawUrl . '&sign=' . $signStr . '&t=' . $expireHex; } else { - $signedUrl = $url . '?sign=' . $signStr . '&t=' . $expireHex; + $signedUrl = $rawUrl . '?sign=' . $signStr . '&t=' . $expireHex; } - return $signedUrl; } } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Config.php b/vendor/qiniu/php-sdk/src/Qiniu/Config.php index ec75df68b..c80cd309f 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Config.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Config.php @@ -3,7 +3,7 @@ namespace Qiniu; final class Config { - const SDK_VER = '7.2.9'; + const SDK_VER = '7.2.10'; const BLOCK_SIZE = 4194304; //4*1024*1024 分块上传块大小,该参数为接口规格,不能修改 diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php b/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php index 0fd0019a4..a7dc11e1e 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Rtc/AppClient.php @@ -33,7 +33,7 @@ class AppClient if (!empty($maxUsers)) { $params['maxUsers'] = $maxUsers; } - if (!empty($noAutoKickUser)) { + if ($noAutoKickUser !== null) { $params['noAutoKickUser'] = $noAutoKickUser; } $body = json_encode($params); @@ -65,7 +65,7 @@ class AppClient if (!empty($maxUsers)) { $params['maxUsers'] = $maxUsers; } - if (!empty($noAutoKickUser)) { + if ($noAutoKickUser !== null) { $params['noAutoKickUser'] = $noAutoKickUser; } if (!empty($mergePublishRtmp)) { diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php b/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php index 592d6ba70..f19a124fb 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Sms/Sms.php @@ -33,7 +33,7 @@ class Sms "signature_id": } */ - public function createSignature(string $signature, string $source, string $pics = null) + public function createSignature($signature, $source, $pics = null) { $params['signature'] = $signature; $params['source'] = $source; @@ -62,7 +62,7 @@ class Sms "signature": string } */ - public function updateSignature(string $id, string $signature, string $source, string $pics = null) + public function updateSignature($id, $signature, $source, $pics = null) { $params['signature'] = $signature; $params['source'] = $source; @@ -96,7 +96,7 @@ class Sms "page_size": int, } */ - public function checkSignature(string $audit_status = null, int $page = 1, int $page_size = 20) + public function checkSignature($audit_status = null, $page = 1, $page_size = 20) { $url = sprintf( @@ -116,7 +116,7 @@ class Sms * id 签名id string 类型,必填, * @retrun : 请求成功 HTTP 状态码为 200 */ - public function deleteSignature(string $id) + public function deleteSignature($id) { $url = $this->baseURL . 'signature/' . $id; list(, $err) = $this->delete($url); @@ -139,11 +139,11 @@ class Sms } */ public function createTemplate( - string $name, - string $template, - string $type, - string $description, - string $signture_id + $name, + $template, + $type, + $description, + $signture_id ) { $params['name'] = $name; $params['template'] = $template; @@ -181,7 +181,7 @@ class Sms "page_size": int } */ - public function queryTemplate(string $audit_status = null, int $page = 1, int $page_size = 20) + public function queryTemplate($audit_status = null, $page = 1, $page_size = 20) { $url = sprintf( @@ -205,11 +205,11 @@ class Sms * @retrun : 请求成功 HTTP 状态码为 200 */ public function updateTemplate( - string $id, - string $name, - string $template, - string $description, - string $signature_id + $id, + $name, + $template, + $description, + $signature_id ) { $params['name'] = $name; $params['template'] = $template; @@ -226,7 +226,7 @@ class Sms * id :模板id string 类型,必填, * @retrun : 请求成功 HTTP 状态码为 200 */ - public function deleteTemplate(string $id) + public function deleteTemplate($id) { $url = $this->baseURL . 'template/' . $id; list(, $err) = $this->delete($url); @@ -243,7 +243,7 @@ class Sms "job_id": string } */ - public function sendMessage(string $template_id, array $mobiles, array $parameters = null) + public function sendMessage($template_id, $mobiles, $parameters = null) { $params['template_id'] = $template_id; $params['mobiles'] = $mobiles; @@ -256,7 +256,7 @@ class Sms return $ret; } - public function imgToBase64(string $img_file) + public function imgToBase64($img_file) { $img_base64 = ''; if (file_exists($img_file)) { diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php index e38f433ea..0a2413dd4 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/BucketManager.php @@ -59,7 +59,7 @@ final class BucketManager $line = 'false', $shared = 'false' ) { - $path = '/v3/buckets?region=' . $region . '&line=' . $line . '&shared=' . $share; + $path = '/v3/buckets?region=' . $region . '&line=' . $line . '&shared=' . $shared; $info = $this->ucPost($path); return $info; } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php index 209df11ad..8fbd504ca 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php @@ -46,7 +46,7 @@ final class UploadManager $data, $params = null, $mime = 'application/octet-stream', - $fname = null + $fname = "default_filename" ) { $params = self::trimParams($params); diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php index 3c45bbdfd..892197da7 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/CdnManagerTest.php @@ -25,7 +25,7 @@ class CdnManagerTest extends \PHPUnit_Framework_TestCase $this->cdnManager = new CdnManager($testAuth); $this->encryptKey = $timestampAntiLeechEncryptKey; - $this->imgUrl = $customDomain . '/24.jpg'; + $this->imgUrl = $customDomain . '/sdktest.png'; } public function testCreateTimestampAntiLeechUrl() diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php index 82990f2a1..5373ab379 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/DownloadTest.php @@ -8,7 +8,7 @@ class DownloadTest extends \PHPUnit_Framework_TestCase public function test() { global $testAuth; - $base_url = 'http://private-res.qiniudn.com/gogopher.jpg'; + $base_url = 'http://sdk.peterpy.cn/gogopher.jpg'; $private_url = $testAuth->privateDownloadUrl($base_url); $response = Client::get($private_url); $this->assertEquals(200, $response->statusCode); @@ -17,7 +17,7 @@ class DownloadTest extends \PHPUnit_Framework_TestCase public function testFop() { global $testAuth; - $base_url = 'http://private-res.qiniudn.com/gogopher.jpg?exif'; + $base_url = 'http://sdk.peterpy.cn/gogopher.jpg?exif'; $private_url = $testAuth->privateDownloadUrl($base_url); $response = Client::get($private_url); $this->assertEquals(200, $response->statusCode); diff --git a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php index e1ea730e8..6cbdb7f76 100644 --- a/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php +++ b/vendor/qiniu/php-sdk/tests/Qiniu/Tests/FopTest.php @@ -8,7 +8,7 @@ class FopTest extends \PHPUnit_Framework_TestCase { public function testExifPub() { - $fop = new Operation('testres.qiniudn.com'); + $fop = new Operation('sdk.peterpy.cn'); list($exif, $error) = $fop->execute('gogopher.jpg', 'exif'); $this->assertNull($error); $this->assertNotNull($exif); diff --git a/vendor/qiniu/php-sdk/tests/bootstrap.php b/vendor/qiniu/php-sdk/tests/bootstrap.php index c300057c2..5cbce3570 100644 --- a/vendor/qiniu/php-sdk/tests/bootstrap.php +++ b/vendor/qiniu/php-sdk/tests/bootstrap.php @@ -21,7 +21,7 @@ $dummyAuth = new Auth($dummyAccessKey, $dummySecretKey); //cdn $timestampAntiLeechEncryptKey = getenv('QINIU_TIMESTAMP_ENCRPTKEY'); -$customDomain = "http://phpsdk.peterpy.cn"; +$customDomain = "http://sdk.peterpy.cn"; $tid = getenv('TRAVIS_JOB_NUMBER'); if (!empty($tid)) { diff --git a/vendor/symfony/options-resolver/OptionsResolver.php b/vendor/symfony/options-resolver/OptionsResolver.php index 8ed03c2af..fd8a603fe 100644 --- a/vendor/symfony/options-resolver/OptionsResolver.php +++ b/vendor/symfony/options-resolver/OptionsResolver.php @@ -734,7 +734,7 @@ class OptionsResolver implements Options // Validate the type of the resolved option if (isset($this->allowedTypes[$option])) { - $valid = false; + $valid = true; $invalidTypes = []; foreach ($this->allowedTypes[$option] as $type) { @@ -746,13 +746,22 @@ class OptionsResolver implements Options } if (!$valid) { - $keys = array_keys($invalidTypes); + $fmtActualValue = $this->formatValue($value); + $fmtAllowedTypes = implode('" or "', $this->allowedTypes[$option]); + $fmtProvidedTypes = implode('|', array_keys($invalidTypes)); - if (1 === \count($keys) && '[]' === substr($keys[0], -2)) { - throw new InvalidOptionsException(sprintf('The option "%s" with value %s is expected to be of type "%s", but one of the elements is of type "%s".', $option, $this->formatValue($value), implode('" or "', $this->allowedTypes[$option]), $keys[0])); + $allowedContainsArrayType = \count(array_filter( + $this->allowedTypes[$option], + function ($item) { + return '[]' === substr(isset(self::$typeAliases[$item]) ? self::$typeAliases[$item] : $item, -2); + } + )) > 0; + + if (\is_array($value) && $allowedContainsArrayType) { + throw new InvalidOptionsException(sprintf('The option "%s" with value %s is expected to be of type "%s", but one of the elements is of type "%s".', $option, $fmtActualValue, $fmtAllowedTypes, $fmtProvidedTypes)); } - throw new InvalidOptionsException(sprintf('The option "%s" with value %s is expected to be of type "%s", but is of type "%s".', $option, $this->formatValue($value), implode('" or "', $this->allowedTypes[$option]), implode('|', array_keys($invalidTypes)))); + throw new InvalidOptionsException(sprintf('The option "%s" with value %s is expected to be of type "%s", but is of type "%s".', $option, $fmtActualValue, $fmtAllowedTypes, $fmtProvidedTypes)); } } @@ -858,21 +867,14 @@ class OptionsResolver implements Options { $type = substr($type, 0, -2); - $suffix = '[]'; - while (\strlen($suffix) <= $level * 2) { - $suffix .= '[]'; - } - if ('[]' === substr($type, -2)) { $success = true; foreach ($value as $item) { if (!\is_array($item)) { - $invalidTypes[$this->formatTypeOf($item, null).$suffix] = true; + $invalidTypes[$this->formatTypeOf($item, null)] = true; - return false; - } - - if (!$this->verifyArrayType($type, $item, $invalidTypes, $level + 1)) { + $success = false; + } elseif (!$this->verifyArrayType($type, $item, $invalidTypes, $level + 1)) { $success = false; } } @@ -880,15 +882,17 @@ class OptionsResolver implements Options return $success; } + $valid = true; + foreach ($value as $item) { if (!self::isValueValidType($type, $item)) { - $invalidTypes[$this->formatTypeOf($item, $type).$suffix] = $value; + $invalidTypes[$this->formatTypeOf($item, $type)] = $value; - return false; + $valid = false; } } - return true; + return $valid; } /** diff --git a/vendor/symfony/options-resolver/Tests/OptionsResolverTest.php b/vendor/symfony/options-resolver/Tests/OptionsResolverTest.php index cbdaaf024..ce90f9379 100644 --- a/vendor/symfony/options-resolver/Tests/OptionsResolverTest.php +++ b/vendor/symfony/options-resolver/Tests/OptionsResolverTest.php @@ -466,7 +466,7 @@ class OptionsResolverTest extends TestCase public function testResolveFailsIfInvalidTypedArray() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[]", but one of the elements is of type "DateTime[]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[]", but one of the elements is of type "DateTime".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'int[]'); @@ -486,9 +486,10 @@ class OptionsResolverTest extends TestCase public function testResolveFailsIfTypedArrayContainsInvalidTypes() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[]", but one of the elements is of type "stdClass[]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[]", but one of the elements is of type "stdClass|array|DateTime".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'int[]'); + $values = range(1, 5); $values[] = new \stdClass(); $values[] = []; @@ -501,7 +502,7 @@ class OptionsResolverTest extends TestCase public function testResolveFailsWithCorrectLevelsButWrongScalar() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[][]", but one of the elements is of type "double[][]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[][]", but one of the elements is of type "double".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'int[][]'); @@ -537,6 +538,11 @@ class OptionsResolverTest extends TestCase [42, 'string', 'The option "option" with value 42 is expected to be of type "string", but is of type "integer".'], [null, 'string', 'The option "option" with value null is expected to be of type "string", but is of type "NULL".'], ['bar', '\stdClass', 'The option "option" with value "bar" is expected to be of type "\stdClass", but is of type "string".'], + [['foo', 12], 'string[]', 'The option "option" with value array is expected to be of type "string[]", but one of the elements is of type "integer".'], + [123, ['string[]', 'string'], 'The option "option" with value 123 is expected to be of type "string[]" or "string", but is of type "integer".'], + [[null], ['string[]', 'string'], 'The option "option" with value array is expected to be of type "string[]" or "string", but one of the elements is of type "NULL".'], + [['string', null], ['string[]', 'string'], 'The option "option" with value array is expected to be of type "string[]" or "string", but one of the elements is of type "NULL".'], + [[\stdClass::class], ['string'], 'The option "option" with value array is expected to be of type "string", but is of type "array".'], ]; } @@ -585,6 +591,7 @@ class OptionsResolverTest extends TestCase new \DateTime(), ], ]; + $result = $this->resolver->resolve($data); $this->assertEquals($data, $result); } @@ -1535,7 +1542,7 @@ class OptionsResolverTest extends TestCase public function testNestedArraysException() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "float[][][][]", but one of the elements is of type "integer[][][][]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "float[][][][]", but one of the elements is of type "integer".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'float[][][][]'); @@ -1553,7 +1560,7 @@ class OptionsResolverTest extends TestCase public function testNestedArrayException1() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[][]", but one of the elements is of type "boolean[][]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[][]", but one of the elements is of type "boolean|string|array".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'int[][]'); $this->resolver->resolve([ @@ -1566,7 +1573,7 @@ class OptionsResolverTest extends TestCase public function testNestedArrayException2() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[][]", but one of the elements is of type "boolean[][]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "int[][]", but one of the elements is of type "boolean|string|array".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'int[][]'); $this->resolver->resolve([ @@ -1579,7 +1586,7 @@ class OptionsResolverTest extends TestCase public function testNestedArrayException3() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "string[][][]", but one of the elements is of type "string[][]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "string[][][]", but one of the elements is of type "string|integer".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'string[][][]'); $this->resolver->resolve([ @@ -1592,7 +1599,7 @@ class OptionsResolverTest extends TestCase public function testNestedArrayException4() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "string[][][]", but one of the elements is of type "integer[][][]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "string[][][]", but one of the elements is of type "integer".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'string[][][]'); $this->resolver->resolve([ @@ -1606,7 +1613,7 @@ class OptionsResolverTest extends TestCase public function testNestedArrayException5() { $this->expectException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException'); - $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "string[]", but one of the elements is of type "array[]".'); + $this->expectExceptionMessage('The option "foo" with value array is expected to be of type "string[]", but one of the elements is of type "array".'); $this->resolver->setDefined('foo'); $this->resolver->setAllowedTypes('foo', 'string[]'); $this->resolver->resolve([ diff --git a/vendor/zoujingli/ip2region/Ip2Region.php b/vendor/zoujingli/ip2region/Ip2Region.php index 196542f68..b16ebbc9a 100644 --- a/vendor/zoujingli/ip2region/Ip2Region.php +++ b/vendor/zoujingli/ip2region/Ip2Region.php @@ -32,7 +32,7 @@ class Ip2Region /** * for memory mode only - * the original db binary string + * the original db binary string */ private $dbBinStr = null; private $dbFile = null; @@ -40,7 +40,7 @@ class Ip2Region /** * construct method * - * @param ip2regionFile + * @param string ip2regionFile */ public function __construct($ip2regionFile = null) { @@ -102,10 +102,10 @@ class Ip2Region } /** - * get the data block throught the specifield ip address or long ip numeric with binary search algorithm + * get the data block through the specified ip address or long ip numeric with binary search algorithm * * @param string ip - * @return mixed Array or NULL for any error + * @return mixed Array or NULL for any error * @throws Exception */ public function binarySearch($ip) @@ -155,11 +155,14 @@ class Ip2Region $dataPtr = ($dataPtr & 0x00FFFFFF); fseek($this->dbFileHandler, $dataPtr); $data = fread($this->dbFileHandler, $dataLen); - return array('city_id' => self::getLong($data, 0), 'region' => substr($data, 4)); + return array( + 'city_id' => self::getLong($data, 0), + 'region' => substr($data, 4), + ); } /** - * get the data block associated with the specifield ip with b-tree search algorithm + * get the data block associated with the specified ip with b-tree search algorithm * @Note: not thread safe * * @param string ip @@ -180,6 +183,7 @@ class Ip2Region } fseek($this->dbFileHandler, 8); $buffer = fread($this->dbFileHandler, TOTAL_HEADER_LENGTH); + //fill the header $idx = 0; $this->HeaderSip = array(); @@ -188,13 +192,13 @@ class Ip2Region $startIp = self::getLong($buffer, $i); $dataPtr = self::getLong($buffer, $i + 4); if ($dataPtr == 0) break; - $this->HeaderSip[] = $startIp; $this->HeaderPtr[] = $dataPtr; $idx++; } $this->headerLen = $idx; } + //1. define the index block with the binary search $l = 0; $h = $this->headerLen; @@ -202,6 +206,7 @@ class Ip2Region $eptr = 0; while ($l <= $h) { $m = (($l + $h) >> 1); + //perfetc matched, just return it if ($ip == $this->HeaderSip[$m]) { if ($m > 0) { @@ -214,6 +219,7 @@ class Ip2Region break; } + //less then the middle value if ($ip < $this->HeaderSip[$m]) { if ($m == 0) { @@ -239,13 +245,16 @@ class Ip2Region $l = $m + 1; } } + //match nothing just stop it if ($sptr == 0) return null; + //2. search the index blocks to define the data $blockLen = $eptr - $sptr; fseek($this->dbFileHandler, $sptr); $index = fread($this->dbFileHandler, $blockLen + INDEX_BLOCK_LENGTH); - $dataptr = 0; + + $dataPtr = 0; $l = 0; $h = $blockLen / INDEX_BLOCK_LENGTH; while ($l <= $h) { @@ -259,27 +268,33 @@ class Ip2Region if ($ip > $eip) { $l = $m + 1; } else { - $dataptr = self::getLong($index, $p + 8); + $dataPtr = self::getLong($index, $p + 8); break; } } } + //not matched - if ($dataptr == 0) return null; + if ($dataPtr == 0) return null; + //3. get the data - $dataLen = (($dataptr >> 24) & 0xFF); - $dataPtr = ($dataptr & 0x00FFFFFF); + $dataLen = (($dataPtr >> 24) & 0xFF); + $dataPtr = ($dataPtr & 0x00FFFFFF); + fseek($this->dbFileHandler, $dataPtr); $data = fread($this->dbFileHandler, $dataLen); - return array('city_id' => self::getLong($data, 0), 'region' => substr($data, 4)); + return array( + 'city_id' => self::getLong($data, 0), + 'region' => substr($data, 4), + ); } - /** * safe self::safeIp2long function * * @param string ip - * @return string + * + * @return false|int|string */ public static function safeIp2long($ip) { @@ -288,17 +303,15 @@ class Ip2Region if ($ip < 0 && PHP_INT_SIZE == 4) { $ip = sprintf("%u", $ip); } - return $ip; } - /** * read a long from a byte buffer * - * @param integer b + * @param string b * @param integer offset - * @return string + * @return int|string */ public static function getLong($b, $offset) { @@ -327,4 +340,4 @@ class Ip2Region $this->HeaderSip = null; $this->HeaderPtr = null; } -} +} \ No newline at end of file diff --git a/vendor/zoujingli/ip2region/ip2region.db b/vendor/zoujingli/ip2region/ip2region.db index 5200febef..6cf58efb2 100644 Binary files a/vendor/zoujingli/ip2region/ip2region.db and b/vendor/zoujingli/ip2region/ip2region.db differ diff --git a/vendor/zoujingli/ip2region/test.php b/vendor/zoujingli/ip2region/test.php index 61bc599be..1279714a6 100644 --- a/vendor/zoujingli/ip2region/test.php +++ b/vendor/zoujingli/ip2region/test.php @@ -3,12 +3,17 @@ require 'Ip2Region.php'; $ip2region = new Ip2Region(); -$ip = '101.105.35.57'; - +$ip = '61.140.232.170'; +echo PHP_EOL; +echo "查询IP:{$ip}" . PHP_EOL; $info = $ip2region->btreeSearch($ip); - var_export($info); +echo PHP_EOL; +$info = $ip2region->memorySearch($ip); +var_export($info); +echo PHP_EOL; + // array ( // 'city_id' => 2163, // 'region' => '中国|华南|广东省|深圳市|鹏博士', diff --git a/vendor/zoujingli/think-library/src/File.php b/vendor/zoujingli/think-library/src/File.php index dbee8848e..8696f141f 100644 --- a/vendor/zoujingli/think-library/src/File.php +++ b/vendor/zoujingli/think-library/src/File.php @@ -115,7 +115,7 @@ class File } throw new Exception("File driver [{$class}] does not exist."); } - + /** * 根据文件后缀获取文件MINE * @param array $ext 文件后缀 @@ -137,17 +137,11 @@ class File */ public static function mines() { - $mines = cache('all_ext_mine'); - if (empty($mines)) { - $content = file_get_contents('http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types'); - preg_match_all('#^([^\s]{2,}?)\s+(.+?)$#ism', $content, $matches, PREG_SET_ORDER); - foreach ($matches as $match) foreach (explode(" ", $match[2]) as $ext) $mines[$ext] = $match[1]; - cache('all_ext_mine', $mines); - } - return $mines; + static $mimes = []; + if (count($mimes) > 0) return $mimes; + return $mimes = include __DIR__ . '/driver/_mime.php'; } - /** * 获取文件相对名称 * @param string $url 文件链接 diff --git a/vendor/zoujingli/think-library/src/common.php b/vendor/zoujingli/think-library/src/common.php index 67c5dd916..8fde00936 100644 --- a/vendor/zoujingli/think-library/src/common.php +++ b/vendor/zoujingli/think-library/src/common.php @@ -232,34 +232,37 @@ if (!function_exists('emoji_clear')) { } } -// 注册跨域中间键 -Middleware::add(function (Request $request, \Closure $next, $header = []) { - if (($origin = $request->header('origin', '*')) !== '*') { - $header['Access-Control-Allow-Origin'] = $origin; - $header['Access-Control-Allow-Methods'] = 'GET,POST,PATCH,PUT,DELETE'; - $header['Access-Control-Allow-Headers'] = 'Authorization,Content-Type,If-Match,If-Modified-Since,If-None-Match,If-Unmodified-Since,X-Requested-With'; - $header['Access-Control-Expose-Headers'] = 'User-Token-Csrf'; +try { + // 注册跨域中间键 + if (PHP_SAPI !== 'cli') { + Middleware::add(function (Request $request, \Closure $next, $header = []) { + if (($origin = $request->header('origin', '*')) !== '*') { + $header['Access-Control-Allow-Origin'] = $origin; + $header['Access-Control-Allow-Methods'] = 'GET,POST,PATCH,PUT,DELETE'; + $header['Access-Control-Allow-Headers'] = 'Authorization,Content-Type,If-Match,If-Modified-Since,If-None-Match,If-Unmodified-Since,X-Requested-With'; + $header['Access-Control-Expose-Headers'] = 'User-Token-Csrf'; + } + if ($request->isOptions()) { + return Response::create()->code(204)->header($header); + } else { + return $next($request)->header($header); + } + }); } - if ($request->isOptions()) { - return Response::create()->code(204)->header($header); - } else { - return $next($request)->header($header); - } -}); - -// 注册系统常用指令 -Console::addDefaultCommands([ - 'library\command\Sess', - 'library\command\task\Stop', - 'library\command\task\State', - 'library\command\task\Start', - // 'library\command\task\Reset', - 'library\command\sync\Admin', - 'library\command\sync\Plugs', - 'library\command\sync\Config', - 'library\command\sync\Wechat', - 'library\command\sync\Service', -]); + // 注册系统常用指令 + Console::addDefaultCommands([ + 'library\command\Sess', + 'library\command\task\Stop', + 'library\command\task\State', + 'library\command\task\Start', + 'library\command\sync\Admin', + 'library\command\sync\Plugs', + 'library\command\sync\Config', + 'library\command\sync\Wechat', + 'library\command\sync\Service', + ]); +} catch (\Exception $exception) { +} // 动态加载模块配置 if (function_exists('think\__include_file')) { diff --git a/vendor/zoujingli/think-library/src/driver/_mime.php b/vendor/zoujingli/think-library/src/driver/_mime.php new file mode 100644 index 000000000..4494e1524 --- /dev/null +++ b/vendor/zoujingli/think-library/src/driver/_mime.php @@ -0,0 +1,1000 @@ + 'application/andrew-inset', + 'aw' => 'application/applixware', + 'atom' => 'application/atom+xml', + 'atomcat' => 'application/atomcat+xml', + 'atomsvc' => 'application/atomsvc+xml', + 'ccxml' => 'application/ccxml+xml', + 'cdmia' => 'application/cdmi-capability', + 'cdmic' => 'application/cdmi-container', + 'cdmid' => 'application/cdmi-domain', + 'cdmio' => 'application/cdmi-object', + 'cdmiq' => 'application/cdmi-queue', + 'cu' => 'application/cu-seeme', + 'davmount' => 'application/davmount+xml', + 'dbk' => 'application/docbook+xml', + 'dssc' => 'application/dssc+der', + 'xdssc' => 'application/dssc+xml', + 'ecma' => 'application/ecmascript', + 'emma' => 'application/emma+xml', + 'epub' => 'application/epub+zip', + 'exi' => 'application/exi', + 'pfr' => 'application/font-tdpfr', + 'gml' => 'application/gml+xml', + 'gpx' => 'application/gpx+xml', + 'gxf' => 'application/gxf', + 'stk' => 'application/hyperstudio', + 'ink' => 'application/inkml+xml', + 'inkml' => 'application/inkml+xml', + 'ipfix' => 'application/ipfix', + 'jar' => 'application/java-archive', + 'ser' => 'application/java-serialized-object', + 'class' => 'application/java-vm', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'jsonml' => 'application/jsonml+json', + 'lostxml' => 'application/lost+xml', + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'mads' => 'application/mads+xml', + 'mrc' => 'application/marc', + 'mrcx' => 'application/marcxml+xml', + 'ma' => 'application/mathematica', + 'nb' => 'application/mathematica', + 'mb' => 'application/mathematica', + 'mathml' => 'application/mathml+xml', + 'mbox' => 'application/mbox', + 'mscml' => 'application/mediaservercontrol+xml', + 'metalink' => 'application/metalink+xml', + 'meta4' => 'application/metalink4+xml', + 'mets' => 'application/mets+xml', + 'mods' => 'application/mods+xml', + 'm21' => 'application/mp21', + 'mp21' => 'application/mp21', + 'mp4s' => 'application/mp4', + 'doc' => 'application/msword', + 'dot' => 'application/msword', + 'mxf' => 'application/mxf', + 'bin' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'lrf' => 'application/octet-stream', + 'mar' => 'application/octet-stream', + 'so' => 'application/octet-stream', + 'dist' => 'application/octet-stream', + 'distz' => 'application/octet-stream', + 'pkg' => 'application/octet-stream', + 'bpk' => 'application/octet-stream', + 'dump' => 'application/octet-stream', + 'elc' => 'application/octet-stream', + 'deploy' => 'application/octet-stream', + 'oda' => 'application/oda', + 'opf' => 'application/oebps-package+xml', + 'ogx' => 'application/ogg', + 'omdoc' => 'application/omdoc+xml', + 'onetoc' => 'application/onenote', + 'onetoc2' => 'application/onenote', + 'onetmp' => 'application/onenote', + 'onepkg' => 'application/onenote', + 'oxps' => 'application/oxps', + 'xer' => 'application/patch-ops-error+xml', + 'pdf' => 'application/pdf', + 'pgp' => 'application/pgp-encrypted', + 'asc' => 'application/pgp-signature', + 'sig' => 'application/pgp-signature', + 'prf' => 'application/pics-rules', + 'p10' => 'application/pkcs10', + 'p7m' => 'application/pkcs7-mime', + 'p7c' => 'application/pkcs7-mime', + 'p7s' => 'application/pkcs7-signature', + 'p8' => 'application/pkcs8', + 'ac' => 'application/pkix-attr-cert', + 'cer' => 'application/pkix-cert', + 'crl' => 'application/pkix-crl', + 'pkipath' => 'application/pkix-pkipath', + 'pki' => 'application/pkixcmp', + 'pls' => 'application/pls+xml', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'cww' => 'application/prs.cww', + 'pskcxml' => 'application/pskc+xml', + 'rdf' => 'application/rdf+xml', + 'rif' => 'application/reginfo+xml', + 'rnc' => 'application/relax-ng-compact-syntax', + 'rl' => 'application/resource-lists+xml', + 'rld' => 'application/resource-lists-diff+xml', + 'rs' => 'application/rls-services+xml', + 'gbr' => 'application/rpki-ghostbusters', + 'mft' => 'application/rpki-manifest', + 'roa' => 'application/rpki-roa', + 'rsd' => 'application/rsd+xml', + 'rss' => 'application/rss+xml', + 'rtf' => 'application/rtf', + 'sbml' => 'application/sbml+xml', + 'scq' => 'application/scvp-cv-request', + 'scs' => 'application/scvp-cv-response', + 'spq' => 'application/scvp-vp-request', + 'spp' => 'application/scvp-vp-response', + 'sdp' => 'application/sdp', + 'setpay' => 'application/set-payment-initiation', + 'setreg' => 'application/set-registration-initiation', + 'shf' => 'application/shf+xml', + 'smi' => 'application/smil+xml', + 'smil' => 'application/smil+xml', + 'rq' => 'application/sparql-query', + 'srx' => 'application/sparql-results+xml', + 'gram' => 'application/srgs', + 'grxml' => 'application/srgs+xml', + 'sru' => 'application/sru+xml', + 'ssdl' => 'application/ssdl+xml', + 'ssml' => 'application/ssml+xml', + 'tei' => 'application/tei+xml', + 'teicorpus' => 'application/tei+xml', + 'tfi' => 'application/thraud+xml', + 'tsd' => 'application/timestamped-data', + 'plb' => 'application/vnd.3gpp.pic-bw-large', + 'psb' => 'application/vnd.3gpp.pic-bw-small', + 'pvb' => 'application/vnd.3gpp.pic-bw-var', + 'tcap' => 'application/vnd.3gpp2.tcap', + 'pwn' => 'application/vnd.3m.post-it-notes', + 'aso' => 'application/vnd.accpac.simply.aso', + 'imp' => 'application/vnd.accpac.simply.imp', + 'acu' => 'application/vnd.acucobol', + 'atc' => 'application/vnd.acucorp', + 'acutc' => 'application/vnd.acucorp', + 'air' => 'application/vnd.adobe.air-application-installer-package+zip', + 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', + 'fxp' => 'application/vnd.adobe.fxp', + 'fxpl' => 'application/vnd.adobe.fxp', + 'xdp' => 'application/vnd.adobe.xdp+xml', + 'xfdf' => 'application/vnd.adobe.xfdf', + 'ahead' => 'application/vnd.ahead.space', + 'azf' => 'application/vnd.airzip.filesecure.azf', + 'azs' => 'application/vnd.airzip.filesecure.azs', + 'azw' => 'application/vnd.amazon.ebook', + 'acc' => 'application/vnd.americandynamics.acc', + 'ami' => 'application/vnd.amiga.ami', + 'apk' => 'application/vnd.android.package-archive', + 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', + 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', + 'atx' => 'application/vnd.antix.game-component', + 'mpkg' => 'application/vnd.apple.installer+xml', + 'm3u8' => 'application/vnd.apple.mpegurl', + 'swi' => 'application/vnd.aristanetworks.swi', + 'iota' => 'application/vnd.astraea-software.iota', + 'aep' => 'application/vnd.audiograph', + 'mpm' => 'application/vnd.blueice.multipass', + 'bmi' => 'application/vnd.bmi', + 'rep' => 'application/vnd.businessobjects', + 'cdxml' => 'application/vnd.chemdraw+xml', + 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', + 'cdy' => 'application/vnd.cinderella', + 'cla' => 'application/vnd.claymore', + 'rp9' => 'application/vnd.cloanto.rp9', + 'c4g' => 'application/vnd.clonk.c4group', + 'c4d' => 'application/vnd.clonk.c4group', + 'c4f' => 'application/vnd.clonk.c4group', + 'c4p' => 'application/vnd.clonk.c4group', + 'c4u' => 'application/vnd.clonk.c4group', + 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', + 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', + 'csp' => 'application/vnd.commonspace', + 'cdbcmsg' => 'application/vnd.contact.cmsg', + 'cmc' => 'application/vnd.cosmocaller', + 'clkx' => 'application/vnd.crick.clicker', + 'clkk' => 'application/vnd.crick.clicker.keyboard', + 'clkp' => 'application/vnd.crick.clicker.palette', + 'clkt' => 'application/vnd.crick.clicker.template', + 'clkw' => 'application/vnd.crick.clicker.wordbank', + 'wbs' => 'application/vnd.criticaltools.wbs+xml', + 'pml' => 'application/vnd.ctc-posml', + 'ppd' => 'application/vnd.cups-ppd', + 'car' => 'application/vnd.curl.car', + 'pcurl' => 'application/vnd.curl.pcurl', + 'dart' => 'application/vnd.dart', + 'rdz' => 'application/vnd.data-vision.rdz', + 'uvf' => 'application/vnd.dece.data', + 'uvvf' => 'application/vnd.dece.data', + 'uvd' => 'application/vnd.dece.data', + 'uvvd' => 'application/vnd.dece.data', + 'uvt' => 'application/vnd.dece.ttml+xml', + 'uvvt' => 'application/vnd.dece.ttml+xml', + 'uvx' => 'application/vnd.dece.unspecified', + 'uvvx' => 'application/vnd.dece.unspecified', + 'uvz' => 'application/vnd.dece.zip', + 'uvvz' => 'application/vnd.dece.zip', + 'fe_launch' => 'application/vnd.denovo.fcselayout-link', + 'dna' => 'application/vnd.dna', + 'mlp' => 'application/vnd.dolby.mlp', + 'dpg' => 'application/vnd.dpgraph', + 'dfac' => 'application/vnd.dreamfactory', + 'kpxx' => 'application/vnd.ds-keypoint', + 'ait' => 'application/vnd.dvb.ait', + 'svc' => 'application/vnd.dvb.service', + 'geo' => 'application/vnd.dynageo', + 'mag' => 'application/vnd.ecowin.chart', + 'nml' => 'application/vnd.enliven', + 'esf' => 'application/vnd.epson.esf', + 'msf' => 'application/vnd.epson.msf', + 'qam' => 'application/vnd.epson.quickanime', + 'slt' => 'application/vnd.epson.salt', + 'ssf' => 'application/vnd.epson.ssf', + 'es3' => 'application/vnd.eszigno3+xml', + 'et3' => 'application/vnd.eszigno3+xml', + 'ez2' => 'application/vnd.ezpix-album', + 'ez3' => 'application/vnd.ezpix-package', + 'fdf' => 'application/vnd.fdf', + 'mseed' => 'application/vnd.fdsn.mseed', + 'seed' => 'application/vnd.fdsn.seed', + 'dataless' => 'application/vnd.fdsn.seed', + 'gph' => 'application/vnd.flographit', + 'ftc' => 'application/vnd.fluxtime.clip', + 'fm' => 'application/vnd.framemaker', + 'frame' => 'application/vnd.framemaker', + 'maker' => 'application/vnd.framemaker', + 'book' => 'application/vnd.framemaker', + 'fnc' => 'application/vnd.frogans.fnc', + 'ltf' => 'application/vnd.frogans.ltf', + 'fsc' => 'application/vnd.fsc.weblaunch', + 'oas' => 'application/vnd.fujitsu.oasys', + 'oa2' => 'application/vnd.fujitsu.oasys2', + 'oa3' => 'application/vnd.fujitsu.oasys3', + 'fg5' => 'application/vnd.fujitsu.oasysgp', + 'bh2' => 'application/vnd.fujitsu.oasysprs', + 'ddd' => 'application/vnd.fujixerox.ddd', + 'xdw' => 'application/vnd.fujixerox.docuworks', + 'xbd' => 'application/vnd.fujixerox.docuworks.binder', + 'fzs' => 'application/vnd.fuzzysheet', + 'txd' => 'application/vnd.genomatix.tuxedo', + 'ggb' => 'application/vnd.geogebra.file', + 'ggt' => 'application/vnd.geogebra.tool', + 'gex' => 'application/vnd.geometry-explorer', + 'gre' => 'application/vnd.geometry-explorer', + 'gxt' => 'application/vnd.geonext', + 'g2w' => 'application/vnd.geoplan', + 'g3w' => 'application/vnd.geospace', + 'gmx' => 'application/vnd.gmx', + 'kml' => 'application/vnd.google-earth.kml+xml', + 'kmz' => 'application/vnd.google-earth.kmz', + 'gqf' => 'application/vnd.grafeq', + 'gqs' => 'application/vnd.grafeq', + 'gac' => 'application/vnd.groove-account', + 'ghf' => 'application/vnd.groove-help', + 'gim' => 'application/vnd.groove-identity-message', + 'grv' => 'application/vnd.groove-injector', + 'gtm' => 'application/vnd.groove-tool-message', + 'tpl' => 'application/vnd.groove-tool-template', + 'vcg' => 'application/vnd.groove-vcard', + 'hal' => 'application/vnd.hal+xml', + 'zmm' => 'application/vnd.handheld-entertainment+xml', + 'hbci' => 'application/vnd.hbci', + 'les' => 'application/vnd.hhe.lesson-player', + 'hpgl' => 'application/vnd.hp-hpgl', + 'hpid' => 'application/vnd.hp-hpid', + 'hps' => 'application/vnd.hp-hps', + 'jlt' => 'application/vnd.hp-jlyt', + 'pcl' => 'application/vnd.hp-pcl', + 'pclxl' => 'application/vnd.hp-pclxl', + 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', + 'mpy' => 'application/vnd.ibm.minipay', + 'afp' => 'application/vnd.ibm.modcap', + 'listafp' => 'application/vnd.ibm.modcap', + 'list3820' => 'application/vnd.ibm.modcap', + 'irm' => 'application/vnd.ibm.rights-management', + 'sc' => 'application/vnd.ibm.secure-container', + 'icc' => 'application/vnd.iccprofile', + 'icm' => 'application/vnd.iccprofile', + 'igl' => 'application/vnd.igloader', + 'ivp' => 'application/vnd.immervision-ivp', + 'ivu' => 'application/vnd.immervision-ivu', + 'igm' => 'application/vnd.insors.igm', + 'xpw' => 'application/vnd.intercon.formnet', + 'xpx' => 'application/vnd.intercon.formnet', + 'i2g' => 'application/vnd.intergeo', + 'qbo' => 'application/vnd.intu.qbo', + 'qfx' => 'application/vnd.intu.qfx', + 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', + 'irp' => 'application/vnd.irepository.package+xml', + 'xpr' => 'application/vnd.is-xpr', + 'fcs' => 'application/vnd.isac.fcs', + 'jam' => 'application/vnd.jam', + 'rms' => 'application/vnd.jcp.javame.midlet-rms', + 'jisp' => 'application/vnd.jisp', + 'joda' => 'application/vnd.joost.joda-archive', + 'ktz' => 'application/vnd.kahootz', + 'ktr' => 'application/vnd.kahootz', + 'karbon' => 'application/vnd.kde.karbon', + 'chrt' => 'application/vnd.kde.kchart', + 'kfo' => 'application/vnd.kde.kformula', + 'flw' => 'application/vnd.kde.kivio', + 'kon' => 'application/vnd.kde.kontour', + 'kpr' => 'application/vnd.kde.kpresenter', + 'kpt' => 'application/vnd.kde.kpresenter', + 'ksp' => 'application/vnd.kde.kspread', + 'kwd' => 'application/vnd.kde.kword', + 'kwt' => 'application/vnd.kde.kword', + 'htke' => 'application/vnd.kenameaapp', + 'kia' => 'application/vnd.kidspiration', + 'kne' => 'application/vnd.kinar', + 'knp' => 'application/vnd.kinar', + 'skp' => 'application/vnd.koan', + 'skd' => 'application/vnd.koan', + 'skt' => 'application/vnd.koan', + 'skm' => 'application/vnd.koan', + 'sse' => 'application/vnd.kodak-descriptor', + 'lasxml' => 'application/vnd.las.las+xml', + 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', + 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', + 123 => 'application/vnd.lotus-1-2-3', + 'apr' => 'application/vnd.lotus-approach', + 'pre' => 'application/vnd.lotus-freelance', + 'nsf' => 'application/vnd.lotus-notes', + 'org' => 'application/vnd.lotus-organizer', + 'scm' => 'application/vnd.lotus-screencam', + 'lwp' => 'application/vnd.lotus-wordpro', + 'portpkg' => 'application/vnd.macports.portpkg', + 'mcd' => 'application/vnd.mcd', + 'mc1' => 'application/vnd.medcalcdata', + 'cdkey' => 'application/vnd.mediastation.cdkey', + 'mwf' => 'application/vnd.mfer', + 'mfm' => 'application/vnd.mfmp', + 'flo' => 'application/vnd.micrografx.flo', + 'igx' => 'application/vnd.micrografx.igx', + 'mif' => 'application/vnd.mif', + 'daf' => 'application/vnd.mobius.daf', + 'dis' => 'application/vnd.mobius.dis', + 'mbk' => 'application/vnd.mobius.mbk', + 'mqy' => 'application/vnd.mobius.mqy', + 'msl' => 'application/vnd.mobius.msl', + 'plc' => 'application/vnd.mobius.plc', + 'txf' => 'application/vnd.mobius.txf', + 'mpn' => 'application/vnd.mophun.application', + 'mpc' => 'application/vnd.mophun.certificate', + 'xul' => 'application/vnd.mozilla.xul+xml', + 'cil' => 'application/vnd.ms-artgalry', + 'cab' => 'application/vnd.ms-cab-compressed', + 'xls' => 'application/vnd.ms-excel', + 'xlm' => 'application/vnd.ms-excel', + 'xla' => 'application/vnd.ms-excel', + 'xlc' => 'application/vnd.ms-excel', + 'xlt' => 'application/vnd.ms-excel', + 'xlw' => 'application/vnd.ms-excel', + 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', + 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', + 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', + 'eot' => 'application/vnd.ms-fontobject', + 'chm' => 'application/vnd.ms-htmlhelp', + 'ims' => 'application/vnd.ms-ims', + 'lrm' => 'application/vnd.ms-lrm', + 'thmx' => 'application/vnd.ms-officetheme', + 'cat' => 'application/vnd.ms-pki.seccat', + 'stl' => 'application/vnd.ms-pki.stl', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pps' => 'application/vnd.ms-powerpoint', + 'pot' => 'application/vnd.ms-powerpoint', + 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', + 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', + 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', + 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', + 'mpp' => 'application/vnd.ms-project', + 'mpt' => 'application/vnd.ms-project', + 'docm' => 'application/vnd.ms-word.document.macroenabled.12', + 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', + 'wps' => 'application/vnd.ms-works', + 'wks' => 'application/vnd.ms-works', + 'wcm' => 'application/vnd.ms-works', + 'wdb' => 'application/vnd.ms-works', + 'wpl' => 'application/vnd.ms-wpl', + 'xps' => 'application/vnd.ms-xpsdocument', + 'mseq' => 'application/vnd.mseq', + 'mus' => 'application/vnd.musician', + 'msty' => 'application/vnd.muvee.style', + 'taglet' => 'application/vnd.mynfc', + 'nlu' => 'application/vnd.neurolanguage.nlu', + 'ntf' => 'application/vnd.nitf', + 'nitf' => 'application/vnd.nitf', + 'nnd' => 'application/vnd.noblenet-directory', + 'nns' => 'application/vnd.noblenet-sealer', + 'nnw' => 'application/vnd.noblenet-web', + 'ngdat' => 'application/vnd.nokia.n-gage.data', + 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', + 'rpst' => 'application/vnd.nokia.radio-preset', + 'rpss' => 'application/vnd.nokia.radio-presets', + 'edm' => 'application/vnd.novadigm.edm', + 'edx' => 'application/vnd.novadigm.edx', + 'ext' => 'application/vnd.novadigm.ext', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odft' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'xo' => 'application/vnd.olpc-sugar', + 'dd2' => 'application/vnd.oma.dd2+xml', + 'oxt' => 'application/vnd.openofficeorg.extension', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'mgp' => 'application/vnd.osgeo.mapguide.package', + 'dp' => 'application/vnd.osgi.dp', + 'esa' => 'application/vnd.osgi.subsystem', + 'pdb' => 'application/vnd.palm', + 'pqa' => 'application/vnd.palm', + 'oprc' => 'application/vnd.palm', + 'paw' => 'application/vnd.pawaafile', + 'str' => 'application/vnd.pg.format', + 'ei6' => 'application/vnd.pg.osasli', + 'efif' => 'application/vnd.picsel', + 'wg' => 'application/vnd.pmi.widget', + 'plf' => 'application/vnd.pocketlearn', + 'pbd' => 'application/vnd.powerbuilder6', + 'box' => 'application/vnd.previewsystems.box', + 'mgz' => 'application/vnd.proteus.magazine', + 'qps' => 'application/vnd.publishare-delta-tree', + 'ptid' => 'application/vnd.pvi.ptid1', + 'qxd' => 'application/vnd.quark.quarkxpress', + 'qxt' => 'application/vnd.quark.quarkxpress', + 'qwd' => 'application/vnd.quark.quarkxpress', + 'qwt' => 'application/vnd.quark.quarkxpress', + 'qxl' => 'application/vnd.quark.quarkxpress', + 'qxb' => 'application/vnd.quark.quarkxpress', + 'bed' => 'application/vnd.realvnc.bed', + 'mxl' => 'application/vnd.recordare.musicxml', + 'musicxml' => 'application/vnd.recordare.musicxml+xml', + 'cryptonote' => 'application/vnd.rig.cryptonote', + 'cod' => 'application/vnd.rim.cod', + 'rm' => 'application/vnd.rn-realmedia', + 'rmvb' => 'application/vnd.rn-realmedia-vbr', + 'link66' => 'application/vnd.route66.link66+xml', + 'st' => 'application/vnd.sailingtracker.track', + 'see' => 'application/vnd.seemail', + 'sema' => 'application/vnd.sema', + 'semd' => 'application/vnd.semd', + 'semf' => 'application/vnd.semf', + 'ifm' => 'application/vnd.shana.informed.formdata', + 'itp' => 'application/vnd.shana.informed.formtemplate', + 'iif' => 'application/vnd.shana.informed.interchange', + 'ipk' => 'application/vnd.shana.informed.package', + 'twd' => 'application/vnd.simtech-mindmapper', + 'twds' => 'application/vnd.simtech-mindmapper', + 'mmf' => 'application/vnd.smaf', + 'teacher' => 'application/vnd.smart.teacher', + 'sdkm' => 'application/vnd.solent.sdkm+xml', + 'sdkd' => 'application/vnd.solent.sdkm+xml', + 'dxp' => 'application/vnd.spotfire.dxp', + 'sfs' => 'application/vnd.spotfire.sfs', + 'sdc' => 'application/vnd.stardivision.calc', + 'sda' => 'application/vnd.stardivision.draw', + 'sdd' => 'application/vnd.stardivision.impress', + 'smf' => 'application/vnd.stardivision.math', + 'sdw' => 'application/vnd.stardivision.writer', + 'vor' => 'application/vnd.stardivision.writer', + 'sgl' => 'application/vnd.stardivision.writer-global', + 'smzip' => 'application/vnd.stepmania.package', + 'sm' => 'application/vnd.stepmania.stepchart', + 'sxc' => 'application/vnd.sun.xml.calc', + 'stc' => 'application/vnd.sun.xml.calc.template', + 'sxd' => 'application/vnd.sun.xml.draw', + 'std' => 'application/vnd.sun.xml.draw.template', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sti' => 'application/vnd.sun.xml.impress.template', + 'sxm' => 'application/vnd.sun.xml.math', + 'sxw' => 'application/vnd.sun.xml.writer', + 'sxg' => 'application/vnd.sun.xml.writer.global', + 'stw' => 'application/vnd.sun.xml.writer.template', + 'sus' => 'application/vnd.sus-calendar', + 'susp' => 'application/vnd.sus-calendar', + 'svd' => 'application/vnd.svd', + 'sis' => 'application/vnd.symbian.install', + 'sisx' => 'application/vnd.symbian.install', + 'xsm' => 'application/vnd.syncml+xml', + 'bdm' => 'application/vnd.syncml.dm+wbxml', + 'xdm' => 'application/vnd.syncml.dm+xml', + 'tao' => 'application/vnd.tao.intent-module-archive', + 'pcap' => 'application/vnd.tcpdump.pcap', + 'cap' => 'application/vnd.tcpdump.pcap', + 'dmp' => 'application/vnd.tcpdump.pcap', + 'tmo' => 'application/vnd.tmobile-livetv', + 'tpt' => 'application/vnd.trid.tpt', + 'mxs' => 'application/vnd.triscape.mxs', + 'tra' => 'application/vnd.trueapp', + 'ufd' => 'application/vnd.ufdl', + 'ufdl' => 'application/vnd.ufdl', + 'utz' => 'application/vnd.uiq.theme', + 'umj' => 'application/vnd.umajin', + 'unityweb' => 'application/vnd.unity', + 'uoml' => 'application/vnd.uoml+xml', + 'vcx' => 'application/vnd.vcx', + 'vsd' => 'application/vnd.visio', + 'vst' => 'application/vnd.visio', + 'vss' => 'application/vnd.visio', + 'vsw' => 'application/vnd.visio', + 'vis' => 'application/vnd.visionary', + 'vsf' => 'application/vnd.vsf', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'wtb' => 'application/vnd.webturbo', + 'nbp' => 'application/vnd.wolfram.player', + 'wpd' => 'application/vnd.wordperfect', + 'wqd' => 'application/vnd.wqd', + 'stf' => 'application/vnd.wt.stf', + 'xar' => 'application/vnd.xara', + 'xfdl' => 'application/vnd.xfdl', + 'hvd' => 'application/vnd.yamaha.hv-dic', + 'hvs' => 'application/vnd.yamaha.hv-script', + 'hvp' => 'application/vnd.yamaha.hv-voice', + 'osf' => 'application/vnd.yamaha.openscoreformat', + 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', + 'saf' => 'application/vnd.yamaha.smaf-audio', + 'spf' => 'application/vnd.yamaha.smaf-phrase', + 'cmp' => 'application/vnd.yellowriver-custom-menu', + 'zir' => 'application/vnd.zul', + 'zirz' => 'application/vnd.zul', + 'zaz' => 'application/vnd.zzazz.deck+xml', + 'vxml' => 'application/voicexml+xml', + 'wgt' => 'application/widget', + 'hlp' => 'application/winhlp', + 'wsdl' => 'application/wsdl+xml', + 'wspolicy' => 'application/wspolicy+xml', + '7z' => 'application/x-7z-compressed', + 'abw' => 'application/x-abiword', + 'ace' => 'application/x-ace-compressed', + 'dmg' => 'application/x-apple-diskimage', + 'aab' => 'application/x-authorware-bin', + 'x32' => 'application/x-authorware-bin', + 'u32' => 'application/x-authorware-bin', + 'vox' => 'application/x-authorware-bin', + 'aam' => 'application/x-authorware-map', + 'aas' => 'application/x-authorware-seg', + 'bcpio' => 'application/x-bcpio', + 'torrent' => 'application/x-bittorrent', + 'blb' => 'application/x-blorb', + 'blorb' => 'application/x-blorb', + 'bz' => 'application/x-bzip', + 'bz2' => 'application/x-bzip2', + 'boz' => 'application/x-bzip2', + 'cbr' => 'application/x-cbr', + 'cba' => 'application/x-cbr', + 'cbt' => 'application/x-cbr', + 'cbz' => 'application/x-cbr', + 'cb7' => 'application/x-cbr', + 'vcd' => 'application/x-cdlink', + 'cfs' => 'application/x-cfs-compressed', + 'chat' => 'application/x-chat', + 'pgn' => 'application/x-chess-pgn', + 'nsc' => 'application/x-conference', + 'cpio' => 'application/x-cpio', + 'csh' => 'application/x-csh', + 'deb' => 'application/x-debian-package', + 'udeb' => 'application/x-debian-package', + 'dgc' => 'application/x-dgc-compressed', + 'dir' => 'application/x-director', + 'dcr' => 'application/x-director', + 'dxr' => 'application/x-director', + 'cst' => 'application/x-director', + 'cct' => 'application/x-director', + 'cxt' => 'application/x-director', + 'w3d' => 'application/x-director', + 'fgd' => 'application/x-director', + 'swa' => 'application/x-director', + 'wad' => 'application/x-doom', + 'ncx' => 'application/x-dtbncx+xml', + 'dtb' => 'application/x-dtbook+xml', + 'res' => 'application/x-dtbresource+xml', + 'dvi' => 'application/x-dvi', + 'evy' => 'application/x-envoy', + 'eva' => 'application/x-eva', + 'bdf' => 'application/x-font-bdf', + 'gsf' => 'application/x-font-ghostscript', + 'psf' => 'application/x-font-linux-psf', + 'pcf' => 'application/x-font-pcf', + 'snf' => 'application/x-font-snf', + 'pfa' => 'application/x-font-type1', + 'pfb' => 'application/x-font-type1', + 'pfm' => 'application/x-font-type1', + 'afm' => 'application/x-font-type1', + 'arc' => 'application/x-freearc', + 'spl' => 'application/x-futuresplash', + 'gca' => 'application/x-gca-compressed', + 'ulx' => 'application/x-glulx', + 'gnumeric' => 'application/x-gnumeric', + 'gramps' => 'application/x-gramps-xml', + 'gtar' => 'application/x-gtar', + 'hdf' => 'application/x-hdf', + 'install' => 'application/x-install-instructions', + 'iso' => 'application/x-iso9660-image', + 'jnlp' => 'application/x-java-jnlp-file', + 'latex' => 'application/x-latex', + 'lzh' => 'application/x-lzh-compressed', + 'lha' => 'application/x-lzh-compressed', + 'mie' => 'application/x-mie', + 'prc' => 'application/x-mobipocket-ebook', + 'mobi' => 'application/x-mobipocket-ebook', + 'application' => 'application/x-ms-application', + 'lnk' => 'application/x-ms-shortcut', + 'wmd' => 'application/x-ms-wmd', + 'wmz' => 'application/x-msmetafile', + 'xbap' => 'application/x-ms-xbap', + 'mdb' => 'application/x-msaccess', + 'obd' => 'application/x-msbinder', + 'crd' => 'application/x-mscardfile', + 'clp' => 'application/x-msclip', + 'exe' => 'application/x-msdownload', + 'dll' => 'application/x-msdownload', + 'com' => 'application/x-msdownload', + 'bat' => 'application/x-msdownload', + 'msi' => 'application/x-msdownload', + 'mvb' => 'application/x-msmediaview', + 'm13' => 'application/x-msmediaview', + 'm14' => 'application/x-msmediaview', + 'wmf' => 'application/x-msmetafile', + 'emf' => 'application/x-msmetafile', + 'emz' => 'application/x-msmetafile', + 'mny' => 'application/x-msmoney', + 'pub' => 'application/x-mspublisher', + 'scd' => 'application/x-msschedule', + 'trm' => 'application/x-msterminal', + 'wri' => 'application/x-mswrite', + 'nc' => 'application/x-netcdf', + 'cdf' => 'application/x-netcdf', + 'nzb' => 'application/x-nzb', + 'p12' => 'application/x-pkcs12', + 'pfx' => 'application/x-pkcs12', + 'p7b' => 'application/x-pkcs7-certificates', + 'spc' => 'application/x-pkcs7-certificates', + 'p7r' => 'application/x-pkcs7-certreqresp', + 'rar' => 'application/x-rar-compressed', + 'ris' => 'application/x-research-info-systems', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'swf' => 'application/x-shockwave-flash', + 'xap' => 'application/x-silverlight-app', + 'sql' => 'application/x-sql', + 'sit' => 'application/x-stuffit', + 'sitx' => 'application/x-stuffitx', + 'srt' => 'application/x-subrip', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 't3' => 'application/x-t3vm-image', + 'gam' => 'application/x-tads', + 'tar' => 'application/x-tar', + 'tcl' => 'application/x-tcl', + 'tex' => 'application/x-tex', + 'tfm' => 'application/x-tex-tfm', + 'texinfo' => 'application/x-texinfo', + 'texi' => 'application/x-texinfo', + 'obj' => 'application/x-tgif', + 'ustar' => 'application/x-ustar', + 'src' => 'application/x-wais-source', + 'der' => 'application/x-x509-ca-cert', + 'crt' => 'application/x-x509-ca-cert', + 'fig' => 'application/x-xfig', + 'xlf' => 'application/x-xliff+xml', + 'xpi' => 'application/x-xpinstall', + 'xz' => 'application/x-xz', + 'z1' => 'application/x-zmachine', + 'z2' => 'application/x-zmachine', + 'z3' => 'application/x-zmachine', + 'z4' => 'application/x-zmachine', + 'z5' => 'application/x-zmachine', + 'z6' => 'application/x-zmachine', + 'z7' => 'application/x-zmachine', + 'z8' => 'application/x-zmachine', + 'xaml' => 'application/xaml+xml', + 'xdf' => 'application/xcap-diff+xml', + 'xenc' => 'application/xenc+xml', + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'xml' => 'application/xml', + 'xsl' => 'application/xml', + 'dtd' => 'application/xml-dtd', + 'xop' => 'application/xop+xml', + 'xpl' => 'application/xproc+xml', + 'xslt' => 'application/xslt+xml', + 'xspf' => 'application/xspf+xml', + 'mxml' => 'application/xv+xml', + 'xhvml' => 'application/xv+xml', + 'xvml' => 'application/xv+xml', + 'xvm' => 'application/xv+xml', + 'yang' => 'application/yang', + 'yin' => 'application/yin+xml', + 'zip' => 'application/zip', + 'adp' => 'audio/adpcm', + 'au' => 'audio/basic', + 'snd' => 'audio/basic', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'kar' => 'audio/midi', + 'rmi' => 'audio/midi', + 'm4a' => 'audio/mp4', + 'mp4a' => 'audio/mp4', + 'mpga' => 'audio/mpeg', + 'mp2' => 'audio/mpeg', + 'mp2a' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'm2a' => 'audio/mpeg', + 'm3a' => 'audio/mpeg', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'spx' => 'audio/ogg', + 's3m' => 'audio/s3m', + 'sil' => 'audio/silk', + 'uva' => 'audio/vnd.dece.audio', + 'uvva' => 'audio/vnd.dece.audio', + 'eol' => 'audio/vnd.digital-winds', + 'dra' => 'audio/vnd.dra', + 'dts' => 'audio/vnd.dts', + 'dtshd' => 'audio/vnd.dts.hd', + 'lvp' => 'audio/vnd.lucent.voice', + 'pya' => 'audio/vnd.ms-playready.media.pya', + 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', + 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', + 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', + 'rip' => 'audio/vnd.rip', + 'weba' => 'audio/webm', + 'aac' => 'audio/x-aac', + 'aif' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'caf' => 'audio/x-caf', + 'flac' => 'audio/x-flac', + 'mka' => 'audio/x-matroska', + 'm3u' => 'audio/x-mpegurl', + 'wax' => 'audio/x-ms-wax', + 'wma' => 'audio/x-ms-wma', + 'ram' => 'audio/x-pn-realaudio', + 'ra' => 'audio/x-pn-realaudio', + 'rmp' => 'audio/x-pn-realaudio-plugin', + 'wav' => 'audio/x-wav', + 'xm' => 'audio/xm', + 'cdx' => 'chemical/x-cdx', + 'cif' => 'chemical/x-cif', + 'cmdf' => 'chemical/x-cmdf', + 'cml' => 'chemical/x-cml', + 'csml' => 'chemical/x-csml', + 'xyz' => 'chemical/x-xyz', + 'ttc' => 'font/collection', + 'otf' => 'font/otf', + 'ttf' => 'font/ttf', + 'woff' => 'font/woff', + 'woff2' => 'font/woff2', + 'bmp' => 'image/bmp', + 'cgm' => 'image/cgm', + 'g3' => 'image/g3fax', + 'gif' => 'image/gif', + 'ief' => 'image/ief', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'ktx' => 'image/ktx', + 'png' => 'image/png', + 'btif' => 'image/prs.btif', + 'sgi' => 'image/sgi', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'psd' => 'image/vnd.adobe.photoshop', + 'uvi' => 'image/vnd.dece.graphic', + 'uvvi' => 'image/vnd.dece.graphic', + 'uvg' => 'image/vnd.dece.graphic', + 'uvvg' => 'image/vnd.dece.graphic', + 'djvu' => 'image/vnd.djvu', + 'djv' => 'image/vnd.djvu', + 'sub' => 'text/vnd.dvb.subtitle', + 'dwg' => 'image/vnd.dwg', + 'dxf' => 'image/vnd.dxf', + 'fbs' => 'image/vnd.fastbidsheet', + 'fpx' => 'image/vnd.fpx', + 'fst' => 'image/vnd.fst', + 'mmr' => 'image/vnd.fujixerox.edmics-mmr', + 'rlc' => 'image/vnd.fujixerox.edmics-rlc', + 'mdi' => 'image/vnd.ms-modi', + 'wdp' => 'image/vnd.ms-photo', + 'npx' => 'image/vnd.net-fpx', + 'wbmp' => 'image/vnd.wap.wbmp', + 'xif' => 'image/vnd.xiff', + 'webp' => 'image/webp', + '3ds' => 'image/x-3ds', + 'ras' => 'image/x-cmu-raster', + 'cmx' => 'image/x-cmx', + 'fh' => 'image/x-freehand', + 'fhc' => 'image/x-freehand', + 'fh4' => 'image/x-freehand', + 'fh5' => 'image/x-freehand', + 'fh7' => 'image/x-freehand', + 'ico' => 'image/x-icon', + 'sid' => 'image/x-mrsid-image', + 'pcx' => 'image/x-pcx', + 'pic' => 'image/x-pict', + 'pct' => 'image/x-pict', + 'pnm' => 'image/x-portable-anymap', + 'pbm' => 'image/x-portable-bitmap', + 'pgm' => 'image/x-portable-graymap', + 'ppm' => 'image/x-portable-pixmap', + 'rgb' => 'image/x-rgb', + 'tga' => 'image/x-tga', + 'xbm' => 'image/x-xbitmap', + 'xpm' => 'image/x-xpixmap', + 'xwd' => 'image/x-xwindowdump', + 'eml' => 'message/rfc822', + 'mime' => 'message/rfc822', + 'igs' => 'model/iges', + 'iges' => 'model/iges', + 'msh' => 'model/mesh', + 'mesh' => 'model/mesh', + 'silo' => 'model/mesh', + 'dae' => 'model/vnd.collada+xml', + 'dwf' => 'model/vnd.dwf', + 'gdl' => 'model/vnd.gdl', + 'gtw' => 'model/vnd.gtw', + 'mts' => 'model/vnd.mts', + 'vtu' => 'model/vnd.vtu', + 'wrl' => 'model/vrml', + 'vrml' => 'model/vrml', + 'x3db' => 'model/x3d+binary', + 'x3dbz' => 'model/x3d+binary', + 'x3dv' => 'model/x3d+vrml', + 'x3dvz' => 'model/x3d+vrml', + 'x3d' => 'model/x3d+xml', + 'x3dz' => 'model/x3d+xml', + 'appcache' => 'text/cache-manifest', + 'ics' => 'text/calendar', + 'ifb' => 'text/calendar', + 'css' => 'text/css', + 'csv' => 'text/csv', + 'html' => 'text/html', + 'htm' => 'text/html', + 'n3' => 'text/n3', + 'txt' => 'text/plain', + 'text' => 'text/plain', + 'conf' => 'text/plain', + 'def' => 'text/plain', + 'list' => 'text/plain', + 'log' => 'text/plain', + 'in' => 'text/plain', + 'dsc' => 'text/prs.lines.tag', + 'rtx' => 'text/richtext', + 'sgml' => 'text/sgml', + 'sgm' => 'text/sgml', + 'tsv' => 'text/tab-separated-values', + 't' => 'text/troff', + 'tr' => 'text/troff', + 'roff' => 'text/troff', + 'man' => 'text/troff', + 'me' => 'text/troff', + 'ms' => 'text/troff', + 'ttl' => 'text/turtle', + 'uri' => 'text/uri-list', + 'uris' => 'text/uri-list', + 'urls' => 'text/uri-list', + 'vcard' => 'text/vcard', + 'curl' => 'text/vnd.curl', + 'dcurl' => 'text/vnd.curl.dcurl', + 'mcurl' => 'text/vnd.curl.mcurl', + 'scurl' => 'text/vnd.curl.scurl', + 'fly' => 'text/vnd.fly', + 'flx' => 'text/vnd.fmi.flexstor', + 'gv' => 'text/vnd.graphviz', + '3dml' => 'text/vnd.in3d.3dml', + 'spot' => 'text/vnd.in3d.spot', + 'jad' => 'text/vnd.sun.j2me.app-descriptor', + 'wml' => 'text/vnd.wap.wml', + 'wmls' => 'text/vnd.wap.wmlscript', + 's' => 'text/x-asm', + 'asm' => 'text/x-asm', + 'c' => 'text/x-c', + 'cc' => 'text/x-c', + 'cxx' => 'text/x-c', + 'cpp' => 'text/x-c', + 'h' => 'text/x-c', + 'hh' => 'text/x-c', + 'dic' => 'text/x-c', + 'f' => 'text/x-fortran', + 'for' => 'text/x-fortran', + 'f77' => 'text/x-fortran', + 'f90' => 'text/x-fortran', + 'java' => 'text/x-java-source', + 'nfo' => 'text/x-nfo', + 'opml' => 'text/x-opml', + 'p' => 'text/x-pascal', + 'pas' => 'text/x-pascal', + 'etx' => 'text/x-setext', + 'sfv' => 'text/x-sfv', + 'uu' => 'text/x-uuencode', + 'vcs' => 'text/x-vcalendar', + 'vcf' => 'text/x-vcard', + '3gp' => 'video/3gpp', + '3g2' => 'video/3gpp2', + 'h261' => 'video/h261', + 'h263' => 'video/h263', + 'h264' => 'video/h264', + 'jpgv' => 'video/jpeg', + 'jpm' => 'video/jpm', + 'jpgm' => 'video/jpm', + 'mj2' => 'video/mj2', + 'mjp2' => 'video/mj2', + 'mp4' => 'video/mp4', + 'mp4v' => 'video/mp4', + 'mpg4' => 'video/mp4', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'm1v' => 'video/mpeg', + 'm2v' => 'video/mpeg', + 'ogv' => 'video/ogg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'uvh' => 'video/vnd.dece.hd', + 'uvvh' => 'video/vnd.dece.hd', + 'uvm' => 'video/vnd.dece.mobile', + 'uvvm' => 'video/vnd.dece.mobile', + 'uvp' => 'video/vnd.dece.pd', + 'uvvp' => 'video/vnd.dece.pd', + 'uvs' => 'video/vnd.dece.sd', + 'uvvs' => 'video/vnd.dece.sd', + 'uvv' => 'video/vnd.dece.video', + 'uvvv' => 'video/vnd.dece.video', + 'dvb' => 'video/vnd.dvb.file', + 'fvt' => 'video/vnd.fvt', + 'mxu' => 'video/vnd.mpegurl', + 'm4u' => 'video/vnd.mpegurl', + 'pyv' => 'video/vnd.ms-playready.media.pyv', + 'uvu' => 'video/vnd.uvvu.mp4', + 'uvvu' => 'video/vnd.uvvu.mp4', + 'viv' => 'video/vnd.vivo', + 'webm' => 'video/webm', + 'f4v' => 'video/x-f4v', + 'fli' => 'video/x-fli', + 'flv' => 'video/x-flv', + 'm4v' => 'video/x-m4v', + 'mkv' => 'video/x-matroska', + 'mk3d' => 'video/x-matroska', + 'mks' => 'video/x-matroska', + 'mng' => 'video/x-mng', + 'asf' => 'video/x-ms-asf', + 'asx' => 'video/x-ms-asf', + 'vob' => 'video/x-ms-vob', + 'wm' => 'video/x-ms-wm', + 'wmv' => 'video/x-ms-wmv', + 'wmx' => 'video/x-ms-wmx', + 'wvx' => 'video/x-ms-wvx', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie', + 'smv' => 'video/x-smv', + 'ice' => 'x-conference/x-cooltalk', +]; \ No newline at end of file diff --git a/vendor/zoujingli/think-library/src/tools/Csrf.php b/vendor/zoujingli/think-library/src/tools/Csrf.php index 06a00c7e0..b329f99eb 100644 --- a/vendor/zoujingli/think-library/src/tools/Csrf.php +++ b/vendor/zoujingli/think-library/src/tools/Csrf.php @@ -67,8 +67,8 @@ class Csrf */ public static function buildFormToken($node = null) { - list($token, $time) = [uniqid(), time()]; if (is_null($node)) $node = Node::current(); + list($token, $time) = [uniqid() . rand(10000, 9999), time()]; session($token, ['node' => $node, 'token' => $token, 'time' => $time], 'csrf'); foreach (session('', '', 'csrf') as $key => $item) if (isset($item['time'])) { if ($item['time'] + 600 < $time) self::clearFormToken($key); diff --git a/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicAliPay.php b/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicAliPay.php index ec2b6effc..b2d320acf 100644 --- a/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicAliPay.php +++ b/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicAliPay.php @@ -43,6 +43,12 @@ abstract class BasicAliPay */ protected $params; + /** + * 静态缓存 + * @var static + */ + protected static $cache; + /** * 正常请求网关 * @var string @@ -88,6 +94,18 @@ abstract class BasicAliPay } } + /** + * 静态创建对象 + * @param array $config + * @return static + */ + public static function instance(array $config) + { + $key = md5(get_called_class() . serialize($config)); + if (isset(self::$cache[$key])) return self::$cache[$key]; + return self::$cache[$key] = new static($config); + } + /** * 查询支付宝订单状态 * @param string $out_trade_no diff --git a/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWeChat.php b/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWeChat.php index 0f9f8b81b..81c364559 100644 --- a/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWeChat.php +++ b/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWeChat.php @@ -48,6 +48,12 @@ class BasicWeChat */ protected $isTry = false; + /** + * 静态缓存 + * @var static + */ + protected static $cache; + /** * 注册代替函数 * @var string @@ -75,6 +81,18 @@ class BasicWeChat $this->config = new DataArray($options); } + /** + * 静态创建对象 + * @param array $config + * @return static + */ + public static function instance(array $config) + { + $key = md5(get_called_class() . serialize($config)); + if (isset(self::$cache[$key])) return self::$cache[$key]; + return self::$cache[$key] = new static($config); + } + /** * 获取访问accessToken * @return string diff --git a/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWePay.php b/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWePay.php index 1f0f0965f..55a708004 100644 --- a/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWePay.php +++ b/vendor/zoujingli/wechat-developer/WeChat/Contracts/BasicWePay.php @@ -36,6 +36,11 @@ class BasicWePay */ protected $params; + /** + * 静态缓存 + * @var static + */ + protected static $cache; /** * WeChat constructor. @@ -71,6 +76,18 @@ class BasicWePay } } + /** + * 静态创建对象 + * @param array $config + * @return static + */ + public static function instance(array $config) + { + $key = md5(get_called_class() . serialize($config)); + if (isset(self::$cache[$key])) return self::$cache[$key]; + return self::$cache[$key] = new static($config); + } + /** * 获取微信支付通知 * @return array diff --git a/vendor/zoujingli/wechat-developer/WeChat/Pay.php b/vendor/zoujingli/wechat-developer/WeChat/Pay.php index dbbd4a17c..3e3fbad25 100644 --- a/vendor/zoujingli/wechat-developer/WeChat/Pay.php +++ b/vendor/zoujingli/wechat-developer/WeChat/Pay.php @@ -18,7 +18,6 @@ use WeChat\Contracts\BasicWePay; use WeChat\Exceptions\InvalidResponseException; use WePay\Bill; use WePay\Order; -use WePay\Refund; use WePay\Transfers; use WePay\TransfersBank; @@ -39,10 +38,20 @@ class Pay extends BasicWePay */ public function createOrder(array $options) { - $pay = new Order($this->config->get()); - return $pay->create($options); + return Order::instance($this->config->get())->create($options); } + /** + * 刷卡支付 + * @param array $options + * @return array + * @throws Exceptions\LocalCacheException + * @throws InvalidResponseException + */ + public function createMicropay($options) + { + return Order::instance($this->config->get())->micropay($options); + } /** * 创建JsApi及H5支付参数 @@ -51,8 +60,7 @@ class Pay extends BasicWePay */ public function createParamsForJsApi($prepay_id) { - $pay = new Order($this->config->get()); - return $pay->jsapiParams($prepay_id); + return Order::instance($this->config->get())->jsapiParams($prepay_id); } /** @@ -62,8 +70,7 @@ class Pay extends BasicWePay */ public function createParamsForApp($prepay_id) { - $pay = new Order($this->config->get()); - return $pay->appParams($prepay_id); + return Order::instance($this->config->get())->appParams($prepay_id); } /** @@ -73,8 +80,7 @@ class Pay extends BasicWePay */ public function createParamsForRuleQrc($product_id) { - $pay = new Order($this->config->get()); - return $pay->qrcParams($product_id); + return Order::instance($this->config->get())->qrcParams($product_id); } /** @@ -86,8 +92,7 @@ class Pay extends BasicWePay */ public function queryOrder(array $options) { - $pay = new Order($this->config->get()); - return $pay->query($options); + return Order::instance($this->config->get())->query($options); } /** @@ -99,8 +104,7 @@ class Pay extends BasicWePay */ public function closeOrder($out_trade_no) { - $pay = new Order($this->config->get()); - return $pay->close($out_trade_no); + return Order::instance($this->config->get())->close($out_trade_no); } /** @@ -112,8 +116,7 @@ class Pay extends BasicWePay */ public function createRefund(array $options) { - $pay = new Refund($this->config->get()); - return $pay->create($options); + return Order::instance($this->config->get())->create($options); } /** @@ -125,8 +128,7 @@ class Pay extends BasicWePay */ public function queryRefund(array $options) { - $pay = new Refund($this->config->get()); - return $pay->query($options); + return Order::instance($this->config->get())->query($options); } /** @@ -138,8 +140,7 @@ class Pay extends BasicWePay */ public function report(array $options) { - $pay = new Order($this->config->get()); - return $pay->report($options); + return Order::instance($this->config->get())->report($options); } /** @@ -151,8 +152,7 @@ class Pay extends BasicWePay */ public function queryAuthCode($authCode) { - $pay = new Order($this->config->get()); - return $pay->queryAuthCode($authCode); + return Order::instance($this->config->get())->queryAuthCode($authCode); } /** @@ -165,11 +165,9 @@ class Pay extends BasicWePay */ public function billDownload(array $options, $outType = null) { - $pay = new Bill($this->config->get()); - return $pay->download($options, $outType); + return Bill::instance($this->config->get())->download($options, $outType); } - /** * 拉取订单评价数据 * @param array $options @@ -179,8 +177,7 @@ class Pay extends BasicWePay */ public function billCommtent(array $options) { - $pay = new Bill($this->config->get()); - return $pay->comment($options); + return Bill::instance($this->config->get())->comment($options); } /** @@ -192,8 +189,7 @@ class Pay extends BasicWePay */ public function createTransfers(array $options) { - $pay = new Transfers($this->config->get()); - return $pay->create($options); + return Transfers::instance($this->config->get())->create($options); } /** @@ -205,8 +201,7 @@ class Pay extends BasicWePay */ public function queryTransfers($partner_trade_no) { - $pay = new Transfers($this->config->get()); - return $pay->query($partner_trade_no); + return Transfers::instance($this->config->get())->query($partner_trade_no); } /** @@ -219,8 +214,7 @@ class Pay extends BasicWePay */ public function createTransfersBank(array $options) { - $pay = new TransfersBank($this->config->get()); - return $pay->create($options); + return TransfersBank::instance($this->config->get())->create($options); } /** @@ -232,7 +226,6 @@ class Pay extends BasicWePay */ public function queryTransFresBank($partner_trade_no) { - $pay = new TransfersBank($this->config->get()); - return $pay->query($partner_trade_no); + return TransfersBank::instance($this->config->get())->query($partner_trade_no); } } \ No newline at end of file diff --git a/vendor/zoujingli/wechat-developer/WeChat/User.php b/vendor/zoujingli/wechat-developer/WeChat/User.php index c362ccdb4..2156cf7b2 100644 --- a/vendor/zoujingli/wechat-developer/WeChat/User.php +++ b/vendor/zoujingli/wechat-developer/WeChat/User.php @@ -49,7 +49,7 @@ class User extends BasicWeChat */ public function getUserInfo($openid, $lang = 'zh_CN') { - $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid={$openid}&lang=zh_CN"; + $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid={$openid}&lang={$lang}"; $this->registerApi($url, __FUNCTION__, func_get_args()); return $this->httpGetForJson($url); } diff --git a/vendor/zoujingli/wechat-developer/WePay/Order.php b/vendor/zoujingli/wechat-developer/WePay/Order.php index 2b4a1f54d..1d93288fe 100644 --- a/vendor/zoujingli/wechat-developer/WePay/Order.php +++ b/vendor/zoujingli/wechat-developer/WePay/Order.php @@ -38,6 +38,19 @@ class Order extends BasicWePay return $this->callPostApi($url, $options, false, 'MD5'); } + /** + * 刷卡支付 + * @param array $options + * @return array + * @throws \WeChat\Exceptions\InvalidResponseException + * @throws \WeChat\Exceptions\LocalCacheException + */ + public function micropay(array $options) + { + $url = 'https://api.mch.weixin.qq.com/pay/micropay'; + return $this->callPostApi($url, $options, false, 'MD5'); + } + /** * 查询订单 * @param array $options diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-app.php b/vendor/zoujingli/wechat-developer/_test/alipay-app.php index bbfe18e27..0070eb31c 100644 --- a/vendor/zoujingli/wechat-developer/_test/alipay-app.php +++ b/vendor/zoujingli/wechat-developer/_test/alipay-app.php @@ -20,8 +20,9 @@ $config = include "./alipay.php"; try { // 实例支付对象 - $pay = \We::AliPayApp($config); + // $pay = \We::AliPayApp($config); // $pay = new \AliPay\App($config); + $pay = \AliPay\App::instance($config); // 请参考(请求参数):https://docs.open.alipay.com/api_1/alipay.trade.app.pay $result = $pay->apply([ diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-bill.php b/vendor/zoujingli/wechat-developer/_test/alipay-bill.php index 3ed11092a..af5c493cf 100644 --- a/vendor/zoujingli/wechat-developer/_test/alipay-bill.php +++ b/vendor/zoujingli/wechat-developer/_test/alipay-bill.php @@ -20,8 +20,10 @@ $config = include "./alipay.php"; try { // 实例支付对象 - $pay = \We::AliPayBill($config); // $pay = new \AliPay\Bill($config); + // $pay = \We::AliPayBill($config); + $pay = \AliPay\Bill::instance($config); + // 请参考(请求参数):https://docs.open.alipay.com/api_15/alipay.data.dataservice.bill.downloadurl.query $result = $pay->apply([ 'bill_date' => '2018-10-03', // 账单时间(日账单yyyy-MM-dd,月账单 yyyy-MM) diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-notify.php b/vendor/zoujingli/wechat-developer/_test/alipay-notify.php index 311cb6a98..0d5911682 100644 --- a/vendor/zoujingli/wechat-developer/_test/alipay-notify.php +++ b/vendor/zoujingli/wechat-developer/_test/alipay-notify.php @@ -20,8 +20,10 @@ $config = include "./alipay.php"; try { // 实例支付对象 - $pay = \We::AliPayApp($config); + // $pay = \We::AliPayApp($config); // $pay = new \AliPay\App($config); + $pay = \AliPay\App::instance($config); + $data = $pay->notify(); if (in_array($data['trade_status'], ['TRADE_SUCCESS', 'TRADE_FINISHED'])) { // @todo 更新订单状态,支付完成 diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-pos.php b/vendor/zoujingli/wechat-developer/_test/alipay-pos.php index 49003748a..e55c4e2e0 100644 --- a/vendor/zoujingli/wechat-developer/_test/alipay-pos.php +++ b/vendor/zoujingli/wechat-developer/_test/alipay-pos.php @@ -20,8 +20,10 @@ $config = include "./alipay.php"; try { // 实例支付对象 - $pay = We::AliPayPos($config); + // $pay = We::AliPayPos($config); // $pay = new \AliPay\Pos($config); + $pay = \AliPay\Pos::instance($config); + // 参数链接:https://docs.open.alipay.com/api_1/alipay.trade.pay $result = $pay->apply([ 'out_trade_no' => '4312412343', // 订单号 @@ -29,6 +31,7 @@ try { 'subject' => '订单商品标题', // 订单商品标题 'auth_code' => '123456', // 授权码 ]); + echo '
';
     var_export($result);
 } catch (Exception $e) {
diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-refund.php b/vendor/zoujingli/wechat-developer/_test/alipay-refund.php
index 57fb0bf02..487ca7b27 100644
--- a/vendor/zoujingli/wechat-developer/_test/alipay-refund.php
+++ b/vendor/zoujingli/wechat-developer/_test/alipay-refund.php
@@ -25,10 +25,13 @@ $refund_fee = '1.00';
 
 try {
     // 实例支付对象
-    $pay = We::AliPayApp($config);
+    // $pay = We::AliPayApp($config);
     // $pay = new \AliPay\App($config);
+    $pay = \AliPay\App::instance($config);
+
     // 参考链接:https://docs.open.alipay.com/api_1/alipay.trade.refund
     $result = $pay->refund($out_trade_no, $refund_fee);
+    
     echo '
';
     var_export($result);
 } catch (Exception $e) {
diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-scan.php b/vendor/zoujingli/wechat-developer/_test/alipay-scan.php
index 0a110762e..2bc880632 100644
--- a/vendor/zoujingli/wechat-developer/_test/alipay-scan.php
+++ b/vendor/zoujingli/wechat-developer/_test/alipay-scan.php
@@ -20,14 +20,17 @@ $config = include "./alipay.php";
 
 try {
     // 实例支付对象
-    $pay = We::AliPayScan($config);
+    // $pay = We::AliPayScan($config);
     // $pay = new \AliPay\Scan($config);
+    $pay = \AliPay\Scan::instance($config);
+
     // 参考链接:https://docs.open.alipay.com/api_1/alipay.trade.precreate
     $result = $pay->apply([
         'out_trade_no' => '14321412', // 订单号
         'total_amount' => '13', // 订单金额,单位:元
         'subject'      => '订单商品标题', // 订单商品标题
     ]);
+
     echo '
';
     var_export($result);
 } catch (Exception $e) {
diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-transfer.php b/vendor/zoujingli/wechat-developer/_test/alipay-transfer.php
index 16b56aada..4eaf6fb1f 100644
--- a/vendor/zoujingli/wechat-developer/_test/alipay-transfer.php
+++ b/vendor/zoujingli/wechat-developer/_test/alipay-transfer.php
@@ -20,8 +20,10 @@ $config = include "./alipay.php";
 
 try {
     // 实例支付对象
-    $pay = We::AliPayTransfer($config);
-    // $pay = new \AliPay\Scan($config);
+    // $pay = We::AliPayTransfer($config);
+    // $pay = new \AliPay\Transfer($config);
+    $pay = \AliPay\Transfer::instance($config);
+
     // 参考链接:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
     $result = $pay->apply([
         'out_biz_no'      => time(), // 订单号
@@ -32,6 +34,7 @@ try {
         'payee_real_name' => '张三', // 收款方真实姓名
         'remark'          => '张三', // 转账备注
     ]);
+
     echo '
';
     var_export($result);
 } catch (Exception $e) {
diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-wap.php b/vendor/zoujingli/wechat-developer/_test/alipay-wap.php
index 3b63833e7..ac04021d2 100644
--- a/vendor/zoujingli/wechat-developer/_test/alipay-wap.php
+++ b/vendor/zoujingli/wechat-developer/_test/alipay-wap.php
@@ -23,14 +23,17 @@ $config['return_url'] = 'http://pay.thinkadmin.top/test/alipay-success.php';
 
 try {
     // 实例支付对象
-    $pay = We::AliPayWap($config);
+    // $pay = We::AliPayWap($config);
     // $pay = new \AliPay\Wap($config);
+    $pay = \AliPay\Wap::instance($config);
+
     // 参考链接:https://docs.open.alipay.com/api_1/alipay.trade.wap.pay
     $result = $pay->apply([
         'out_trade_no' => time(), // 商户订单号
         'total_amount' => '1', // 支付金额
         'subject'      => '支付订单描述', // 支付订单描述
     ]);
+
     echo $result;
 } catch (Exception $e) {
     echo $e->getMessage();
diff --git a/vendor/zoujingli/wechat-developer/_test/alipay-web.php b/vendor/zoujingli/wechat-developer/_test/alipay-web.php
index e0e3b86c8..46f0efcf0 100644
--- a/vendor/zoujingli/wechat-developer/_test/alipay-web.php
+++ b/vendor/zoujingli/wechat-developer/_test/alipay-web.php
@@ -24,14 +24,17 @@ $config['return_url'] = 'http://pay.thinkadmin.top/test/alipay-success.php';
 
 try {
     // 实例支付对象
-    $pay = We::AliPayWeb($config);
+    // $pay = We::AliPayWeb($config);
     // $pay = new \AliPay\Web($config);
+    $pay = \AliPay\Web::instance($config);
+
     // 参考链接:https://docs.open.alipay.com/api_1/alipay.trade.page.pay
     $result = $pay->apply([
         'out_trade_no' => time(), // 商户订单号
         'total_amount' => '1', // 支付金额
         'subject'      => '支付订单描述', // 支付订单描述
     ]);
+
     echo $result;
 } catch (Exception $e) {
     echo $e->getMessage();
diff --git a/vendor/zoujingli/wechat-developer/_test/mini-login.php b/vendor/zoujingli/wechat-developer/_test/mini-login.php
index 2f3bab3d6..c6f56bac0 100644
--- a/vendor/zoujingli/wechat-developer/_test/mini-login.php
+++ b/vendor/zoujingli/wechat-developer/_test/mini-login.php
@@ -13,7 +13,11 @@ $iv = 'ltM/wT7hsAl0TijEBI4v/g==';
 $code = '013LyiTR0TwjC92QjJRR0mEsTR0LyiT3';
 $decode = 'eIoVtIC2YzLCnrwiIs1IBbXMvC0vyL8bo1IhD38fUQIRbk3lgTWa0Hdw/Ty7NTs3iu7YlqqZBti+cxd6dCfeXBUQwTO2QpbHg0WTeDAdrihsHRHm4dCWdfTx8rzDloGbNOIsKdRElIhUH5YFdiTr5AYiufUDb34cwJ4GNWLAUq4bR0dmFeVEi+3nfwe2MAjGYDl4aq719VLsHodOggK6lXZvM5wjoDyuZsK2dPqJr3/Ji30Z0mdyFq32R4uR3rtJH/h+Rj0+/QmE9QYG7Y6Z48hgPE8cpnhRQNwH49jnC/zKZ9wtDkQ/J8J3Ed2i58zcuY01v8IV+pZ8oBUKXfO5ha+APOxtBSTzyHraU/2RGo8UWtOF6h64OQZhd/UQQy362eyc/qoq8sF9JnEFRP0mRmTDJ+u9oyDhxswCu6x8V73ERWaJeEGSCyjiGpep7/DxZ6eSSBq36OB0BWBkJqsq9Q==';
 $sessionKey = 'OetNxl86B/yMpbwG6wtMEw==';
-$mini = new WeMini\Crypt($config);
+
+// $mini = \We::WeMiniCrypt($config);
+// $mini = new WeMini\Crypt($config);
+$mini = \WeMini\Crypt::instance($config);
+
 echo '
';
 //print_r($mini->session($code));
 print_r($mini->decode($iv, $sessionKey, $decode));
diff --git a/vendor/zoujingli/wechat-developer/_test/mini-qrc.php b/vendor/zoujingli/wechat-developer/_test/mini-qrc.php
index ce62ae101..84ca9d689 100644
--- a/vendor/zoujingli/wechat-developer/_test/mini-qrc.php
+++ b/vendor/zoujingli/wechat-developer/_test/mini-qrc.php
@@ -10,13 +10,13 @@ $config = [
 
 //We::config($config);
 
-$mini = We::WeMiniQrcode($config);
-
-//$mini = new WeMini\Qrcode($config);
+// $mini = We::WeMiniQrcode($config);
+// $mini = new WeMini\Qrcode($config);
+$mini = \WeMini\Qrcode::instance($config);
 
 //echo '
';
 try {
-    header('Content-type:image/jpeg');//输出的类型
+    header('Content-type:image/jpeg'); //输出的类型
 //    echo $mini->createDefault('pages/index?query=1');
 //    echo $mini->createMiniScene('432432', 'pages/index/index');
     echo $mini->createMiniPath('pages/index?query=1');
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-download-bill.php b/vendor/zoujingli/wechat-developer/_test/pay-download-bill.php
index c0181fb01..ffac45b0f 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-download-bill.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-download-bill.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-order-close.php b/vendor/zoujingli/wechat-developer/_test/pay-order-close.php
index 3a31ddc7b..eeead4af5 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-order-close.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-order-close.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = '1217752501201407033233368018';
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-order-create.php b/vendor/zoujingli/wechat-developer/_test/pay-order-create.php
index e130bb1b1..e9c9f20a7 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-order-create.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-order-create.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-order-notify.php b/vendor/zoujingli/wechat-developer/_test/pay-order-notify.php
index 7b8267a23..7484aace9 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-order-notify.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-order-notify.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 获取通知参数
     $data = $wechat->getNotify();
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-order-query.php b/vendor/zoujingli/wechat-developer/_test/pay-order-query.php
index d9934888f..b7edf34a1 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-order-query.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-order-query.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-redpack-create.php b/vendor/zoujingli/wechat-developer/_test/pay-redpack-create.php
index 3df5fb6c0..c45dadeb4 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-redpack-create.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-redpack-create.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WePay\Redpack($config);
+    // $wechat = new \WePay\Redpack($config);
+    // $wechat = \We::WePayRedpack($config);
+    $wechat = \WePay\Redpack::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-refund-create.php b/vendor/zoujingli/wechat-developer/_test/pay-refund-create.php
index 02b554b06..8e3df01ff 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-refund-create.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-refund-create.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-refund-query.php b/vendor/zoujingli/wechat-developer/_test/pay-refund-query.php
index a812ac43c..fa63acc9e 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-refund-query.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-refund-query.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-transfers-create.php b/vendor/zoujingli/wechat-developer/_test/pay-transfers-create.php
index 77d70b026..659d888e2 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-transfers-create.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-transfers-create.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/pay-transfersbank-create.php b/vendor/zoujingli/wechat-developer/_test/pay-transfersbank-create.php
index 92147af19..ca3979edf 100644
--- a/vendor/zoujingli/wechat-developer/_test/pay-transfersbank-create.php
+++ b/vendor/zoujingli/wechat-developer/_test/pay-transfersbank-create.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Pay($config);
+    // $wechat = new \WeChat\Pay($config);
+    // $wechat = \We::WeChatPay($config);
+    $wechat = \WeChat\Pay::instance($config);
 
     // 4. 组装参数,可以参考官方商户文档
     $options = [
diff --git a/vendor/zoujingli/wechat-developer/_test/wechat-jssdk-sign.php b/vendor/zoujingli/wechat-developer/_test/wechat-jssdk-sign.php
index 8986cf223..6a3b6985c 100644
--- a/vendor/zoujingli/wechat-developer/_test/wechat-jssdk-sign.php
+++ b/vendor/zoujingli/wechat-developer/_test/wechat-jssdk-sign.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Script($config);
+    // $wechat = \We::WeChatScript($config);
+    // $wechat = new \WeChat\Script($config);
+    $wechat = \WeChat\Script::instance($config);
 
     // 4. 获取JSSDK网址签名配置
     $result = $wechat->getJsSign('http://a.com/test.php');
diff --git a/vendor/zoujingli/wechat-developer/_test/wechat-menu-get.php b/vendor/zoujingli/wechat-developer/_test/wechat-menu-get.php
index 31f18b023..5447aad17 100644
--- a/vendor/zoujingli/wechat-developer/_test/wechat-menu-get.php
+++ b/vendor/zoujingli/wechat-developer/_test/wechat-menu-get.php
@@ -21,11 +21,13 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $menu = new \WeChat\Menu($config);
+    // $menu = \We::WeChatMenu($config);
+    // $menu = new \WeChat\Menu($config);
+    $menu = \WeChat\Menu::instance($config);
 
     // 4. 获取菜单数据
     $result = $menu->get();
-    
+
     var_export($result);
 
 } catch (Exception $e) {
diff --git a/vendor/zoujingli/wechat-developer/_test/wechat-qrcode-create.php b/vendor/zoujingli/wechat-developer/_test/wechat-qrcode-create.php
index e7daa7907..256e30ad9 100644
--- a/vendor/zoujingli/wechat-developer/_test/wechat-qrcode-create.php
+++ b/vendor/zoujingli/wechat-developer/_test/wechat-qrcode-create.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\Qrcode($config);
+    // $wechat = \We::WeChatQrcode($config);
+    // $wechat = new \WeChat\Qrcode($config);
+    $wechat = \WeChat\Qrcode::instance($config);
 
     // 4. 获取用户列表
     $result = $wechat->create('场景内容');
diff --git a/vendor/zoujingli/wechat-developer/_test/wechat-user-get.php b/vendor/zoujingli/wechat-developer/_test/wechat-user-get.php
index ad94e3ad9..d42cb5632 100644
--- a/vendor/zoujingli/wechat-developer/_test/wechat-user-get.php
+++ b/vendor/zoujingli/wechat-developer/_test/wechat-user-get.php
@@ -21,7 +21,9 @@ try {
     $config = include "./config.php";
 
     // 3. 创建接口实例
-    $wechat = new \WeChat\User($config);
+    // $wechat = \We::WeChatUser($config);
+    // $wechat = new \WeChat\User($config);
+    $wechat = \WeChat\User::instance($config);
 
     // 4. 获取用户列表
     $result = $wechat->getUserList();