Class: Omnizip::Formats::Zip::Zip64EndOfCentralDirectoryLocator

Inherits:
Object
  • Object
show all
Includes:
Constants
Defined in:
lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb

Overview

ZIP64 End of Central Directory Locator Points to the ZIP64 End of Central Directory Record

Constant Summary

Constants included from Constants

Constants::ATTR_ARCHIVE, Constants::ATTR_DIRECTORY, Constants::CENTRAL_DIRECTORY_SIGNATURE, Constants::COMPRESSION_BZIP2, Constants::COMPRESSION_DEFLATE, Constants::COMPRESSION_DEFLATE64, Constants::COMPRESSION_IMPLODED, Constants::COMPRESSION_LZMA, Constants::COMPRESSION_PPMD, Constants::COMPRESSION_REDUCED_1, Constants::COMPRESSION_REDUCED_2, Constants::COMPRESSION_REDUCED_3, Constants::COMPRESSION_REDUCED_4, Constants::COMPRESSION_SHRUNK, Constants::COMPRESSION_STORE, Constants::COMPRESSION_ZSTANDARD, Constants::DATA_DESCRIPTOR_SIGNATURE, Constants::END_OF_CENTRAL_DIRECTORY_SIGNATURE, Constants::FLAG_DATA_DESCRIPTOR, Constants::FLAG_ENCRYPTED, Constants::FLAG_STRONG_ENCRYPTION, Constants::FLAG_UTF8, Constants::LOCAL_FILE_HEADER_SIGNATURE, Constants::MAX_COMMENT_LENGTH, Constants::UNIX_DIR_PERMISSIONS, Constants::UNIX_EXTRA_FIELD_TAG, Constants::UNIX_FILE_PERMISSIONS, Constants::UNIX_SYMLINK_PERMISSIONS, Constants::VERSION_BZIP2, Constants::VERSION_DEFAULT, Constants::VERSION_DEFLATE, Constants::VERSION_LZMA, Constants::VERSION_MADE_BY_UNIX, Constants::VERSION_MADE_BY_WINDOWS, Constants::VERSION_ZIP64, Constants::ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE, Constants::ZIP64_END_OF_CENTRAL_DIRECTORY_SIGNATURE, Constants::ZIP64_EXTRA_FIELD_TAG, Constants::ZIP64_LIMIT

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signature: ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE, disk_number_with_zip64_eocd: 0, zip64_eocd_offset: 0, total_disks: 1) ⇒ Zip64EndOfCentralDirectoryLocator

Returns a new instance of Zip64EndOfCentralDirectoryLocator.



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 14

def initialize(
  signature: ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE,
  disk_number_with_zip64_eocd: 0,
  zip64_eocd_offset: 0,
  total_disks: 1
)
  @signature = signature
  @disk_number_with_zip64_eocd = disk_number_with_zip64_eocd
  @zip64_eocd_offset = zip64_eocd_offset
  @total_disks = total_disks
end

Instance Attribute Details

#disk_number_with_zip64_eocdObject

Returns the value of attribute disk_number_with_zip64_eocd.



11
12
13
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 11

def disk_number_with_zip64_eocd
  @disk_number_with_zip64_eocd
end

#signatureObject

Returns the value of attribute signature.



11
12
13
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 11

def signature
  @signature
end

#total_disksObject

Returns the value of attribute total_disks.



11
12
13
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 11

def total_disks
  @total_disks
end

#zip64_eocd_offsetObject

Returns the value of attribute zip64_eocd_offset.



11
12
13
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 11

def zip64_eocd_offset
  @zip64_eocd_offset
end

Class Method Details

.from_binary(data) ⇒ Object

Parse from binary data



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 37

def self.from_binary(data)
  signature, disk_number, offset, total_disks = data.unpack("VVQV")

  unless signature == ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE
    raise Omnizip::FormatError,
          "Invalid ZIP64 EOCD Locator signature"
  end

  new(
    signature: signature,
    disk_number_with_zip64_eocd: disk_number,
    zip64_eocd_offset: offset,
    total_disks: total_disks,
  )
end

.record_sizeObject

Size of this record in bytes (always 20 bytes)



54
55
56
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 54

def self.record_size
  20
end

Instance Method Details

#record_sizeObject



58
59
60
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 58

def record_size
  self.class.record_size
end

#to_binaryObject

Serialize to binary format



27
28
29
30
31
32
33
34
# File 'lib/omnizip/formats/zip/zip64_end_of_central_directory_locator.rb', line 27

def to_binary
  [
    signature,
    disk_number_with_zip64_eocd,
    zip64_eocd_offset,
    total_disks,
  ].pack("VVQV")
end