Files
therinaldos.com/wedding-pics/3rdparty/microsoft/azure-storage-blob/src/Blob/Models/AccessCondition.php
T
david ef1ff240d4
Build & Deploy to DigitalOcean Space / build (push) Failing after 2m38s
migrate therinaldos.com data
2024-05-05 15:50:45 -04:00

356 lines
13 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* LICENSE: The MIT License (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* https://github.com/azure/azure-storage-php/LICENSE
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PHP version 5
*
* @category Microsoft
* @package MicrosoftAzure\Storage\Blob\Models
* @author Azure Storage PHP SDK <dmsh@microsoft.com>
* @copyright 2016 Microsoft Corporation
* @license https://github.com/azure/azure-storage-php/LICENSE
* @link https://github.com/azure/azure-storage-php
*/
namespace MicrosoftAzure\Storage\Blob\Models;
use MicrosoftAzure\Storage\Blob\Internal\BlobResources as Resources;
use MicrosoftAzure\Storage\Common\Internal\Validate;
use MicrosoftAzure\Storage\Common\Internal\WindowsAzureUtilities;
/**
* Represents a set of access conditions to be used for operations against the
* storage services.
*
* @category Microsoft
* @package MicrosoftAzure\Storage\Blob\Models
* @author Azure Storage PHP SDK <dmsh@microsoft.com>
* @copyright 2016 Microsoft Corporation
* @license https://github.com/azure/azure-storage-php/LICENSE
* @link https://github.com/azure/azure-storage-php
*/
class AccessCondition
{
private $_header = Resources::EMPTY_STRING;
private $_value;
/**
* Constructor
*
* @param string $headerType header name
* @param string $value header value
*
* @internal
*/
protected function __construct($headerType, $value)
{
$this->setHeader($headerType);
$this->setValue($value);
}
/**
* Specifies that no access condition is set.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function none()
{
return new AccessCondition(Resources::EMPTY_STRING, null);
}
/**
* Returns an access condition such that an operation will be performed only if
* the resource's ETag value matches the specified ETag value.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>If-Match</i> conditional header. If this access condition is set, the
* operation is performed only if the ETag of the resource matches the specified
* ETag.
* <p>
* For more information, see
* <a href= 'http://go.microsoft.com/fwlink/?LinkID=224642&clcid=0x409'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param string $etag a string that represents the ETag value to check.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifMatch($etag)
{
return new AccessCondition(Resources::IF_MATCH, $etag);
}
/**
* Returns an access condition such that an operation will be performed only if
* the resource has been modified since the specified time.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>If-Modified-Since</i> conditional header. If this access condition is set,
* the operation is performed only if the resource has been modified since the
* specified time.
* <p>
* For more information, see
* <a href= 'http://go.microsoft.com/fwlink/?LinkID=224642&clcid=0x409'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param \DateTime $lastModified date that represents the last-modified
* time to check for the resource.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifModifiedSince(\DateTime $lastModified)
{
Validate::isDate($lastModified);
return new AccessCondition(
Resources::IF_MODIFIED_SINCE,
$lastModified
);
}
/**
* Returns an access condition such that an operation will be performed only if
* the resource's ETag value does not match the specified ETag value.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>If-None-Match</i> conditional header. If this access condition is set, the
* operation is performed only if the ETag of the resource does not match the
* specified ETag.
* <p>
* For more information,
* see <a href= 'http://go.microsoft.com/fwlink/?LinkID=224642&clcid=0x409'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param string $etag string that represents the ETag value to check.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifNoneMatch($etag)
{
return new AccessCondition(Resources::IF_NONE_MATCH, $etag);
}
/**
* Returns an access condition such that an operation will be performed only if
* the resource has not been modified since the specified time.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>If-Unmodified-Since</i> conditional header. If this access condition is
* set, the operation is performed only if the resource has not been modified
* since the specified time.
* <p>
* For more information, see
* <a href= 'http://go.microsoft.com/fwlink/?LinkID=224642&clcid=0x409'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param \DateTime $lastModified date that represents the last-modified
* time to check for the resource.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifNotModifiedSince(\DateTime $lastModified)
{
Validate::isDate($lastModified);
return new AccessCondition(
Resources::IF_UNMODIFIED_SINCE,
$lastModified
);
}
/**
* Returns an access condition such that an operation will be performed only if
* the operation would cause the blob to exceed that limit or if the append
* position is equal to this number.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>x-ms-blob-condition-appendpos</i> conditional header. If this access condition
* is set, the operation is performed only if the append position is equal to this number
* <p>
* For more information,
* see <a href= 'https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/append-block'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param int $appendPosition int that represents the append position
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function appendPosition($appendPosition)
{
return new AccessCondition(Resources::MAX_APPEND_POSITION, $appendPosition);
}
/**
* Returns an access condition such that an operation will be performed only if
* the operation would cause the blob to exceed that limit or if the blob size
* is already greater than the value specified in this header.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>x-ms-blob-condition-maxsize</i> conditional header. If this access condition
* is set, the operation is performed only if the operation would cause the blob
* to exceed that limit or if the blob size is already greater than the value
* specified in this header.
* <p>
* For more information,
* see <a href= 'https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/append-block'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param int $maxBlobSize int that represents the max blob size
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function maxBlobSize($maxBlobSize)
{
return new AccessCondition(Resources::MAX_BLOB_SIZE, $maxBlobSize);
}
/**
* Returns an access condition such that an operation will be performed only if
* the blobs sequence number is less than the specified value.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>x-ms-if-sequence-number-lt</i> conditional header. If this access condition
* is set, the operation is performed only if the blobs sequence number is less
* than the specified value.
* <p>
* For more information,
* see <a href= 'https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/put-page'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param int $sequenceNumber int that represents the sequence number value to check.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifSequenceNumberLessThan($sequenceNumber)
{
return new AccessCondition(Resources::SEQUENCE_NUMBER_LESS_THAN, $sequenceNumber);
}
/**
* Returns an access condition such that an operation will be performed only if
* the blobs sequence number is equal to the specified value.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>x-ms-if-sequence-number-eq</i> conditional header. If this access condition
* is set, the operation is performed only if the blobs sequence number is equal to
* the specified value.
* <p>
* For more information,
* see <a href= 'https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/put-page'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param int $sequenceNumber int that represents the sequence number value to check.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifSequenceNumberEqual($sequenceNumber)
{
return new AccessCondition(Resources::SEQUENCE_NUMBER_EQUAL, $sequenceNumber);
}
/**
* Returns an access condition such that an operation will be performed only if
* the blobs sequence number is less than or equal to the specified value.
* <p>
* Setting this access condition modifies the request to include the HTTP
* <i>x-ms-if-sequence-number-le</i> conditional header. If this access condition
* is set, the operation is performed only if the blobs sequence number is less
* than or equal to the specified value.
* <p>
* For more information,
* see <a href= 'https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/put-page'>
* Specifying Conditional Headers for Blob Service Operations</a>.
*
* @param int $sequenceNumber int that represents the sequence number value to check.
*
* @return \MicrosoftAzure\Storage\Blob\Models\AccessCondition
*/
public static function ifSequenceNumberLessThanOrEqual($sequenceNumber)
{
return new AccessCondition(Resources::SEQUENCE_NUMBER_LESS_THAN_OR_EQUAL, $sequenceNumber);
}
/**
* Sets header type
*
* @param string $headerType can be one of Resources
*
* @return void
*/
public function setHeader($headerType)
{
$valid = AccessCondition::isValid($headerType);
Validate::isTrue($valid, Resources::INVALID_HT_MSG);
$this->_header = $headerType;
}
/**
* Gets header type
*
* @return string
*/
public function getHeader()
{
return $this->_header;
}
/**
* Sets the header value
*
* @param string $value the value to use
*
* @return void
*/
public function setValue($value)
{
$this->_value = $value;
}
/**
* Gets the header value
*
* @return string
*/
public function getValue()
{
return $this->_value;
}
/**
* Check if the $headerType belongs to valid header types
*
* @param string $headerType candidate header type
*
* @internal
*
* @return boolean
*/
public static function isValid($headerType)
{
if ($headerType == Resources::EMPTY_STRING
|| $headerType == Resources::IF_UNMODIFIED_SINCE
|| $headerType == Resources::IF_MATCH
|| $headerType == Resources::IF_MODIFIED_SINCE
|| $headerType == Resources::IF_NONE_MATCH
|| $headerType == Resources::MAX_BLOB_SIZE
|| $headerType == Resources::MAX_APPEND_POSITION
|| $headerType == Resources::SEQUENCE_NUMBER_LESS_THAN_OR_EQUAL
|| $headerType == Resources::SEQUENCE_NUMBER_LESS_THAN
|| $headerType == Resources::SEQUENCE_NUMBER_EQUAL
) {
return true;
} else {
return false;
}
}
}