Aws\S3\S3Client::getEncodingTypeMiddleware PHP Method

getEncodingTypeMiddleware() private method

Provides a middleware that autopopulates the EncodingType parameter on ListObjects commands.
    private function getEncodingTypeMiddleware()
    {
        return static function (callable $handler) {
            return function (Command $command, $request = null) use($handler) {
                $autoSet = false;
                if ($command->getName() === 'ListObjects' && empty($command['EncodingType'])) {
                    $command['EncodingType'] = 'url';
                    $autoSet = true;
                }
                return $handler($command, $request)->then(function (ResultInterface $result) use($autoSet) {
                    if ($result['EncodingType'] === 'url' && $autoSet) {
                        static $topLevel = ['Delimiter', 'Marker', 'NextMarker', 'Prefix'];
                        static $nested = [['Contents', 'Key'], ['CommonPrefixes', 'Prefix']];
                        foreach ($topLevel as $key) {
                            if (isset($result[$key])) {
                                $result[$key] = urldecode($result[$key]);
                            }
                        }
                        foreach ($nested as $steps) {
                            if (isset($result[$steps[0]])) {
                                foreach ($result[$steps[0]] as &$part) {
                                    if (isset($part[$steps[1]])) {
                                        $part[$steps[1]] = urldecode($part[$steps[1]]);
                                    }
                                }
                            }
                        }
                    }
                    return $result;
                });
            };
        };
    }