/***********************************************************************************************************************************
Archive Get File
***********************************************************************************************************************************/
#ifndef COMMAND_ARCHIVE_GET_FILE_H
#define COMMAND_ARCHIVE_GET_FILE_H

#include "common/crypto/common.h"
#include "common/type/string.h"
#include "storage/storage.h"

/***********************************************************************************************************************************
Functions
***********************************************************************************************************************************/
// Copy a file from the archive to the specified destination
typedef struct ArchiveGetFile
{
    const String *file;                                             // File in the repo (with path, checksum, ext, etc.)
    unsigned int repoIdx;                                           // Repo idx
    const String *archiveId;                                        // Repo archive id
    CipherType cipherType;                                          // Repo cipher type
    const String *cipherPassArchive;                                // Repo archive cipher pass
} ArchiveGetFile;

typedef struct ArchiveGetFileResult
{
    unsigned int actualIdx;                                         // Index of the file from actual list that was retrieved
    StringList *warnList;                                           // Warnings from a successful operation
} ArchiveGetFileResult;

FN_EXTERN ArchiveGetFileResult archiveGetFile(
    const Storage *storage, const String *request, const List *actualList, const String *walDestination);

#endif
