Search in sources :

Example 11 with Metadata

use of com.dropbox.core.v2.files.Metadata in project dropbox-sdk-java by dropbox.

the class DropboxBrowse method doBrowse.

// -------------------------------------------------------------------------------------------
// GET /browse?path=...
// -------------------------------------------------------------------------------------------
// The page that lets you browse your Dropbox account.  Makes Dropbox API calls to figure out
// the contents of your files and folders and display them to you.
public void doBrowse(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    if (!common.checkGet(request, response))
        return;
    User user = common.getLoggedInUser(request);
    if (user == null) {
        common.pageSoftError(response, "Can't do /browse.  Nobody is logged in.");
        return;
    }
    DbxClientV2 dbxClient = requireDbxClient(request, response, user);
    if (dbxClient == null)
        return;
    String path = request.getParameter("path");
    if (path == null || path.length() == 0) {
        renderFolder(response, user, dbxClient, "");
    } else {
        String pathError = DbxPathV2.findError(path);
        if (pathError != null) {
            response.sendError(400, "Invalid path: " + jq(path) + ": " + pathError);
            return;
        }
        Metadata metadata;
        try {
            metadata = dbxClient.files().getMetadata(path);
        } catch (GetMetadataErrorException ex) {
            if (ex.errorValue.isPath()) {
                LookupError le = ex.errorValue.getPathValue();
                if (le.isNotFound()) {
                    response.sendError(400, "Path doesn't exist on Dropbox: " + jq(path));
                    return;
                }
            }
            common.handleException(response, ex, "getMetadata(" + jq(path) + ")");
            return;
        } catch (DbxException ex) {
            common.handleDbxException(response, user, ex, "getMetadata(" + jq(path) + ")");
            return;
        }
        path = DbxPathV2.getParent(path) + "/" + metadata.getName();
        if (metadata instanceof FolderMetadata) {
            renderFolder(response, user, dbxClient, path);
        } else {
            renderFile(response, path, (FileMetadata) metadata);
        }
    }
}
Also used : DbxClientV2(com.dropbox.core.v2.DbxClientV2) FolderMetadata(com.dropbox.core.v2.files.FolderMetadata) DeletedMetadata(com.dropbox.core.v2.files.DeletedMetadata) FileMetadata(com.dropbox.core.v2.files.FileMetadata) Metadata(com.dropbox.core.v2.files.Metadata) FolderMetadata(com.dropbox.core.v2.files.FolderMetadata) LookupError(com.dropbox.core.v2.files.LookupError) DbxException(com.dropbox.core.DbxException) GetMetadataErrorException(com.dropbox.core.v2.files.GetMetadataErrorException)

Example 12 with Metadata

use of com.dropbox.core.v2.files.Metadata in project dropbox-sdk-java by dropbox.

the class DropboxBrowse method renderFolder.

