use ohos_fileuri_sys::*;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum FileUriError {
PermissionError,
InvalidParameter,
DeviceNotSupported,
OperationNotPermitted,
NoSuchFileOrDirectory,
OutOfMemory,
Unknown,
NullByteError,
ConversionError,
}
impl std::fmt::Display for FileUriError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
FileUriError::PermissionError => write!(f, "Permission verification failed"),
FileUriError::InvalidParameter => write!(f, "Invalid input parameter"),
FileUriError::DeviceNotSupported => write!(f, "Device not supported"),
FileUriError::OperationNotPermitted => write!(f, "Operation not permitted"),
FileUriError::NoSuchFileOrDirectory => write!(f, "No such file or directory"),
FileUriError::OutOfMemory => write!(f, "Out of memory"),
FileUriError::Unknown => write!(f, "Unknown error"),
FileUriError::NullByteError => write!(f, "String contains null byte"),
FileUriError::ConversionError => write!(f, "Failed to convert result from C"),
}
}
}
impl std::error::Error for FileUriError {}
#[allow(non_upper_case_globals)]
pub(crate) fn error_from_code(code: FileManagement_ErrCode) -> FileUriError {
match code {
FileManagement_ErrCode_ERR_PERMISSION_ERROR => FileUriError::PermissionError,
FileManagement_ErrCode_ERR_INVALID_PARAMETER => FileUriError::InvalidParameter,
FileManagement_ErrCode_ERR_DEVICE_NOT_SUPPORTED => FileUriError::DeviceNotSupported,
FileManagement_ErrCode_ERR_EPERM => FileUriError::OperationNotPermitted,
FileManagement_ErrCode_ERR_ENOENT => FileUriError::NoSuchFileOrDirectory,
FileManagement_ErrCode_ERR_ENOMEM => FileUriError::OutOfMemory,
_ => FileUriError::Unknown,
}
}