@@ -643,7 +643,12 @@ static function (Models\DeleteObjectResult $result, OperationOutput $output) {
643643 public static function fromDeleteMultipleObjects (Models \DeleteMultipleObjectsRequest $ request ): OperationInput
644644 {
645645 Functions::assertFieldRequired ('bucket ' , $ request ->bucket );
646- Functions::assertFieldRequired ('objects ' , $ request ->objects );
646+ if (isset ($ request ->objects ) && isset ($ request ->body )) {
647+ throw new \InvalidArgumentException ('objects and body cannot be set simultaneously ' );
648+ }
649+ if (!isset ($ request ->objects ) && !isset ($ request ->delete )) {
650+ throw new \InvalidArgumentException ('objects and delete must have one set ' );
651+ }
647652 $ input = new OperationInput (
648653 'DeleteMultipleObjects ' ,
649654 'POST ' ,
@@ -659,25 +664,55 @@ static function (Models\DeleteMultipleObjectsRequest $request, OperationInput $i
659664 if (isset ($ request ->encodingType )) {
660665 $ input ->setParameter ('encoding-type ' , $ request ->encodingType );
661666 }
662- $ xmlStr = '<?xml version="1.0" encoding="UTF-8"?> ' ;
663- $ xmlStr .= "\n<Delete> \n" ;
664- if (isset ($ request ->quiet )) {
665- $ val = $ request ->quiet === true ? 'true ' : 'false ' ;
666- $ xmlStr .= "<Quiet> $ val</Quiet> \n" ;
667+ if (isset ($ request ->objects ) && isset ($ request ->body )) {
668+ throw new \InvalidArgumentException ('objects and body cannot be set simultaneously ' );
667669 }
668- foreach ($ request ->objects as $ obj ) {
669- $ xmlStr .= "<Object> \n" ;
670- if (isset ($ obj ->key )) {
671- $ key = Utils::escapeXml ($ obj ->key );
672- $ xmlStr .= "<Key> $ key</Key> \n" ;
670+ if (isset ($ request ->objects )) {
671+ $ xmlStr = '<?xml version="1.0" encoding="UTF-8"?> ' ;
672+ $ xmlStr .= "\n<Delete> \n" ;
673+ if (isset ($ request ->quiet )) {
674+ $ val = $ request ->quiet === true ? 'true ' : 'false ' ;
675+ $ xmlStr .= "<Quiet> $ val</Quiet> \n" ;
676+ }
677+ foreach ($ request ->objects as $ obj ) {
678+ $ xmlStr .= "<Object> \n" ;
679+ if (isset ($ obj ->key )) {
680+ $ key = Utils::escapeXml ($ obj ->key );
681+ $ xmlStr .= "<Key> $ key</Key> \n" ;
682+ }
683+ if (isset ($ obj ->versionId )) {
684+ $ xmlStr .= "<VersionId> $ obj ->versionId </VersionId> \n" ;
685+ }
686+ $ xmlStr .= "</Object> \n" ;
673687 }
674- if (isset ($ obj ->versionId )) {
675- $ xmlStr .= "<VersionId> $ obj ->versionId </VersionId> \n" ;
688+ $ xmlStr .= '</Delete> ' ;
689+ $ input ->setBody (Utils::streamFor ($ xmlStr ));
690+ } else {
691+ /**
692+ * @var Models\Delete
693+ */
694+ $ delete = $ request ->delete ;
695+ $ xmlStr = '<?xml version="1.0" encoding="UTF-8"?> ' ;
696+ $ xmlStr .= "\n<Delete> \n" ;
697+ $ val = 'false ' ;
698+ if (isset ($ delete ->quiet )) {
699+ $ val = $ delete ->quiet === true ? 'true ' : 'false ' ;
700+ }
701+ $ xmlStr .= "<Quiet> $ val</Quiet> \n" ;
702+ foreach ($ delete ->objects as $ obj ) {
703+ $ xmlStr .= "<Object> \n" ;
704+ if (isset ($ obj ->key )) {
705+ $ key = Utils::escapeXml ($ obj ->key );
706+ $ xmlStr .= "<Key> $ key</Key> \n" ;
707+ }
708+ if (isset ($ obj ->versionId )) {
709+ $ xmlStr .= "<VersionId> $ obj ->versionId </VersionId> \n" ;
710+ }
711+ $ xmlStr .= "</Object> \n" ;
676712 }
677- $ xmlStr .= "</Object> \n" ;
713+ $ xmlStr .= '</Delete> ' ;
714+ $ input ->setBody (Utils::streamFor ($ xmlStr ));
678715 }
679- $ xmlStr .= '</Delete> ' ;
680- $ input ->setBody (Utils::streamFor ($ xmlStr ));
681716 },
682717 [Functions::class, 'addContentMd5 ' ]
683718 ];
0 commit comments