Class: Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/ci/artifacts/decompressed_artifact_size_validator.rb

Constant Summary collapse

DEFAULT_MAX_BYTES =
4.gigabytes.freeze
FILE_FORMAT_VALIDATORS =
{
  gzip: ::Gitlab::Ci::DecompressedGzipSizeValidator
}.freeze
FileDecompressionError =
Class.new(StandardError)

Instance Method Summary collapse

Constructor Details

#initialize(file:, file_format:, max_bytes: DEFAULT_MAX_BYTES) ⇒ DecompressedArtifactSizeValidator

Returns a new instance of DecompressedArtifactSizeValidator.



15
16
17
18
19
20
# File 'lib/gitlab/ci/artifacts/decompressed_artifact_size_validator.rb', line 15

def initialize(file:, file_format:, max_bytes: DEFAULT_MAX_BYTES)
  @file = file
  @file_path = file&.path
  @file_format = file_format
  @max_bytes = max_bytes
end

Instance Method Details

#validate!Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/gitlab/ci/artifacts/decompressed_artifact_size_validator.rb', line 22

def validate!
  validator_class = FILE_FORMAT_VALIDATORS[file_format.to_sym]

  return if file_path.nil?
  return if validator_class.nil?

  if file.respond_to?(:object_store) && file.object_store == ObjectStorage::Store::REMOTE
    return if valid_on_storage?(validator_class)
  elsif validator_class.new(archive_path: file_path, max_bytes: max_bytes).valid?
    return
  end

  raise(FileDecompressionError, 'File decompression error')
end