Search in sources :

Example 1 with Bucket

use of io.minio.messages.Bucket in project Universal-G-Code-Sender by winder.

the class S3FileSystemView method getFiles.

@Override
public File[] getFiles(final File dir, boolean useFileHiding) {
    // If there is no bucket (i.e. just "s3:/"), add the buckets.
    if (!hasBucket(dir.toString())) {
        try {
            final List<File> files = new ArrayList<>(1);
            for (Bucket bucket : buckets) {
                files.add(new S3VirtualFile("s3:/" + bucket.name() + "/", 0));
            }
            return files.toArray(new File[files.size()]);
        } catch (Exception ex) {
            ex.printStackTrace();
            logger.log(Level.WARNING, "An error occurred listing buckets on S3.", ex);
        }
        return new S3VirtualFile[0];
    }
    ArrayList<S3VirtualFile> ret = new ArrayList<>();
    Matcher m = parseURI(dir.toString());
    try {
        if (m.matches()) {
            String bucket = m.group("bucket");
            // Path should start with a slash unless it's empty
            String path = m.group("path");
            if (!"".equals(path)) {
                path += "/";
            }
            Iterable<Result<Item>> objects = minioClient.listObjects(bucket, path, false);
            String prefix = "s3:/" + bucket + "/";
            String dirMatch = dir.toString() + "/";
            for (Result<Item> res : objects) {
                Item i = res.get();
                String name = prefix + i.objectName();
                // listObjects matches the current directory, filter it out.
                if (name.equals(dirMatch)) {
                    continue;
                }
                S3VirtualFile f = new S3VirtualFile(name, i.objectSize());
                if (!f.isDirectory()) {
                    try {
                        f.setLastModified(i.lastModified().getTime());
                    } catch (Exception e) {
                    // The mock server doesn't play well with the lastModified field.
                    }
                }
                ret.add(f);
            }
        }
    } catch (Exception ex) {
        logger.log(Level.WARNING, "An error occurred listing files on S3.", ex);
    }
    return ret.toArray(new S3VirtualFile[0]);
}
Also used : Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList) InvalidBucketNameException(io.minio.errors.InvalidBucketNameException) InvalidResponseException(io.minio.errors.InvalidResponseException) NoResponseException(io.minio.errors.NoResponseException) IOException(java.io.IOException) InternalException(io.minio.errors.InternalException) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) RegionConflictException(io.minio.errors.RegionConflictException) ErrorResponseException(io.minio.errors.ErrorResponseException) InvalidKeyException(java.security.InvalidKeyException) InsufficientDataException(io.minio.errors.InsufficientDataException) Result(io.minio.Result) Item(io.minio.messages.Item) Bucket(io.minio.messages.Bucket) File(java.io.File)

Aggregations

Result (io.minio.Result)1 ErrorResponseException (io.minio.errors.ErrorResponseException)1 InsufficientDataException (io.minio.errors.InsufficientDataException)1 InternalException (io.minio.errors.InternalException)1 InvalidBucketNameException (io.minio.errors.InvalidBucketNameException)1 InvalidResponseException (io.minio.errors.InvalidResponseException)1 NoResponseException (io.minio.errors.NoResponseException)1 RegionConflictException (io.minio.errors.RegionConflictException)1 Bucket (io.minio.messages.Bucket)1 Item (io.minio.messages.Item)1 File (java.io.File)1 IOException (java.io.IOException)1 InvalidKeyException (java.security.InvalidKeyException)1 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)1 ArrayList (java.util.ArrayList)1 Matcher (java.util.regex.Matcher)1 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)1