Bump microsoft/azure-storage-blob to 1.5.4

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2022-11-07 10:42:24 +01:00
Родитель 3a81ffcc3c
Коммит 2b42cce4dd
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: A3E2F658B28C760A
19 изменённых файлов: 188 добавлений и 78 удалений

Просмотреть файл

@ -32,7 +32,7 @@
"icewind/streams": "v0.7.5",
"laravel/serializable-closure": "^1.2",
"mexitek/phpcolors": "^1.0",
"microsoft/azure-storage-blob": "^1.5",
"microsoft/azure-storage-blob": "^1.5.4",
"mlocati/ip-lib": "^1.18",
"nextcloud/lognormalizer": "^1.0",
"nikic/php-parser": "^4.2",

26
composer.lock сгенерированный
Просмотреть файл

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "5d03b9b89f1c45926f27051ab5d41b36",
"content-hash": "d2b492639f133e19e03d552b16686e16",
"packages": [
{
"name": "aws/aws-crt-php",
@ -2211,16 +2211,16 @@
},
{
"name": "microsoft/azure-storage-blob",
"version": "1.5.2",
"version": "1.5.4",
"source": {
"type": "git",
"url": "https://github.com/Azure/azure-storage-blob-php.git",
"reference": "2475330963372d519387cb8135d6a9cfd42272da"
"reference": "1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Azure/azure-storage-blob-php/zipball/2475330963372d519387cb8135d6a9cfd42272da",
"reference": "2475330963372d519387cb8135d6a9cfd42272da",
"url": "https://api.github.com/repos/Azure/azure-storage-blob-php/zipball/1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf",
"reference": "1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf",
"shasum": ""
},
"require": {
@ -2253,22 +2253,22 @@
],
"support": {
"issues": "https://github.com/Azure/azure-storage-blob-php/issues",
"source": "https://github.com/Azure/azure-storage-blob-php/tree/v1.5.2"
"source": "https://github.com/Azure/azure-storage-blob-php/tree/v1.5.4"
},
"time": "2020-12-29T02:22:11+00:00"
"time": "2022-09-02T02:13:06+00:00"
},
{
"name": "microsoft/azure-storage-common",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/Azure/azure-storage-common-php.git",
"reference": "e5738035891546075bd369954e8af121d65ebd6d"
"reference": "8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Azure/azure-storage-common-php/zipball/e5738035891546075bd369954e8af121d65ebd6d",
"reference": "e5738035891546075bd369954e8af121d65ebd6d",
"url": "https://api.github.com/repos/Azure/azure-storage-common-php/zipball/8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0",
"reference": "8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0",
"shasum": ""
},
"require": {
@ -2301,9 +2301,9 @@
],
"support": {
"issues": "https://github.com/Azure/azure-storage-common-php/issues",
"source": "https://github.com/Azure/azure-storage-common-php/tree/v1.5.1"
"source": "https://github.com/Azure/azure-storage-common-php/tree/v1.5.2"
},
"time": "2020-12-28T07:59:51+00:00"
"time": "2021-10-09T03:03:47+00:00"
},
{
"name": "mlocati/ip-lib",

Просмотреть файл

@ -2301,24 +2301,24 @@
},
{
"name": "microsoft/azure-storage-blob",
"version": "1.5.2",
"version_normalized": "1.5.2.0",
"version": "1.5.4",
"version_normalized": "1.5.4.0",
"source": {
"type": "git",
"url": "https://github.com/Azure/azure-storage-blob-php.git",
"reference": "2475330963372d519387cb8135d6a9cfd42272da"
"reference": "1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Azure/azure-storage-blob-php/zipball/2475330963372d519387cb8135d6a9cfd42272da",
"reference": "2475330963372d519387cb8135d6a9cfd42272da",
"url": "https://api.github.com/repos/Azure/azure-storage-blob-php/zipball/1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf",
"reference": "1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf",
"shasum": ""
},
"require": {
"microsoft/azure-storage-common": "~1.5",
"php": ">=5.6.0"
},
"time": "2020-12-29T02:22:11+00:00",
"time": "2022-09-02T02:13:06+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -2346,30 +2346,30 @@
],
"support": {
"issues": "https://github.com/Azure/azure-storage-blob-php/issues",
"source": "https://github.com/Azure/azure-storage-blob-php/tree/v1.5.2"
"source": "https://github.com/Azure/azure-storage-blob-php/tree/v1.5.4"
},
"install-path": "../microsoft/azure-storage-blob"
},
{
"name": "microsoft/azure-storage-common",
"version": "1.5.1",
"version_normalized": "1.5.1.0",
"version": "1.5.2",
"version_normalized": "1.5.2.0",
"source": {
"type": "git",
"url": "https://github.com/Azure/azure-storage-common-php.git",
"reference": "e5738035891546075bd369954e8af121d65ebd6d"
"reference": "8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Azure/azure-storage-common-php/zipball/e5738035891546075bd369954e8af121d65ebd6d",
"reference": "e5738035891546075bd369954e8af121d65ebd6d",
"url": "https://api.github.com/repos/Azure/azure-storage-common-php/zipball/8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0",
"reference": "8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "~6.0|^7.0",
"php": ">=5.6.0"
},
"time": "2020-12-28T07:59:51+00:00",
"time": "2021-10-09T03:03:47+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -2397,7 +2397,7 @@
],
"support": {
"issues": "https://github.com/Azure/azure-storage-common-php/issues",
"source": "https://github.com/Azure/azure-storage-common-php/tree/v1.5.1"
"source": "https://github.com/Azure/azure-storage-common-php/tree/v1.5.2"
},
"install-path": "../microsoft/azure-storage-common"
},

