class Aws::Plugins::DynamoDBCRC32Validation::Handler

Public Instance Methods

call(context) click to toggle source
# File lib/aws-sdk-core/plugins/dynamodb_crc32_validation.rb, line 21
def call(context)
  # disable response gzipping - Net::HTTP unzips these responses
  # before we can see the body, making it impossible to verify
  # the CRC32 checksum against the compressed body stream
  context.http_request.headers['accept-encoding'] = ''

  @handler.call(context).on_success do |response|
    response.error = validate(context)
  end
end

Private Instance Methods

crc32_is_valid?(response) click to toggle source
# File lib/aws-sdk-core/plugins/dynamodb_crc32_validation.rb, line 41
def crc32_is_valid?(response)
  if crc_checksum = response.headers['x-amz-crc32']
    crc_checksum.to_i == Zlib.crc32(response.body_contents)
  else
    true
  end
end
validate(context) click to toggle source
# File lib/aws-sdk-core/plugins/dynamodb_crc32_validation.rb, line 34
def validate(context)
  unless crc32_is_valid?(context.http_response)
    msg = "Response failed CRC32 check."
    return Aws::DynamoDB::Errors::CRC32CheckFailed.new(context, msg)
  end
end