package li.cil.oc.server.fs

import dan200.computer.api.IMount

class ComputerCraftFileSystem(val mount: IMount) extends InputStreamFileSystem {
  def spaceTotal = 0

  def spaceUsed = 0

  // ----------------------------------------------------------------------- //

  override def exists(path: String) = mount.exists(path)

  override def isDirectory(path: String) = mount.isDirectory(path)

  def lastModified(path: String) = 0L

  override def list(path: String) = {
    val result = new java.util.ArrayList[String]
    mount.list(path, result)
    result.toArray.map(_.asInstanceOf[String])
  }

  override def size(path: String) = mount.getSize(path)

  // ----------------------------------------------------------------------- //

  protected def openInputStream(path: String) = try {
    Some(mount.openForRead(path))
  } catch {
    case _: Throwable => None
  }
}