Просмотреть файл

@ -3,7 +3,7 @@
'name' => 'nextcloud/3rdparty',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '52ea73b49bc3831eccce0653e3d902ea6600e976',
'reference' => '3a81ffcc3c0807a9349bb5fa0df8ee08130e0c00',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@ -299,18 +299,18 @@
'dev_requirement' => false,
),
'microsoft/azure-storage-blob' => array(
'pretty_version' => '1.5.2',
'version' => '1.5.2.0',
'reference' => '2475330963372d519387cb8135d6a9cfd42272da',
'pretty_version' => '1.5.4',
'version' => '1.5.4.0',
'reference' => '1023ce1dbf062351a32ca5ec72ad1fd4a504f1bf',
'type' => 'library',
'install_path' => __DIR__ . '/../microsoft/azure-storage-blob',
'aliases' => array(),
'dev_requirement' => false,
),
'microsoft/azure-storage-common' => array(
'pretty_version' => '1.5.1',
'version' => '1.5.1.0',
'reference' => 'e5738035891546075bd369954e8af121d65ebd6d',
'pretty_version' => '1.5.2',
'version' => '1.5.2.0',
'reference' => '8ca7b1bf4c9ca7c663e75a02a0035b05b37196a0',
'type' => 'library',
'install_path' => __DIR__ . '/../microsoft/azure-storage-common',
'aliases' => array(),
@ -337,7 +337,7 @@
'nextcloud/3rdparty' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '52ea73b49bc3831eccce0653e3d902ea6600e976',
'reference' => '3a81ffcc3c0807a9349bb5fa0df8ee08130e0c00',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),

Просмотреть файл

@ -1,3 +1,11 @@
2022.08 - version 1.5.4
* Check `$copyProgress` is not null before using it in `strpos`.
2021.09 - version 1.5.3
* Upgraded dependency for `azure-storage-common` to version 1.5.2.
* Resolved some interface inconsistency between `IBlob`/`BlobRestProxy`.
* Imported `Psr\Http\Message\StreamInterface` in `IBlob`.
2020.12 - version 1.5.2
* Resolved an issue where access condition does not work for large block blob uploads.
* Guzzle version is now updated to support both 6.x and 7.x.

Просмотреть файл