private void renderFolder(HttpServletResponse response, User user, DbxClientV2 dbxClient, String path) throws IOException {
    // Get the folder listing from Dropbox.
    TreeMap<String, Metadata> children = new TreeMap<String, Metadata>();
    ListFolderResult result;
    try {
        try {
            result = dbxClient.files().listFolder(path);
        } catch (ListFolderErrorException ex) {
            if (ex.errorValue.isPath()) {
                if (checkPathError(response, path, ex.errorValue.getPathValue()))
                    return;
            }
            throw ex;
        }
        while (true) {
            for (Metadata md : result.getEntries()) {
                if (md instanceof DeletedMetadata) {
                    children.remove(md.getPathLower());
                } else {
                    children.put(md.getPathLower(), md);
                }
            }
            if (!result.getHasMore())
                break;
            try {
                result = dbxClient.files().listFolderContinue(result.getCursor());
            } catch (ListFolderContinueErrorException ex) {
                if (ex.errorValue.isPath()) {
                    if (checkPathError(response, path, ex.errorValue.getPathValue()))
                        return;
                }
                throw ex;
            }
        }
    } catch (DbxException ex) {
        common.handleDbxException(response, user, ex, "listFolder(" + jq(path) + ")");
        return;
    }
    FormProtection fp = FormProtection.start(response);
    response.setContentType("text/html");
    response.setCharacterEncoding("utf-8");
    PrintWriter out = new PrintWriter(IOUtil.utf8Writer(response.getOutputStream()));
    out.println("<html>");
    out.println("<head><title>" + escapeHtml4(path) + "- Web File Browser</title></head>");
    out.println("<body>");
    fp.insertAntiRedressHtml(out);
    out.println("<h2>Path: " + escapeHtml4(path) + "</h2>");
    // Upload form
    out.println("<form action='/upload' method='post' enctype='multipart/form-data'>");
    fp.insertAntiCsrfFormField(out);
    out.println("<label for='file'>Upload file:</label> <input name='file' type='file'/>");
    out.println("<input type='submit' value='Upload'/>");
    out.println("<input name='targetFolder' type='hidden' value='" + escapeHtml4(path) + "'/>");
    out.println("</form>");
    // Listing of folder contents.
    out.println("<ul>");
    for (Metadata child : children.values()) {
        String href = "/browse?path=" + DbxRequestUtil.encodeUrlParam(child.getPathLower());
        out.println("  <li><a href='" + escapeHtml4(href) + "'>" + escapeHtml4(child.getName()) + "</a></li>");
    }
    out.println("</ul>");
    out.println("</body>");
    out.println("</html>");
    out.flush();
}
Also used : ListFolderContinueErrorException(com.dropbox.core.v2.files.ListFolderContinueErrorException) ListFolderErrorException(com.dropbox.core.v2.files.ListFolderErrorException) FolderMetadata(com.dropbox.core.v2.files.FolderMetadata) DeletedMetadata(com.dropbox.core.v2.files.DeletedMetadata) FileMetadata(com.dropbox.core.v2.files.FileMetadata) Metadata(com.dropbox.core.v2.files.Metadata) ListFolderResult(com.dropbox.core.v2.files.ListFolderResult) DeletedMetadata(com.dropbox.core.v2.files.DeletedMetadata) TreeMap(java.util.TreeMap) DbxException(com.dropbox.core.DbxException) PrintWriter(java.io.PrintWriter)

Example 13 with Metadata

use of com.dropbox.core.v2.files.Metadata in project dropbox-sdk-java by dropbox.

the class DownloadFileTask method doInBackground.

@Override
protected File doInBackground(FileMetadata... params) {
    FileMetadata metadata = params[0];
    try {
        File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        File file = new File(path, metadata.getName());
        // Make sure the Downloads directory exists.
        if (!path.exists()) {
            if (!path.mkdirs()) {
                mException = new RuntimeException("Unable to create directory: " + path);
            }
        } else if (!path.isDirectory()) {
            mException = new IllegalStateException("Download path is not a directory: " + path);
            return null;
        }
        // Download the file.
        try (OutputStream outputStream = new FileOutputStream(file)) {
            mDbxClient.files().download(metadata.getPathLower(), metadata.getRev()).download(outputStream);
        }
        // Tell android about the file
        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        intent.setData(Uri.fromFile(file));
        mContext.sendBroadcast(intent);
        return file;
    } catch (DbxException | IOException e) {
        mException = e;
    }
    return null;
}
Also used : OutputStream(java.io.OutputStream) FileOutputStream(java.io.FileOutputStream) FileOutputStream(java.io.FileOutputStream) FileMetadata(com.dropbox.core.v2.files.FileMetadata) Intent(android.content.Intent) IOException(java.io.IOException) File(java.io.File) DbxException(com.dropbox.core.DbxException)

Example 14 with Metadata

use of com.dropbox.core.v2.files.Metadata in project dropbox-sdk-java by dropbox.

the class Main method printChanges.

/**
     * Prints changes made to a folder in Dropbox since the given
     * cursor was retrieved.
     *
     * @param dbxClient Dropbox client to use for fetching folder changes
     * @param cursor lastest cursor received since last set of changes
     *
     * @return latest cursor after changes
     */
