Class: S3::ObjectDeleteBatchRequest
- Defined in:
- lib/s3/object_delete_batch_request.rb
Constant Summary
Constants inherited from Request
Request::AWS_ALGORITHM, Request::AWS_REQUEST, Request::SERVICE, Request::UNSIGNED_PAYLOAD
Instance Method Summary collapse
Methods inherited from Request
Constructor Details
This class inherits a constructor from S3::Request
Instance Method Details
#parse_response(body) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/s3/object_delete_batch_request.rb', line 34 def parse_response( body ) document = parse_xml( body ) document.remove_namespaces! deleted = document.xpath( '//Deleted' ).map do | node | { key: node.at( 'Key' )&.text, version_id: node.at( 'VersionId' )&.text, delete_marker: node.at( 'DeleteMarker' )&.text == 'true', delete_marker_version_id: node.at( 'DeleteMarkerVersionId' )&.text } end errors = document.xpath( '//Error' ).map do | node | { key: node.at( 'Key' )&.text, version_id: node.at( 'VersionId' )&.text, code: node.at( 'Code' )&.text, message: node.at( 'Message' )&.text } end { deleted: deleted, errors: errors } end |
#submit(bucket:, keys:) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/s3/object_delete_batch_request.rb', line 3 def submit( bucket:, keys: ) path = "/#{ bucket }" query = 'delete=' objects_xml = keys.map do | key_item | if key_item.is_a?( Hash ) version_part = key_item[ :version_id ] ? "<VersionId>#{ key_item[ :version_id ] }</VersionId>" : '' "<Object><Key>#{ escape_xml( key_item[ :key ] ) }</Key>#{ version_part }</Object>" else "<Object><Key>#{ escape_xml( key_item ) }</Key></Object>" end end.join body = " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <Delete xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\">\n <Quiet>false</Quiet>\n \#{ objects_xml }\n </Delete>\n XML\n\n content_md5 = Base64.strict_encode64( Digest::MD5.digest( body ) )\n headers = { 'Content-MD5' => content_md5 }\n\n response = post( path, body: body, query: query, headers: headers )\n\n build_result( response, ObjectDeleteBatchResult ) do\n ObjectDeleteBatchResult.new( parse_response( response.body ) )\n end\nend\n" |