@Override public String type() { return sobj.getAttribute(CONTENT_TYPE); }
@Override public ISObject put(String key, ISObject stuff) { String processedKey = key; if (storeSuffix) { String originalFilename = stuff.getAttribute(ISObject.ATTR_FILE_NAME); if (null != originalFilename) { String suffix = S.afterLast(originalFilename, "."); if (S.notBlank(suffix)) { suffix = S.concat(".", suffix); if (!key.endsWith(suffix)) { processedKey = S.concat(key, suffix); } } } } if ((S.eq(key, stuff.getKey()) || S.eq(processedKey, stuff.getKey()) && isManagedObject(stuff))) { return stuff; } Map<String, String> attrs = stuff.getAttributes(); removeRuntimeAttributes(attrs); if (!(stuff instanceof SObject.InputStreamSObject)) { long len = stuff.getLength(); if (0L < len) { attrs.put(ISObject.ATTR_CONTENT_LENGTH, S.string(len)); } } doPut(keyWithContextPath(processedKey), stuff, attrs); return getFull(processedKey); }
public String fileName() { return sobj.getAttribute(FILENAME); }
/** * Returns a {@link RenderBinary} result with an {@link ISObject} instance. The result will render * the binary using "attachment" content disposition * * @param sobj * the {@link ISObject} instance */ public static RenderBinary download(ISObject sobj) { return new RenderBinary(sobj.asInputStream(), sobj.getAttribute(ISObject.ATTR_FILE_NAME), sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE), false); }
/** * Returns a {@link RenderBinary} result with an {@link ISObject} instance. The result will render * the binary using "inline" content disposition * * @param sobj * the {@link ISObject} instance * @return the result */ public static RenderBinary binary(ISObject sobj) { return new RenderBinary(sobj.asInputStream(), sobj.getAttribute(ISObject.ATTR_FILE_NAME), sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE), true); }
/** * Returns a {@link RenderBinary} result with an {@link ISObject} instance. The result will render * the binary using "inline" content disposition * * @param sobj * the {@link ISObject} instance * @return the result */ public static RenderBinary binary(ISObject sobj) { return new RenderBinary(sobj.asInputStream(), sobj.getAttribute(ISObject.ATTR_FILE_NAME), sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE), true); }
/** * Returns a {@link RenderBinary} result with an {@link ISObject} instance. The result will render * the binary using "attachment" content disposition * * @param sobj * the {@link ISObject} instance */ public static RenderBinary download(ISObject sobj) { return new RenderBinary(sobj.asInputStream(), sobj.getAttribute(ISObject.ATTR_FILE_NAME), sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE), false); }
@Override public boolean isManaged(ISObject sobj) { return S.eq(sobj.getAttribute(ISObject.ATTR_SS_ID), id()) && S.eq(sobj.getAttribute(ISObject.ATTR_SS_CTX), contextPath()); }
@Override public String toString() { return S.fmt("BLOB://[%s]/%s", sobj.getKey(), sobj.getAttribute(FILENAME)); }
private boolean serviceIdMatches(ISObject sobj) { return S.eq(id(), sobj.getAttribute(ISObject.ATTR_SS_ID)); }
public Builder sobject(final ISObject sobj) { Boolean isXlsx = null; String s = sobj.getAttribute(ISObject.ATTR_FILE_NAME); if (S.notBlank(s)) { if (s.endsWith(".xlsx")) { isXlsx = true; } else if (s.endsWith(".xls")) { isXlsx = false; } } if (null == isXlsx) { s = sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE); if (S.notBlank(s)) { if (s.startsWith("application/vnd.openxmlformats-officedocument.spreadsheetml")) { isXlsx = true; } else if ("application/vnd.ms-excel".equals(s)) { isXlsx = false; } } if (null == isXlsx) { return inputStream(pushbackInputStream(sobj.asInputStream())); } } this.isXlsx = isXlsx; return sobject(sobj, isXlsx); }
public Builder sobject(final ISObject sobj) { Boolean isXlsx = null; String s = sobj.getAttribute(ISObject.ATTR_FILE_NAME); if (S.notBlank(s)) { if (s.endsWith(".xlsx")) { isXlsx = true; } else if (s.endsWith(".xls")) { isXlsx = false; } } if (null == isXlsx) { s = sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE); if (S.notBlank(s)) { if (s.startsWith("application/vnd.openxmlformats-officedocument.spreadsheetml")) { isXlsx = true; } else if ("application/vnd.ms-excel".equals(s)) { isXlsx = false; } } if (null == isXlsx) { return inputStream(pushbackInputStream(sobj.asInputStream())); } } this.isXlsx = isXlsx; return sobject(sobj, isXlsx); }
private boolean serviceContextPathMatches(ISObject sobj) { return S.eq(contextPath(), S.string(sobj.getAttribute(ISObject.ATTR_SS_CTX))); }
@Override public void put(String key, ISObject stuff) throws UnexpectedIOException { GridFS gfs = gfs(); gfs.remove(new BasicDBObject("name", key)); GridFSInputFile inputFile = gfs.createFile(stuff.asByteArray()); inputFile.setContentType(stuff.getAttribute(Blob.CONTENT_TYPE)); inputFile.put("name", key); inputFile.put("filename", stuff.getAttribute(Blob.FILENAME)); inputFile.save(); }
@Override protected void doPut(String fullPath, ISObject stuff, Map<String, String> attrs) { StringMap meta = new StringMap(); for (String k : attrs.keySet()) { meta.putNotEmpty(k, attrs.get(k)); } String contentType = stuff.getAttribute(ISObject.ATTR_CONTENT_TYPE); try { uploadManager.put(stuff.asInputStream(), fullPath, getUploadToken(), meta, contentType); } catch (QiniuException e) { throw E.unexpected(e); } }
/** * Zip a list of sobject into a single sobject. * * @param objects * the sobjects to be zipped. * @return an sobject that is a zip package of `objects`. */ public static ISObject zip(ISObject... objects) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(baos); try { for (ISObject obj : objects) { ZipEntry entry = new ZipEntry(obj.getAttribute(SObject.ATTR_FILE_NAME)); InputStream is = obj.asInputStream(); zos.putNextEntry(entry); copy(is, zos, false); zos.closeEntry(); } } catch (IOException e) { throw E.ioException(e); } finally { close(zos); } return SObject.of(Codec.encodeUrl(S.random()), baos.toByteArray()); }
/** * Zip a list of sobject into a single sobject. * * @param objects * the sobjects to be zipped. * @return an sobject that is a zip package of `objects`. */ public static ISObject zip(ISObject... objects) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(baos); try { for (ISObject obj : objects) { ZipEntry entry = new ZipEntry(obj.getAttribute(SObject.ATTR_FILE_NAME)); InputStream is = obj.asInputStream(); zos.putNextEntry(entry); copy(is, zos, false); zos.closeEntry(); } } catch (IOException e) { throw E.ioException(e); } finally { close(zos); } return SObject.of(Codec.encodeUrl(S.random()), baos.toByteArray()); }
bp.setText(content, config().encoding(), accept().name()); for (ISObject sobj : attachments) { String fileName = sobj.getAttribute(ISObject.ATTR_FILE_NAME); if (S.blank(fileName)) { fileName = sobj.getKey(); String contentType = sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE); if (S.blank(contentType)) { contentType = "application/octet-stream";
bp.setText(content, config().encoding(), accept().name()); for (ISObject sobj : attachments) { String fileName = sobj.getAttribute(ISObject.ATTR_FILE_NAME); if (S.blank(fileName)) { fileName = sobj.getKey(); String contentType = sobj.getAttribute(ISObject.ATTR_CONTENT_TYPE); if (S.blank(contentType)) { contentType = "application/octet-stream";
@Override protected void doPut(String fullPath, ISObject stuff, Map<String, String> attrs) { ObjectMetadata meta = new ObjectMetadata(); meta.setContentType(stuff.getAttribute(ISObject.ATTR_CONTENT_TYPE)); if (!(stuff instanceof SObject.InputStreamSObject)) { long length = stuff.getLength(); if (0 < length) { meta.setContentLength(stuff.getLength()); } } PutObjectRequest req = new PutObjectRequest(bucket, fullPath, stuff.asInputStream(), meta); req.setTagging(mapToTagList(attrs)); StorageClass storageClass = StorageClass.valueOfIgnoreCase(attrs.remove(ATTR_STORAGE_CLASS), defStorageClass); if (null != storageClass) { req.setStorageClass(storageClass.toString()); } req.withCannedAcl(CannedAccessControlList.PublicRead); s3.putObject(req); }