@@ -831,5 +831,133 @@ internal static BlobStaticWebsite ToBlobStaticWebsite(this DataLakeStaticWebsite
831831 DefaultIndexDocumentPath = dataLakeStaticWebsite . DefaultIndexDocumentPath
832832 } ;
833833 }
834+
835+ #region ValidateConditionsNotPresent
836+ internal static void ValidateConditionsNotPresent (
837+ this RequestConditions requestConditions ,
838+ DataLakeRequestConditionProperty invalidConditions ,
839+ string operationName ,
840+ string parameterName )
841+ {
842+ if ( AppContextSwitchHelper . GetConfigValue (
843+ Constants . DisableRequestConditionsValidationSwitchName ,
844+ Constants . DisableRequestConditionsValidationEnvVar ) )
845+ {
846+ return ;
847+ }
848+
849+ if ( requestConditions == null )
850+ {
851+ return ;
852+ }
853+
854+ List < string > invalidList = null ;
855+ requestConditions . ValidateConditionsNotPresent (
856+ invalidConditions ,
857+ ref invalidList ) ;
858+
859+ if ( invalidList ? . Count > 0 )
860+ {
861+ string unsupportedString = string . Join ( ", " , invalidList ) ;
862+ throw new ArgumentException (
863+ $ "{ operationName } does not support the { unsupportedString } condition(s).",
864+ parameterName ) ;
865+ }
866+ }
867+
868+ internal static void ValidateConditionsNotPresent (
869+ this DataLakeRequestConditions requestConditions ,
870+ DataLakeRequestConditionProperty invalidConditions ,
871+ string operationName ,
872+ string parameterName )
873+ {
874+ if ( AppContextSwitchHelper . GetConfigValue (
875+ Constants . DisableRequestConditionsValidationSwitchName ,
876+ Constants . DisableRequestConditionsValidationEnvVar ) )
877+ {
878+ return ;
879+ }
880+
881+ if ( requestConditions == null )
882+ {
883+ return ;
884+ }
885+
886+ List < string > invalidList = null ;
887+ requestConditions . ValidateConditionsNotPresent (
888+ invalidConditions ,
889+ ref invalidList ) ;
890+
891+ if ( invalidList ? . Count > 0 )
892+ {
893+ string unsupportedString = string . Join ( ", " , invalidList ) ;
894+ throw new ArgumentException (
895+ $ "{ operationName } does not support the { unsupportedString } condition(s).",
896+ parameterName ) ;
897+ }
898+ }
899+
900+ internal static void ValidateConditionsNotPresent (
901+ this RequestConditions requestConditions ,
902+ DataLakeRequestConditionProperty invalidConditions ,
903+ ref List < string > invalidList )
904+ {
905+ if ( requestConditions == null )
906+ {
907+ return ;
908+ }
909+
910+ if ( ( invalidConditions & DataLakeRequestConditionProperty . IfModifiedSince ) == DataLakeRequestConditionProperty . IfModifiedSince
911+ && requestConditions . IfModifiedSince != null )
912+ {
913+ invalidList ??= new List < string > ( ) ;
914+ invalidList . Add ( nameof ( BlobRequestConditions . IfModifiedSince ) ) ;
915+ }
916+
917+ if ( ( invalidConditions & DataLakeRequestConditionProperty . IfUnmodifiedSince ) == DataLakeRequestConditionProperty . IfUnmodifiedSince
918+ && requestConditions . IfUnmodifiedSince != null )
919+ {
920+ invalidList ??= new List < string > ( ) ;
921+ invalidList . Add ( nameof ( BlobRequestConditions . IfUnmodifiedSince ) ) ;
922+ }
923+
924+ if ( ( invalidConditions & DataLakeRequestConditionProperty . IfMatch ) == DataLakeRequestConditionProperty . IfMatch
925+ && requestConditions . IfMatch != null )
926+ {
927+ invalidList ??= new List < string > ( ) ;
928+ invalidList . Add ( nameof ( BlobRequestConditions . IfMatch ) ) ;
929+ }
930+
931+ if ( ( invalidConditions & DataLakeRequestConditionProperty . IfNoneMatch ) == DataLakeRequestConditionProperty . IfNoneMatch
932+ && requestConditions . IfNoneMatch != null )
933+ {
934+ invalidList ??= new List < string > ( ) ;
935+ invalidList . Add ( nameof ( BlobRequestConditions . IfNoneMatch ) ) ;
936+ }
937+ }
938+
939+ internal static void ValidateConditionsNotPresent (
940+ this DataLakeRequestConditions requestConditions ,
941+ DataLakeRequestConditionProperty invalidConditions ,
942+ ref List < string > invalidList )
943+ {
944+ if ( requestConditions == null )
945+ {
946+ return ;
947+ }
948+
949+ // Validate RequestConditions
950+ ( ( RequestConditions ) requestConditions ) . ValidateConditionsNotPresent (
951+ invalidConditions , ref invalidList ) ;
952+
953+ // Validate BlobRequestConditions specific conditions.
954+ if ( ( invalidConditions & DataLakeRequestConditionProperty . LeaseId ) == DataLakeRequestConditionProperty . LeaseId
955+ && requestConditions . LeaseId != null )
956+ {
957+ invalidList ??= new List < string > ( ) ;
958+ invalidList . Add ( nameof ( BlobRequestConditions . LeaseId ) ) ;
959+ }
960+ }
961+ #endregion
834962 }
835963}
0 commit comments