|
43 | 43 | DeleteObjectTaggingRequest,
|
44 | 44 | ETag,
|
45 | 45 | Expiration,
|
| 46 | + Expression, |
| 47 | + ExpressionType, |
46 | 48 | GetBucketAclOutput,
|
47 | 49 | GetBucketAnalyticsConfigurationOutput,
|
48 | 50 | GetBucketCorsOutput,
|
|
65 | 67 | GetObjectTaggingRequest,
|
66 | 68 | HeadObjectOutput,
|
67 | 69 | HeadObjectRequest,
|
| 70 | + InputSerialization, |
68 | 71 | IntelligentTieringConfiguration,
|
69 | 72 | IntelligentTieringConfigurationList,
|
70 | 73 | IntelligentTieringId,
|
|
95 | 98 | ObjectKey,
|
96 | 99 | ObjectLockToken,
|
97 | 100 | ObjectVersionId,
|
| 101 | + OutputSerialization, |
98 | 102 | PostResponse,
|
99 | 103 | PreconditionFailed,
|
100 | 104 | PutBucketAclRequest,
|
|
111 | 115 | ReplicationConfiguration,
|
112 | 116 | ReplicationConfigurationNotFoundError,
|
113 | 117 | RequestPayer,
|
| 118 | + RequestProgress, |
114 | 119 | S3Api,
|
| 120 | + ScanRange, |
115 | 121 | SelectObjectContentOutput,
|
116 |
| - SelectObjectContentRequest, |
117 | 122 | SkipValidation,
|
| 123 | + SSECustomerAlgorithm, |
| 124 | + SSECustomerKey, |
| 125 | + SSECustomerKeyMD5, |
118 | 126 | StorageClass,
|
119 | 127 | Token,
|
120 | 128 | )
|
@@ -435,7 +443,7 @@ def head_object(
|
435 | 443 | # this is a bug in AWS: it sets the content encoding header to an empty string (parity tested)
|
436 | 444 | response["ContentEncoding"] = ""
|
437 | 445 |
|
438 |
| - if request.get("ChecksumMode") == "ENABLED" and checksum_algorithm: |
| 446 | + if (request.get("ChecksumMode") or "").upper() == "ENABLED" and checksum_algorithm: |
439 | 447 | response[f"Checksum{checksum_algorithm.upper()}"] = key_object.checksum_value # noqa
|
440 | 448 |
|
441 | 449 | if not request.get("VersionId"):
|
@@ -485,7 +493,7 @@ def get_object(self, context: RequestContext, request: GetObjectRequest) -> GetO
|
485 | 493 | # this is a bug in AWS: it sets the content encoding header to an empty string (parity tested)
|
486 | 494 | response["ContentEncoding"] = ""
|
487 | 495 |
|
488 |
| - if request.get("ChecksumMode") == "ENABLED" and checksum_algorithm: |
| 496 | + if (request.get("ChecksumMode") or "").upper() == "ENABLED" and checksum_algorithm: |
489 | 497 | response[f"Checksum{checksum_algorithm.upper()}"] = key_object.checksum_value # noqa
|
490 | 498 |
|
491 | 499 | if not version_id and (
|
@@ -1558,11 +1566,21 @@ def get_bucket_logging(
|
1558 | 1566 |
|
1559 | 1567 | return GetBucketLoggingOutput(LoggingEnabled=moto_bucket.logging)
|
1560 | 1568 |
|
1561 |
| - @handler("SelectObjectContent", expand=False) |
1562 | 1569 | def select_object_content(
|
1563 | 1570 | self,
|
1564 | 1571 | context: RequestContext,
|
1565 |
| - request: SelectObjectContentRequest, |
| 1572 | + bucket: BucketName, |
| 1573 | + key: ObjectKey, |
| 1574 | + expression: Expression, |
| 1575 | + expression_type: ExpressionType, |
| 1576 | + input_serialization: InputSerialization, |
| 1577 | + output_serialization: OutputSerialization, |
| 1578 | + sse_customer_algorithm: SSECustomerAlgorithm = None, |
| 1579 | + sse_customer_key: SSECustomerKey = None, |
| 1580 | + sse_customer_key_md5: SSECustomerKeyMD5 = None, |
| 1581 | + request_progress: RequestProgress = None, |
| 1582 | + scan_range: ScanRange = None, |
| 1583 | + expected_bucket_owner: AccountId = None, |
1566 | 1584 | ) -> SelectObjectContentOutput:
|
1567 | 1585 | # this operation is currently implemented by moto, but raises a 500 error because of the format necessary,
|
1568 | 1586 | # and streaming capability.
|
|
0 commit comments