@@ -72,20 +72,25 @@ public function index(Request $request): JsonResponse|Response
7272 return $ this ->json ($ this ->subscriberCollectionNormalizer ->normalize ($ collection , $ prevId , $ afterId ));
7373 }
7474
75+ /**
76+ * @SuppressWarnings("CyclomaticComplexity")
77+ */
7578 #[Route('/export ' , name: 'export ' , methods: ['GET ' ])]
7679 public function export (Request $ request ): Response
7780 {
7881 $ exportRequest = $ this ->subscriberExportRequestFactory ->fromQuery ($ request ->query );
7982
8083 $ upstreamResponse = $ this ->subscribersClient ->exportSubscribers ($ exportRequest );
84+ $ statusCode = $ upstreamResponse ->getStatusCode ();
85+ $ isSuccessfulExport = $ statusCode >= 200 && $ statusCode < 300 ;
8186
8287 $ contentType = $ upstreamResponse ->getHeaderLine ('Content-Type ' );
83- if ($ contentType === '' ) {
88+ if ($ isSuccessfulExport && $ contentType === '' ) {
8489 $ contentType = 'text/csv; charset=UTF-8 ' ;
8590 }
8691
8792 $ contentDisposition = $ upstreamResponse ->getHeaderLine ('Content-Disposition ' );
88- if ($ contentDisposition === '' ) {
93+ if ($ isSuccessfulExport && $ contentDisposition === '' ) {
8994 $ contentDisposition = sprintf (
9095 'attachment; filename="subscribers_export_%s.csv" ' ,
9196 date ('Y-m-d_H-i-s ' )
@@ -102,10 +107,15 @@ static function () use ($body): void {
102107 echo $ body ->read (8192 );
103108 }
104109 },
105- $ upstreamResponse -> getStatusCode ()
110+ $ statusCode
106111 );
107- $ response ->headers ->set ('Content-Type ' , $ contentType );
108- $ response ->headers ->set ('Content-Disposition ' , $ contentDisposition );
112+ if ($ contentType !== '' ) {
113+ $ response ->headers ->set ('Content-Type ' , $ contentType );
114+ }
115+
116+ if ($ contentDisposition !== '' ) {
117+ $ response ->headers ->set ('Content-Disposition ' , $ contentDisposition );
118+ }
109119
110120 return $ response ;
111121 }
0 commit comments