defmodule NetStorage do alias NetStorage.Operation def delete(path, _opts \\ []), do: Operation.new(:put, "delete", path, & &1) def dir(path, _opts \\ []), do: Operation.new(:get, "dir", path, & &1) def download(path, _opts \\ []), do: Operation.new(:get, "dowload", path, & &1) def du(path, _opts \\ []), do: Operation.new(:get, "du", path, & &1) def list(path, _opts \\ []), do: Operation.new(:get, "list", path, & &1) def mkdir(path, _opts \\ []), do: Operation.new(:put, "mkdir", path, & &1) # def mtime(path, _opts \\ []), do: Operation.new(:post, "mtime", path, & &1) # def quick_delete(path, _opts \\ []), do: Operation.new(:post, "quick-delete", path, & &1) # def rename(path, _opts \\ []), do: Operation.new(:put, "rename", path, & &1) def rmdir(path, _opts \\ []), do: Operation.new(:put, "rmdir", path, & &1) def stat(path, _opts \\ []), do: Operation.new(:get, "stat", path, & &1) # def symlink(path, _opts \\ []), do: Operation.new(:post, "symlink", path, & &1) def upload(path, blob, _opts \\ []), do: Operation.new(:put, "upload", path, & &1, blob) def request(op, opts \\ []) do case NetStorage.Request.execute(op, opts) do {:ok, status, body} when status in [200, 204] -> {:ok, op.parser.(body)} {:ok, status, body} when status in [404] -> {:error, op.parser.(body)} {:error, reason} -> {:error, reason} end end end