2020 *
2121 */
2222
23+ using System ;
2324using System . Collections . Generic ;
2425using Amazon . S3 . Model ;
2526
@@ -37,10 +38,11 @@ internal static class ResponseMapper
3738 /// </summary>
3839 /// <param name="source">The PutObjectResponse to map from</param>
3940 /// <returns>A new TransferUtilityUploadResponse with mapped fields</returns>
41+ /// <exception cref="ArgumentNullException">Thrown when source is null</exception>
4042 internal static TransferUtilityUploadResponse MapPutObjectResponse ( PutObjectResponse source )
4143 {
4244 if ( source == null )
43- return null ;
45+ throw new ArgumentNullException ( nameof ( source ) ) ;
4446
4547 var response = new TransferUtilityUploadResponse ( ) ;
4648
@@ -70,10 +72,11 @@ internal static TransferUtilityUploadResponse MapPutObjectResponse(PutObjectResp
7072 /// </summary>
7173 /// <param name="source">The CompleteMultipartUploadResponse to map from</param>
7274 /// <returns>A new TransferUtilityUploadResponse with mapped fields</returns>
75+ /// <exception cref="ArgumentNullException">Thrown when source is null</exception>
7376 internal static TransferUtilityUploadResponse MapCompleteMultipartUploadResponse ( CompleteMultipartUploadResponse source )
7477 {
7578 if ( source == null )
76- return null ;
79+ throw new ArgumentNullException ( nameof ( source ) ) ;
7780
7881 var response = new TransferUtilityUploadResponse ( ) ;
7982
@@ -94,55 +97,92 @@ internal static TransferUtilityUploadResponse MapCompleteMultipartUploadResponse
9497 return response ;
9598 }
9699
100+ /// <summary>
101+ /// Private helper method to populate the common properties from GetObjectResponse to the base response class.
102+ /// Contains all the shared mapping logic for GetObjectResponse fields.
103+ /// </summary>
104+ /// <param name="source">The GetObjectResponse to map from</param>
105+ /// <param name="target">The TransferUtilityGetObjectResponseBase to populate</param>
106+ /// <exception cref="ArgumentNullException">Thrown when source or target is null</exception>
107+ private static void PopulateGetObjectResponseBase ( GetObjectResponse source , TransferUtilityGetObjectResponseBase target )
108+ {
109+ if ( source == null )
110+ throw new ArgumentNullException ( nameof ( source ) ) ;
111+ if ( target == null )
112+ throw new ArgumentNullException ( nameof ( target ) ) ;
113+
114+ // Map all fields as defined in mapping.json "Conversion" -> "GetObjectResponse" -> "DownloadResponse"
115+ target . AcceptRanges = source . AcceptRanges ;
116+ target . BucketKeyEnabled = source . BucketKeyEnabled . GetValueOrDefault ( ) ;
117+ target . ChecksumCRC32 = source . ChecksumCRC32 ;
118+ target . ChecksumCRC32C = source . ChecksumCRC32C ;
119+ target . ChecksumCRC64NVME = source . ChecksumCRC64NVME ;
120+ target . ChecksumSHA1 = source . ChecksumSHA1 ;
121+ target . ChecksumSHA256 = source . ChecksumSHA256 ;
122+ target . ChecksumType = source . ChecksumType ;
123+ target . ContentRange = source . ContentRange ;
124+ target . Headers = source . Headers ;
125+ target . DeleteMarker = source . DeleteMarker ;
126+ target . ETag = source . ETag ;
127+ target . Expiration = source . Expiration ;
128+ target . ExpiresString = source . ExpiresString ;
129+ target . LastModified = source . LastModified ;
130+ target . Metadata = source . Metadata ;
131+ target . MissingMeta = source . MissingMeta ;
132+ target . ObjectLockLegalHoldStatus = source . ObjectLockLegalHoldStatus ;
133+ target . ObjectLockMode = source . ObjectLockMode ;
134+ target . ObjectLockRetainUntilDate = source . ObjectLockRetainUntilDate ;
135+ target . PartsCount = source . PartsCount ;
136+ target . ReplicationStatus = source . ReplicationStatus ;
137+ target . RequestCharged = source . RequestCharged ;
138+ target . RestoreExpiration = source . RestoreExpiration ;
139+ target . RestoreInProgress = source . RestoreInProgress ;
140+ target . ServerSideEncryptionCustomerMethod = source . ServerSideEncryptionCustomerMethod ;
141+ target . ServerSideEncryptionCustomerProvidedKeyMD5 = source . ServerSideEncryptionCustomerProvidedKeyMD5 ;
142+ target . ServerSideEncryptionKeyManagementServiceKeyId = source . ServerSideEncryptionKeyManagementServiceKeyId ;
143+ target . ServerSideEncryptionMethod = source . ServerSideEncryptionMethod ;
144+ target . StorageClass = source . StorageClass ;
145+ target . TagCount = source . TagCount ;
146+ target . VersionId = source . VersionId ;
147+ target . WebsiteRedirectLocation = source . WebsiteRedirectLocation ;
148+ }
149+
97150 /// <summary>
98151 /// Maps a GetObjectResponse to TransferUtilityDownloadResponse.
99152 /// Uses the field mappings defined in mapping.json "Conversion" -> "GetObjectResponse" -> "DownloadResponse".
100153 /// </summary>
101154 /// <param name="source">The GetObjectResponse to map from</param>
102155 /// <returns>A new TransferUtilityDownloadResponse with mapped fields</returns>
156+ /// <exception cref="ArgumentNullException">Thrown when source is null</exception>
103157 internal static TransferUtilityDownloadResponse MapGetObjectResponse ( GetObjectResponse source )
104158 {
105159 if ( source == null )
106- return null ;
160+ throw new ArgumentNullException ( nameof ( source ) ) ;
107161
108162 var response = new TransferUtilityDownloadResponse ( ) ;
109-
110- // Map all fields as defined in mapping.json "Conversion" -> "GetObjectResponse" -> "DownloadResponse"
111- response . AcceptRanges = source . AcceptRanges ;
112- response . BucketKeyEnabled = source . BucketKeyEnabled . GetValueOrDefault ( ) ;
113- response . ChecksumCRC32 = source . ChecksumCRC32 ;
114- response . ChecksumCRC32C = source . ChecksumCRC32C ;
115- response . ChecksumCRC64NVME = source . ChecksumCRC64NVME ;
116- response . ChecksumSHA1 = source . ChecksumSHA1 ;
117- response . ChecksumSHA256 = source . ChecksumSHA256 ;
118- response . ChecksumType = source . ChecksumType ;
119- response . ContentRange = source . ContentRange ;
120- response . Headers = source . Headers ;
121- response . DeleteMarker = source . DeleteMarker ;
122- response . ETag = source . ETag ;
123- response . Expiration = source . Expiration ;
124- response . ExpiresString = source . ExpiresString ;
125- response . LastModified = source . LastModified ;
126- response . Metadata = source . Metadata ;
127- response . MissingMeta = source . MissingMeta ;
128- response . ObjectLockLegalHoldStatus = source . ObjectLockLegalHoldStatus ;
129- response . ObjectLockMode = source . ObjectLockMode ;
130- response . ObjectLockRetainUntilDate = source . ObjectLockRetainUntilDate ;
131- response . PartsCount = source . PartsCount ;
132- response . ReplicationStatus = source . ReplicationStatus ;
133- response . RequestCharged = source . RequestCharged ;
134- response . RestoreExpiration = source . RestoreExpiration ;
135- response . RestoreInProgress = source . RestoreInProgress ;
136- response . ServerSideEncryptionCustomerMethod = source . ServerSideEncryptionCustomerMethod ;
137- response . ServerSideEncryptionCustomerProvidedKeyMD5 = source . ServerSideEncryptionCustomerProvidedKeyMD5 ;
138- response . ServerSideEncryptionKeyManagementServiceKeyId = source . ServerSideEncryptionKeyManagementServiceKeyId ;
139- response . ServerSideEncryptionMethod = source . ServerSideEncryptionMethod ;
140- response . StorageClass = source . StorageClass ;
141- response . TagCount = source . TagCount ;
142- response . VersionId = source . VersionId ;
143- response . WebsiteRedirectLocation = source . WebsiteRedirectLocation ;
163+ PopulateGetObjectResponseBase ( source , response ) ;
144164 return response ;
145165 }
166+
167+ /// <summary>
168+ /// Maps a GetObjectResponse to TransferUtilityOpenStreamResponse.
169+ /// Uses the same field mappings as DownloadResponse plus the ResponseStream property.
170+ /// </summary>
171+ /// <param name="source">The GetObjectResponse to map from</param>
172+ /// <returns>A new TransferUtilityOpenStreamResponse with mapped fields</returns>
173+ /// <exception cref="ArgumentNullException">Thrown when source is null</exception>
174+ internal static TransferUtilityOpenStreamResponse MapGetObjectResponseToOpenStream ( GetObjectResponse source )
175+ {
176+ if ( source == null )
177+ throw new ArgumentNullException ( nameof ( source ) ) ;
178+
179+ var response = new TransferUtilityOpenStreamResponse ( ) ;
180+ PopulateGetObjectResponseBase ( source , response ) ;
181+ response . ResponseStream = source . ResponseStream ;
182+
183+ return response ;
184+ }
185+
146186
147187 }
148188}
0 commit comments