# Functions

CleanDir cleans the contents of a directory including its sub directories, but does NOT remove the directory itself.
NewDataProcessor create a new instance of a data processor using the passed in data provider.
NewFormatReaders creates a new instance of FormatReaders using the input stream and content type passed in.
NewHTTPDataSource creates a new instance of the http data provider.
NewRegistryDataSource creates a new instance of the Registry Data Source.
NewS3DataSource creates a new instance of the S3DataSource.
NewUploadDataSource creates a new instance of an UploadDataSource.
ParseEndpoint parses the required endpoint and return the url struct.
ResizeImage resizes the images to match the requested size.

# Constants

ProcessingPhaseComplete is the phase where the entire process completed successfully and we can exit gracefully.
ProcessingPhaseConvert is the phase in which the data is taken from the url provided by the source, and it is converted to the target RAW disk image format.
ProcessingPhaseError is the phase in which we encountered an error and need to exit ungracefully.
ProcessingPhaseInfo is the first phase, during this phase the source obtains information needed to determine which phase to go to next.
ProcessingPhaseProcess is the phase in which the data source processes the data just written to the scratch space.
ProcessingPhaseResize the disk image, this is only needed when the target contains a file system (block device do not need a resize).
ProcessingPhaseTransferDataDir is the phase in which the data source writes data directly to the target path without conversion.
ProcessingPhaseTransferDataFile is the phase in which the data source writes data directly to the target file without conversion.
ProcessingPhaseTransferScratch is the phase in which the data source writes data to the scratch space.

# Variables

ErrInvalidPath indicates that the path is invalid.
ErrRequiresScratchSpace indicates that we require scratch space.

# Structs

DataProcessor holds the fields needed to process data from a data provider.
FormatReaders contains the stack of readers needed to get information from the input stream (io.ReadCloser).
HTTPDataSource is the data provider for http(s) endpoints.
RegistryDataSource is the struct containing the information needed to import from a registry data source.
S3DataSource is the struct containing the information needed to import from an S3 data source.
UploadDataSource contains all the information need to upload data into a data volume.

# Interfaces

DataSourceInterface is the interface all data providers should implement.
S3Client is the interface to the used S3 client.

# Type aliases

ProcessingPhase is the current phase being processed.