| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 | <?phpnamespace Aws\S3;use Aws\AwsClientInterface;use Aws\CommandInterface;use Aws\ResultInterface;use Aws\S3\Exception\S3Exception;use GuzzleHttp\Promise\PromiseInterface;use Psr\Http\Message\RequestInterface;interface S3ClientInterface extends AwsClientInterface{    /**     * Create a pre-signed URL for the given S3 command object.     *     * @param CommandInterface              $command Command to create a pre-signed     *                                               URL for.     * @param int|string|\DateTimeInterface $expires The time at which the URL should     *                                               expire. This can be a Unix     *                                               timestamp, a PHP DateTime object,     *                                               or a string that can be evaluated     *                                               by strtotime().     *     * @return RequestInterface     */    public function createPresignedRequest(CommandInterface $command, $expires, array $options = []);    /**     * Returns the URL to an object identified by its bucket and key.     *     * The URL returned by this method is not signed nor does it ensure that the     * bucket and key given to the method exist. If you need a signed URL, then     * use the {@see \Aws\S3\S3Client::createPresignedRequest} method and get     * the URI of the signed request.     *     * @param string $bucket  The name of the bucket where the object is located     * @param string $key     The key of the object     *     * @return string The URL to the object     */    public function getObjectUrl($bucket, $key);    /**     * @deprecated Use doesBucketExistV2() instead     *     * Determines whether or not a bucket exists by name.     *     * @param string $bucket  The name of the bucket     *     * @return bool     */    public function doesBucketExist($bucket);    /**     * Determines whether or not a bucket exists by name. This method uses S3's     * HeadBucket operation and requires the relevant bucket permissions in the     * default case to prevent errors.     *     * @param string $bucket  The name of the bucket     * @param bool $accept403 Set to true for this method to return true in the case of     *                        invalid bucket-level permissions. Credentials MUST be valid     *                        to avoid inaccuracies. Using the default value of false will     *                        cause an exception to be thrown instead.     *     * @return bool     * @throws S3Exception|\Exception if there is an unhandled exception     */    public function doesBucketExistV2($bucket, $accept403);    /**     * @deprecated Use doesObjectExistV2() instead     *     * Determines whether or not an object exists by name.     *     * @param string $bucket  The name of the bucket     * @param string $key     The key of the object     * @param array  $options Additional options available in the HeadObject     *                        operation (e.g., VersionId).     *     * @return bool     */    public function doesObjectExist($bucket, $key, array $options = []);    /**     * Determines whether or not an object exists by name. This method uses S3's HeadObject     * operation and requires the relevant bucket and object permissions to prevent errors.     *     * @param string $bucket The name of the bucket     * @param string $key The key of the object     * @param bool $includeDeleteMarkers Set to true to consider delete markers     *                                   existing objects. Using the default value     *                                   of false will ignore delete markers and     *                                   return false.     * @param array $options Additional options available in the HeadObject     *                        operation (e.g., VersionId).     *     * @return bool     * @throws S3Exception|\Exception if there is an unhandled exception     */    public function doesObjectExistV2($bucket, $key, $includeDeleteMarkers = false, array $options = []);    /**     * Register the Amazon S3 stream wrapper with this client instance.     */    public function registerStreamWrapper();    /**     * Registers the Amazon S3 stream wrapper with this client instance.     *     *This version uses doesObjectExistV2 and doesBucketExistV2 to check     * resource existence.     */    public function registerStreamWrapperV2();    /**     * Deletes objects from Amazon S3 that match the result of a ListObjects     * operation. For example, this allows you to do things like delete all     * objects that match a specific key prefix.     *     * @param string $bucket  Bucket that contains the object keys     * @param string $prefix  Optionally delete only objects under this key prefix     * @param string $regex   Delete only objects that match this regex     * @param array  $options Aws\S3\BatchDelete options array.     *     * @see Aws\S3\S3Client::listObjects     * @throws \RuntimeException if no prefix and no regex is given     */    public function deleteMatchingObjects(        $bucket,        $prefix = '',        $regex = '',        array $options = []    );    /**     * Deletes objects from Amazon S3 that match the result of a ListObjects     * operation. For example, this allows you to do things like delete all     * objects that match a specific key prefix.     *     * @param string $bucket  Bucket that contains the object keys     * @param string $prefix  Optionally delete only objects under this key prefix     * @param string $regex   Delete only objects that match this regex     * @param array  $options Aws\S3\BatchDelete options array.     *     * @see Aws\S3\S3Client::listObjects     *     * @return PromiseInterface     A promise that is settled when matching     *                              objects are deleted.     */    public function deleteMatchingObjectsAsync(        $bucket,        $prefix = '',        $regex = '',        array $options = []    );    /**     * Upload a file, stream, or string to a bucket.     *     * If the upload size exceeds the specified threshold, the upload will be     * performed using concurrent multipart uploads.     *     * The options array accepts the following options:     *     * - before_upload: (callable) Callback to invoke before any upload     *   operations during the upload process. The callback should have a     *   function signature like `function (Aws\Command $command) {...}`.     * - concurrency: (int, default=int(3)) Maximum number of concurrent     *   `UploadPart` operations allowed during a multipart upload.     * - mup_threshold: (int, default=int(16777216)) The size, in bytes, allowed     *   before the upload must be sent via a multipart upload. Default: 16 MB.     * - params: (array, default=array([])) Custom parameters to use with the     *   upload. For single uploads, they must correspond to those used for the     *   `PutObject` operation. For multipart uploads, they correspond to the     *   parameters of the `CreateMultipartUpload` operation.     * - part_size: (int) Part size to use when doing a multipart upload.     *     * @param string $bucket  Bucket to upload the object.     * @param string $key     Key of the object.     * @param mixed  $body    Object data to upload. Can be a     *                        StreamInterface, PHP stream resource, or a     *                        string of data to upload.     * @param string $acl     ACL to apply to the object (default: private).     * @param array  $options Options used to configure the upload process.     *     * @see Aws\S3\MultipartUploader for more info about multipart uploads.     * @return ResultInterface Returns the result of the upload.     */    public function upload(        $bucket,        $key,        $body,        $acl = 'private',        array $options = []    );    /**     * Upload a file, stream, or string to a bucket asynchronously.     *     * @param string $bucket  Bucket to upload the object.     * @param string $key     Key of the object.     * @param mixed  $body    Object data to upload. Can be a     *                        StreamInterface, PHP stream resource, or a     *                        string of data to upload.     * @param string $acl     ACL to apply to the object (default: private).     * @param array  $options Options used to configure the upload process.     *     * @see self::upload     * @return PromiseInterface     Returns a promise that will be fulfilled     *                              with the result of the upload.     */    public function uploadAsync(        $bucket,        $key,        $body,        $acl = 'private',        array $options = []    );    /**     * Copy an object of any size to a different location.     *     * If the upload size exceeds the maximum allowable size for direct S3     * copying, a multipart copy will be used.     *     * The options array accepts the following options:     *     * - before_upload: (callable) Callback to invoke before any upload     *   operations during the upload process. The callback should have a     *   function signature like `function (Aws\Command $command) {...}`.     * - concurrency: (int, default=int(5)) Maximum number of concurrent     *   `UploadPart` operations allowed during a multipart upload.     * - params: (array, default=array([])) Custom parameters to use with the     *   upload. For single uploads, they must correspond to those used for the     *   `CopyObject` operation. For multipart uploads, they correspond to the     *   parameters of the `CreateMultipartUpload` operation.     * - part_size: (int) Part size to use when doing a multipart upload.     *     * @param string $fromBucket    Bucket where the copy source resides.     * @param string $fromKey       Key of the copy source.     * @param string $destBucket    Bucket to which to copy the object.     * @param string $destKey       Key to which to copy the object.     * @param string $acl           ACL to apply to the copy (default: private).     * @param array  $options       Options used to configure the upload process.     *     * @see Aws\S3\MultipartCopy for more info about multipart uploads.     * @return ResultInterface Returns the result of the copy.     */    public function copy(        $fromBucket,        $fromKey,        $destBucket,        $destKey,        $acl = 'private',        array $options = []    );    /**     * Copy an object of any size to a different location asynchronously.     *     * @param string $fromBucket    Bucket where the copy source resides.     * @param string $fromKey       Key of the copy source.     * @param string $destBucket    Bucket to which to copy the object.     * @param string $destKey       Key to which to copy the object.     * @param string $acl           ACL to apply to the copy (default: private).     * @param array  $options       Options used to configure the upload process.     *     * @see self::copy for more info about the parameters above.     * @return PromiseInterface     Returns a promise that will be fulfilled     *                              with the result of the copy.     */    public function copyAsync(        $fromBucket,        $fromKey,        $destBucket,        $destKey,        $acl = 'private',        array $options = []    );    /**     * Recursively uploads all files in a given directory to a given bucket.     *     * @param string $directory Full path to a directory to upload     * @param string $bucket    Name of the bucket     * @param string $keyPrefix Virtual directory key prefix to add to each upload     * @param array  $options   Options available in Aws\S3\Transfer::__construct     *     * @see Aws\S3\Transfer for more options and customization     */    public function uploadDirectory(        $directory,        $bucket,        $keyPrefix = null,        array $options = []    );    /**     * Recursively uploads all files in a given directory to a given bucket.     *     * @param string $directory Full path to a directory to upload     * @param string $bucket    Name of the bucket     * @param string $keyPrefix Virtual directory key prefix to add to each upload     * @param array  $options   Options available in Aws\S3\Transfer::__construct     *     * @see Aws\S3\Transfer for more options and customization     *     * @return PromiseInterface A promise that is settled when the upload is     *                          complete.     */    public function uploadDirectoryAsync(        $directory,        $bucket,        $keyPrefix = null,        array $options = []    );    /**     * Downloads a bucket to the local filesystem     *     * @param string $directory Directory to download to     * @param string $bucket    Bucket to download from     * @param string $keyPrefix Only download objects that use this key prefix     * @param array  $options   Options available in Aws\S3\Transfer::__construct     */    public function downloadBucket(        $directory,        $bucket,        $keyPrefix = '',        array $options = []    );    /**     * Downloads a bucket to the local filesystem     *     * @param string $directory Directory to download to     * @param string $bucket    Bucket to download from     * @param string $keyPrefix Only download objects that use this key prefix     * @param array  $options   Options available in Aws\S3\Transfer::__construct     *     * @return PromiseInterface A promise that is settled when the download is     *                          complete.     */    public function downloadBucketAsync(        $directory,        $bucket,        $keyPrefix = '',        array $options = []    );    /**     * Returns the region in which a given bucket is located.     *     * @param string $bucketName     *     * @return string     */    public function determineBucketRegion($bucketName);    /**     * Returns a promise fulfilled with the region in which a given bucket is     * located.     *     * @param string $bucketName     *     * @return PromiseInterface     */    public function determineBucketRegionAsync($bucketName);}
 |