/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.management.backup.util;
import com.emc.storageos.management.backup.ExternalServerType;
import org.apache.http.auth.AuthenticationException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.util.List;
/**
* Interface used to do communication from vipr to external backup server
*/
public interface BackupClient {
/**
* Upload file from to external server from offset
* @param fileName upload filename
* @param offset offset for upload begin
* @return OutputStream of to be uploaded file on external server
*/
public OutputStream upload(String fileName, long offset) throws Exception;
/**
* List backup file on external server
* @param prefix prefix of file to be listed
* @return list of files with prefix on external server
*/
public List<String> listFiles(String prefix) throws Exception;
/**
* List backup files on external server
* @return list of files on external server
*/
public List<String> listAllFiles() throws Exception;
/**
* Download file from to external server to vipr
* @param backupFileName download filename
* @return InputStream of to be downloaded file on external server
*/
public InputStream download(String backupFileName) throws Exception;
/**
* Rename the filename on external server
* @param sourceFileName source filename
* @param destFileName rename filename
*/
public void rename(String sourceFileName, String destFileName) throws Exception;
/**
* Get the file size on external server
* @param fileName filename
* @return file size
*/
public long getFileSize(String fileName) throws Exception;
/**
* Get the uri of external server
* @return external server URI
*/
public String getUri();
/**
* Validate of external server parameter validation used for GUI
*/
public void validate() throws AuthenticationException,ConnectException;
}