@ -1,6 +1,6 @@
# Microsoft Azure Storage Blob PHP Client Library
This project provides a PHP client library that makes it easy to access Microsoft Azure Storage blob services. For documentation on how to host PHP applications on Microsoft Azure, please see the [Microsoft Azure PHP Developer Center](http://www.windowsazure.com/en-us/develop/php/).
This project provides a PHP client library that makes it easy to access Microsoft Azure Storage blob services. For documentation on how to host PHP applications on Microsoft Azure, please see the [Microsoft Azure PHP Developer Center](https://www.windowsazure.com/en-us/develop/php/).
[![Latest Stable Version](https://poser.pugx.org/microsoft/azure-storage-blob/v/stable)](https://packagist.org/packages/microsoft/azure-storage-blob)
@ -17,7 +17,7 @@ This project provides a PHP client library that makes it easy to access Microsof
* create block and page blobs (from a stream or a string), work with blob blocks and pages, delete blobs
* work with blob properties, metadata, leases, snapshot a blob
Please check details on [API reference documents](http://azure.github.io/azure-storage-php).
Please check details on [API reference documents](https://azure.github.io/azure-storage-php).
# Getting Started
## Minimum Requirements
@ -52,7 +52,7 @@ cd ./azure-storage-php
}
}
```
2. Download **[composer.phar](http://getcomposer.org/composer.phar)** in your project root.
2. Download **[composer.phar](https://getcomposer.org/composer.phar)** in your project root.
3. Open a command prompt and execute this in your project root
@ -137,7 +137,7 @@ To use proxies during HTTP requests, set system variable `HTTP_PROXY` and the pr
### Error: Unable to get local issuer certificate
cURL can't verify the validity of Microsoft certificate when trying to issue a request call to Azure Storage Services. You must configure cURL to use a certificate when issuing https requests by the following steps:
1. Download the cacert.pem file from [cURL site](http://curl.haxx.se/docs/caextract.html).
1. Download the cacert.pem file from [cURL site](https://curl.haxx.se/docs/caextract.html).
2. Then either:
* Open your php.ini file and add the following line:
@ -153,7 +153,7 @@ cURL can't verify the validity of Microsoft certificate when trying to issue a r
## Code samples
You can find samples in the [sample folder](samples)
You can find samples in the [samples folder](https://github.com/Azure/azure-storage-php/tree/master/samples)
# Migrate from [Azure SDK for PHP](https://github.com/Azure/azure-sdk-for-php/)
@ -164,11 +164,11 @@ For now, Microsoft Azure Storage PHP client libraries share almost the same inte
# Need Help?
Be sure to check out the Microsoft Azure [Developer Forums on Stack Overflow](http://go.microsoft.com/fwlink/?LinkId=234489) and [github issues](https://github.com/Azure/azure-storage-php/issues) if you have trouble with the provided code.
Be sure to check out the Microsoft Azure [Developer Forums on Stack Overflow](https://go.microsoft.com/fwlink/?LinkId=234489) and [github issues](https://github.com/Azure/azure-storage-php/issues) if you have trouble with the provided code.
# Contribute Code or Provide Feedback
If you would like to become an active contributor to this project please follow the instructions provided in [Azure Projects Contribution Guidelines](http://azure.github.io/guidelines/).
If you would like to become an active contributor to this project please follow the instructions provided in [Azure Projects Contribution Guidelines](https://opensource.microsoft.com/program/#program-contributing).
You can find more details for contributing in the [CONTRIBUTING.md](CONTRIBUTING.md).
If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/Azure/azure-storage-php/issues) section of the project.

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "microsoft/azure-storage-blob",
"version": "1.5.2",
"version": "1.5.4",
"description": "This project provides a set of PHP client libraries that make it easy to access Microsoft Azure Storage Blob APIs.",
"keywords": [ "php", "azure", "storage", "sdk", "blob" ],
"license": "MIT",

Просмотреть файл

@ -89,6 +89,7 @@ use MicrosoftAzure\Storage\Common\LocationMode;
use MicrosoftAzure\Storage\Common\Models\Range;
use MicrosoftAzure\Storage\Common\SharedAccessSignatureHelper;
use Psr\Http\Message\StreamInterface;
use GuzzleHttp\Psr7\Utils;
/**
* This class constructs HTTP requests and receive HTTP responses for blob
@ -759,7 +760,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
get_class(new Range(0))
)
);
$body = Psr7\stream_for($content);
$body = Utils::streamFor($content);
$method = Resources::HTTP_PUT;
$headers = array();
@ -1834,7 +1835,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
$content,
Models\CreateBlockBlobOptions $options = null
) {
$body = Psr7\stream_for($content);
$body = Utils::streamFor($content);
//If the size of the stream is not seekable or larger than the single
//upload threshold then call concurrent upload. Otherwise call putBlob.
@ -1915,7 +1916,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
$content,
Models\CreatePageBlobFromContentOptions $options = null
) {
$body = Psr7\stream_for($content);
$body = Utils::streamFor($content);
$self = $this;
if (is_null($options)) {
@ -2417,7 +2418,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
$content,
Models\CreateBlobPagesOptions $options = null
) {
$contentStream = Psr7\stream_for($content);
$contentStream = Utils::streamFor($content);
//because the content is at most 4MB long, can retrieve all the data
//here at once.
$body = $contentStream->getContents();
@ -2516,7 +2517,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
$postParams = array();
$queryParams = $this->createBlobBlockQueryParams($options, $blockId);
$path = $this->createPath($container, $blob);
$contentStream = Psr7\stream_for($content);
$contentStream = Utils::streamFor($content);
$body = $contentStream->getContents();
$options->setLocationMode(LocationMode::PRIMARY_ONLY);
@ -2597,7 +2598,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
$queryParams = array();
$path = $this->createPath($container, $blob);
$contentStream = Psr7\stream_for($content);
$contentStream = Utils::streamFor($content);
$length = $contentStream->getSize();
$body = $contentStream->getContents();
@ -3791,7 +3792,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
);
});
}
/**
* Undeletes a blob.
*
@ -3810,7 +3811,7 @@ class BlobRestProxy extends ServiceRestProxy implements IBlob
) {
$this->undeleteBlobAsync($container, $blob, $options)->wait();
}
/**
* Undeletes a blob.
*

Просмотреть файл

@ -41,7 +41,7 @@ class BlobResources extends Resources
{
// @codingStandardsIgnoreStart
const BLOB_SDK_VERSION = '1.5.2';
const BLOB_SDK_VERSION = '1.5.4';
const STORAGE_API_LATEST_VERSION = '2017-11-09';
// Error messages

Просмотреть файл

@ -28,6 +28,7 @@ use MicrosoftAzure\Storage\Blob\Models as BlobModels;
use MicrosoftAzure\Storage\Common\Models\ServiceOptions;
use MicrosoftAzure\Storage\Common\Models\ServiceProperties;
use MicrosoftAzure\Storage\Common\Models\Range;
use Psr\Http\Message\StreamInterface;
/**
* This interface has all REST APIs provided by Windows Azure for Blob service.
@ -1126,6 +1127,82 @@ interface IBlob
BlobModels\BlobServiceOptions $options = null
);
/**
* Downloads a blob to a file, the result contains its metadata and
* properties. The result will not contain a stream pointing to the
* content of the file.
*
* @param string $path The path and name of the file
* @param string $container name of the container
* @param string $blob name of the blob
* @param BlobModels\GetBlobOptions $options optional parameters
*
* @return BlobModels\GetBlobResult
*
* @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179440.aspx
*/
public function saveBlobToFile(
$path,
$container,
$blob,
BlobModels\GetBlobOptions $options = null
);
/**
* Creates promise to download a blob to a file, the result contains its
* metadata and properties. The result will not contain a stream pointing
* to the content of the file.
*
* @param string $path The path and name of the file
* @param string $container name of the container
* @param string $blob name of the blob
* @param BlobModels\GetBlobOptions $options optional parameters
*
* @return \GuzzleHttp\Promise\PromiseInterface
* @throws \Exception
* @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179440.aspx
*/
public function saveBlobToFileAsync(
$path,
$container,
$blob,
BlobModels\GetBlobOptions $options = null
);
/**
* Undeletes a blob.
*
* @param string $container name of the container
* @param string $blob name of the blob
* @param BlobModels\UndeleteBlobOptions $options optional parameters
*
* @return void
*
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob
*/
public function undeleteBlob(
$container,
$blob,
BlobModels\UndeleteBlobOptions $options = null
);
/**
* Undeletes a blob.
*
* @param string $container name of the container
* @param string $blob name of the blob
* @param BlobModels\UndeleteBlobOptions $options optional parameters
*
* @return \GuzzleHttp\Promise\PromiseInterface
*
* @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob
*/
public function undeleteBlobAsync(
$container,
$blob,
BlobModels\UndeleteBlobOptions $options = null
);
/**
* Reads or downloads a blob from the system, including its metadata and
* properties.

Просмотреть файл

@ -74,7 +74,7 @@ class CopyState
$copyProgress = Utilities::tryGetValue($clean, 'copyprogress');
if (strpos($copyProgress, '/') !== false) {
if (!is_null($copyProgress) && strpos($copyProgress, '/') !== false) {
$parts = explode('/', $copyProgress);
$bytesCopied = intval($parts[0]);
$totalBytes = intval($parts[1]);
@ -112,7 +112,7 @@ class CopyState
$result->setSource(Utilities::tryGetValue($clean, Resources::X_MS_COPY_SOURCE));
$copyProgress = Utilities::tryGetValue($clean, Resources::X_MS_COPY_PROGRESS);
if (strpos($copyProgress, '/') !== false) {
if (!is_null($copyProgress) && strpos($copyProgress, '/') !== false) {
$parts = explode('/', $copyProgress);
$bytesCopied = intval($parts[0]);
$totalBytes = intval($parts[1]);

Просмотреть файл

@ -1,3 +1,12 @@
2021.09 - version 1.5.2
* Added support for guzzle 7.3.
* Resolve some warnings when calling `Psr7\stream_for`, uses `Utils::streamFor` instead.
* Added colon to non-UTC timestamps.
* Fixed type hint for `ServiceException::getResponse()`.
* Fixed random number range that might cause an overflow in the guid generation.
* Added logic to convert to exception when promise is rejected with string.
* Compares `strlen` result with an integer instead of string.
2020.12 - version 1.5.1
* Guzzle version is now updated to support both 6.x and 7.x.

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "microsoft/azure-storage-common",
"version": "1.5.1",
"version": "1.5.2",
"description": "This project provides a set of common code shared by Azure Storage Blob, Table, Queue and File PHP client libraries.",
"keywords": [ "php", "azure", "storage", "sdk", "common" ],
"license": "MIT",

Просмотреть файл

@ -168,7 +168,7 @@ class ServiceException extends \LogicException
/**
* Gets the response of the failue.
*
* @return string
* @return ResponseInterface
*/
public function getResponse()
{

Просмотреть файл

@ -24,6 +24,7 @@
namespace MicrosoftAzure\Storage\Common\Internal\Authentication;
use GuzzleHttp\Psr7\Query;
use GuzzleHttp\Psr7\Request;
use MicrosoftAzure\Storage\Common\Internal\Http\HttpFormatter;
use MicrosoftAzure\Storage\Common\Internal\Resources;
@ -305,7 +306,7 @@ class SharedKeyAuthScheme implements IAuthScheme
$signedKey = $this->getAuthorizationHeader(
$requestHeaders,
$request->getUri(),
\GuzzleHttp\Psr7\parse_query(
Query::parse(
$request->getUri()->getQuery()
),
$request->getMethod()

Просмотреть файл

@ -241,7 +241,7 @@ class Resources
const BEARER = 'Bearer ';
// Header values
const COMMON_SDK_VERSION = '1.5.1';
const COMMON_SDK_VERSION = '1.5.2';
const INT32_MAX = 2147483647;
const INT32_MIN = -2147483648;

Просмотреть файл

@ -297,7 +297,7 @@ class ServiceRestProxy extends RestProxy
// add query parameters into headers
if ($queryParams != null) {
$queryString = Psr7\build_query($queryParams);
$queryString = Psr7\Query::build($queryParams);
$uri = $uri->withQuery($queryString);
}
@ -306,7 +306,7 @@ class ServiceRestProxy extends RestProxy
if (empty($body)) {
if (empty($headers[Resources::CONTENT_TYPE])) {
$headers[Resources::CONTENT_TYPE] = Resources::URL_ENCODED_CONTENT_TYPE;
$actualBody = Psr7\build_query($postParameters);
$actualBody = Psr7\Query::build($postParameters);
}
} else {
$actualBody = $body;
@ -402,24 +402,38 @@ class ServiceRestProxy extends RestProxy
);
},
function ($reason) use ($expected) {
if (!($reason instanceof RequestException)) {
throw $reason;
}
$response = $reason->getResponse();
if ($response != null) {
self::throwIfError(
$response,
$expected
);
} else {
//if could not get response but promise rejected, throw reason.
throw $reason;
}
return $response;
return $this->onRejected($reason, $expected);
}
);
}
/**
* @param string|\Exception $reason Rejection reason.
* @param array|int $expected Expected Status Codes.
*
* @return ResponseInterface
*/
protected function onRejected($reason, $expected)
{
if (!($reason instanceof \Exception)) {
throw new \RuntimeException($reason);
}
if (!($reason instanceof RequestException)) {
throw $reason;
}
$response = $reason->getResponse();
if ($response != null) {
self::throwIfError(
$response,
$expected
);
} else {
//if could not get response but promise rejected, throw reason.
throw $reason;
}
return $response;
}
/**
* Generate the request options using the given service options and stored
* information.

Просмотреть файл

@ -433,7 +433,7 @@ class Utilities
$cloned = clone $value;
$cloned->setTimezone(new \DateTimeZone('UTC'));
return str_replace('+0000', 'Z', $cloned->format("Y-m-d\TH:i:s.u0O"));
return str_replace('+00:00', 'Z', $cloned->format("Y-m-d\TH:i:s.u0P"));
}
/**
@ -562,7 +562,7 @@ class Utilities
mt_rand(0, 64) + 128, // 8 bits for "clock_seq_hi", with
// the most significant 2 bits being 10,
// required by version 4 GUIDs.
mt_rand(0, 256), // 8 bits for "clock_seq_low"
mt_rand(0, 255), // 8 bits for "clock_seq_low"
mt_rand(0, 65535), // 16 bits for "node 0" and "node 1"
mt_rand(0, 65535), // 16 bits for "node 2" and "node 3"
mt_rand(0, 65535) // 16 bits for "node 4" and "node 5"

Просмотреть файл

@ -291,7 +291,7 @@ class SharedAccessSignatureHelper
}
Validate::isTrue(
strlen($input) == '',
strlen($input) == 0,
sprintf(
Resources::STRING_NOT_WITH_GIVEN_COMBINATION,
implode(', ', $array)