src/Glacier/GlacierClient.php
private function getChecksumsMiddleware()
    {
        return function (callable $handler) {
            return function (
                CommandInterface $command,
                RequestInterface $request = null
            ) use ($handler) {
                // Accept "ContentSHA256" with a lowercase "c" to match other Glacier params.
                if (!$command['ContentSHA256'] && $command['contentSHA256']) {
                    $command['ContentSHA256'] = $command['contentSHA256'];
                    unset($command['contentSHA256']);
                }

                // If uploading, then make sure checksums are added.
                $name = $command->getName();
                if (($name === 'UploadArchive' || $name === 'UploadMultipartPart')
                    && (!$command['checksum'] || !$command['ContentSHA256'])
                ) {
                    $body = $request->getBody();
                    if (!$body->isSeekable()) {
                        throw new CouldNotCreateChecksumException('sha256');
                    }

                    // Add a tree hash if not provided.
                    if (!$command['checksum']) {
                        $body = new HashingStream(
                            $body, new TreeHash(),
                            function ($result) use ($command, &$request) {
                                $request = $request->withHeader(
                                    'x-amz-sha256-tree-hash',
                                    bin2hex($result)
                                );
                            }
                        );
                    }

                    // Add a linear content hash if not provided.
                    if (!$command['ContentSHA256']) {
                        $body = new HashingStream(
                            $body, new PhpHash('sha256'),
                            function ($result) use ($command) {
                                $command['ContentSHA256'] = bin2hex($result);
                            }
                        );
                    }

                    // Read the stream in order to calculate the hashes.
                    while (!$body->eof()) {
                        $body->read(1048576);
                    }
                    $body->seek(0);
                }

                // Set the content hash header if a value is in the command.
                if ($command['ContentSHA256']) {
                    $request = $request->withHeader(
                        'x-amz-content-sha256',
                        $command['ContentSHA256']
                    );
                }

                return $handler($command, $request);
            };
        };
    }
private function getChecksumsMiddleware()
    {
        return function (callable $handler) {
            return function (
                CommandInterface $command,
                RequestInterface $request = null
            ) use ($handler) {
                // Accept "ContentSHA256" with a lowercase "c" to match other Glacier params.
                if (!$command['ContentSHA256'] && $command['contentSHA256']) {
                    $command['ContentSHA256'] = $command['contentSHA256'];
                    unset($command['contentSHA256']);
                }

                // If uploading, then make sure checksums are added.
                $name = $command->getName();
                if (($name === 'UploadArchive' || $name === 'UploadMultipartPart')
                    && (!$command['checksum'] || !$command['ContentSHA256'])
                ) {
                    $body = $request->getBody();
                    if (!$body->isSeekable()) {
                        throw new CouldNotCreateChecksumException('sha256');
                    }

                    // Add a tree hash if not provided.
                    if (!$command['checksum']) {
                        $body = new HashingStream(
                            $body, new TreeHash(),
                            function ($result) use ($command, &$request) {
                                $request = $request->withHeader(
                                    'x-amz-sha256-tree-hash',
                                    bin2hex($result)
                                );
                            }
                        );
                    }

                    // Add a linear content hash if not provided.
                    if (!$command['ContentSHA256']) {
                        $body = new HashingStream(
                            $body, new PhpHash('sha256'),
                            function ($result) use ($command) {
                                $command['ContentSHA256'] = bin2hex($result);
                            }
                        );
                    }

                    // Read the stream in order to calculate the hashes.
                    while (!$body->eof()) {
                        $body->read(1048576);
                    }
                    $body->seek(0);
                }

                // Set the content hash header if a value is in the command.
                if ($command['ContentSHA256']) {
                    $request = $request->withHeader(
                        'x-amz-content-sha256',
                        $command['ContentSHA256']
                    );
                }

                return $handler($command, $request);
            };
        };
    }
private function getChecksumsMiddleware ( ) { return function ( callable $ handler ) { return function ( CommandInterface $ command , RequestInterface $ request = null ) use ( $ handler ) { // Accept "ContentSHA256" with a lowercase "c" to match other Glacier params. if ( ! $ command [ 'ContentSHA256' ] && $ command [ 'contentSHA256' ] ) { $ command [ 'ContentSHA256' ] = $ command [ 'contentSHA256' ] ; unset ( $ command [ 'contentSHA256' ] ) ; } // If uploading, then make sure checksums are added. $ name = $ command -> getName ( ) ; if ( ( $ name === 'UploadArchive' || $ name === 'UploadMultipartPart' ) && ( ! $ command [ 'checksum' ] || ! $ command [ 'ContentSHA256' ] ) ) { $ body = $ request -> getBody ( ) ; if ( ! $ body -> isSeekable ( ) ) { throw new CouldNotCreateChecksumException ( 'sha256' ) ; } // Add a tree hash if not provided. if ( ! $ command [ 'checksum' ] ) { $ body = new HashingStream ( $ body , new TreeHash ( ) , function ( $ result ) use ( $ command , & $ request ) { $ request = $ request -> withHeader ( 'x-amz-sha256-tree-hash' , bin2hex ( $ result ) ) ; } ) ; } // Add a linear content hash if not provided. if ( ! $ command [ 'ContentSHA256' ] ) { $ body = new HashingStream ( $ body , new PhpHash ( 'sha256' ) , function ( $ result ) use ( $ command ) { $ command [ 'ContentSHA256' ] = bin2hex ( $ result ) ; } ) ; } // Read the stream in order to calculate the hashes. while ( ! $ body -> eof ( ) ) { $ body -> read ( 1048576 ) ; } $ body -> seek ( 0 ) ; } // Set the content hash header if a value is in the command. if ( $ command [ 'ContentSHA256' ] ) { $ request = $ request -> withHeader ( 'x-amz-content-sha256' , $ command [ 'ContentSHA256' ] ) ; } return $ handler ( $ command , $ request ) ; } ; } ; }
Creates a middleware that updates a command with the content and tree
hash headers for upload operations.

@return callable
@throws CouldNotCreateChecksumException if the body is not seekable.
Creates a middleware that updates a command with the content and tree hash headers for upload operations .