private static String printChanges(DbxClientV2 client, String cursor) throws DbxApiException, DbxException {
    while (true) {
        ListFolderResult result = client.files().listFolderContinue(cursor);
        for (Metadata metadata : result.getEntries()) {
            String type;
            String details;
            if (metadata instanceof FileMetadata) {
                FileMetadata fileMetadata = (FileMetadata) metadata;
                type = "file";
                details = "(rev=" + fileMetadata.getRev() + ")";
            } else if (metadata instanceof FolderMetadata) {
                FolderMetadata folderMetadata = (FolderMetadata) metadata;
                type = "folder";
                details = folderMetadata.getSharingInfo() != null ? "(shared)" : "";
            } else if (metadata instanceof DeletedMetadata) {
                type = "deleted";
                details = "";
            } else {
                throw new IllegalStateException("Unrecognized metadata type: " + metadata.getClass());
            }
            System.out.printf("\t%10s %24s \"%s\"\n", type, details, metadata.getPathLower());
        }
        // update cursor to fetch remaining results
        cursor = result.getCursor();
        if (!result.getHasMore()) {
            break;
        }
    }
    return cursor;
}
Also used : FileMetadata(com.dropbox.core.v2.files.FileMetadata) FolderMetadata(com.dropbox.core.v2.files.FolderMetadata) Metadata(com.dropbox.core.v2.files.Metadata) DeletedMetadata(com.dropbox.core.v2.files.DeletedMetadata) FileMetadata(com.dropbox.core.v2.files.FileMetadata) ListFolderResult(com.dropbox.core.v2.files.ListFolderResult) FolderMetadata(com.dropbox.core.v2.files.FolderMetadata) DeletedMetadata(com.dropbox.core.v2.files.DeletedMetadata)

Example 15 with Metadata

use of com.dropbox.core.v2.files.Metadata in project dropbox-sdk-java by dropbox.

the class Main method main.

public static void main(String[] args) throws DbxException, IOException {
    // Create Dropbox client
    DbxRequestConfig config = new DbxRequestConfig("dropbox/java-tutorial");
    DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);
    // Get current account info
    FullAccount account = client.users().getCurrentAccount();
    System.out.println(account.getName().getDisplayName());
    // Get files and folder metadata from Dropbox root directory
    ListFolderResult result = client.files().listFolder("");
    while (true) {
        for (Metadata metadata : result.getEntries()) {
            System.out.println(metadata.getPathLower());
        }
        if (!result.getHasMore()) {
            break;
        }
        result = client.files().listFolderContinue(result.getCursor());
    }
    // Upload "test.txt" to Dropbox
    try (InputStream in = new FileInputStream("test.txt")) {
        FileMetadata metadata = client.files().uploadBuilder("/test.txt").uploadAndFinish(in);
    }
}
Also used : DbxClientV2(com.dropbox.core.v2.DbxClientV2) DbxRequestConfig(com.dropbox.core.DbxRequestConfig) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) FileMetadata(com.dropbox.core.v2.files.FileMetadata) Metadata(com.dropbox.core.v2.files.Metadata) FileMetadata(com.dropbox.core.v2.files.FileMetadata) ListFolderResult(com.dropbox.core.v2.files.ListFolderResult) FullAccount(com.dropbox.core.v2.users.FullAccount) FileInputStream(java.io.FileInputStream)

Aggregations

FileMetadata (com.dropbox.core.v2.files.FileMetadata)14 Metadata (com.dropbox.core.v2.files.Metadata)9 DbxException (com.dropbox.core.DbxException)8 IOException (java.io.IOException)5 DbxRequestConfig (com.dropbox.core.DbxRequestConfig)4 DbxClientV2 (com.dropbox.core.v2.DbxClientV2)4 DeletedMetadata (com.dropbox.core.v2.files.DeletedMetadata)4 FolderMetadata (com.dropbox.core.v2.files.FolderMetadata)4 Date (java.util.Date)4 ListFolderResult (com.dropbox.core.v2.files.ListFolderResult)3 ByteArrayInputStream (java.io.ByteArrayInputStream)3 FileInputStream (java.io.FileInputStream)3 InputStream (java.io.InputStream)3 Test (org.testng.annotations.Test)3 NetworkIOException (com.dropbox.core.NetworkIOException)2 RetryException (com.dropbox.core.RetryException)2 HttpRequestor (com.dropbox.core.http.HttpRequestor)2 ListFolderErrorException (com.dropbox.core.v2.files.ListFolderErrorException)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 PrintWriter (java.io.PrintWriter)2