private void getPartValues(PduPart part, Cursor cursor) { part.setRowId(cursor.getLong(cursor.getColumnIndexOrThrow(ROW_ID))); part.setUniqueId(cursor.getLong(cursor.getColumnIndexOrThrow(UNIQUE_ID))); int charsetColumn = cursor.getColumnIndexOrThrow(CHARSET); if (!cursor.isNull(charsetColumn)) part.setCharset(cursor.getInt(charsetColumn)); int contentTypeColumn = cursor.getColumnIndexOrThrow(CONTENT_TYPE); if (!cursor.isNull(contentTypeColumn)) part.setContentType(Util.toIsoBytes(cursor.getString(contentTypeColumn))); int nameColumn = cursor.getColumnIndexOrThrow(NAME); if (!cursor.isNull(nameColumn)) part.setName(Util.toIsoBytes(cursor.getString(nameColumn))); int fileNameColumn = cursor.getColumnIndexOrThrow(FILENAME); if (!cursor.isNull(fileNameColumn)) part.setFilename(Util.toIsoBytes(cursor.getString(fileNameColumn))); int contentDispositionColumn = cursor.getColumnIndexOrThrow(CONTENT_DISPOSITION); if (!cursor.isNull(contentDispositionColumn)) part.setContentDisposition(Util.toIsoBytes(cursor.getString(contentDispositionColumn))); int contentIdColumn = cursor.getColumnIndexOrThrow(CONTENT_ID); if (!cursor.isNull(contentIdColumn)) part.setContentId(Util.toIsoBytes(cursor.getString(contentIdColumn))); int contentLocationColumn = cursor.getColumnIndexOrThrow(CONTENT_LOCATION); if (!cursor.isNull(contentLocationColumn)) part.setContentLocation(Util.toIsoBytes(cursor.getString(contentLocationColumn))); int encryptedColumn = cursor.getColumnIndexOrThrow(ENCRYPTED); if (!cursor.isNull(encryptedColumn)) part.setEncrypted(cursor.getInt(encryptedColumn) == 1); int pendingPushColumn = cursor.getColumnIndexOrThrow(PENDING_PUSH_ATTACHMENT); if (!cursor.isNull(pendingPushColumn)) part.setPendingPush(cursor.getInt(pendingPushColumn) == 1); int sizeColumn = cursor.getColumnIndexOrThrow(SIZE); if (!cursor.isNull(sizeColumn)) part.setDataSize(cursor.getLong(cursor.getColumnIndexOrThrow(SIZE))); }
public void updateFailedDownloadedPart(long messageId, PartId partId, PduPart part) throws MmsException { SQLiteDatabase database = databaseHelper.getWritableDatabase(); part.setContentDisposition(new byte[0]); part.setPendingPush(false); ContentValues values = getContentValuesForPart(part); values.put(DATA, (String) null); database.update(TABLE_NAME, values, PART_ID_WHERE, partId.toStrings()); notifyConversationListeners( DatabaseFactory.getMmsDatabase(context).getThreadIdForMessage(messageId)); }
private static PduBody pduBodyFor( MasterSecret masterSecret, List<TextSecureAttachment> attachments) { PduBody body = new PduBody(); for (TextSecureAttachment attachment : attachments) { if (attachment.isPointer()) { PduPart media = new PduPart(); byte[] encryptedKey = new MasterCipher(masterSecret).encryptBytes(attachment.asPointer().getKey()); media.setContentType(Util.toIsoBytes(attachment.getContentType())); media.setContentLocation(Util.toIsoBytes(String.valueOf(attachment.asPointer().getId()))); media.setContentDisposition(Util.toIsoBytes(Base64.encodeBytes(encryptedKey))); media.setPendingPush(true); body.addPart(media); } } return body; }
public void updateDownloadedPart( MasterSecret masterSecret, long messageId, PartId partId, PduPart part, InputStream data) throws MmsException { SQLiteDatabase database = databaseHelper.getWritableDatabase(); Pair<File, Long> partData = writePartData(masterSecret, part, data); part.setContentDisposition(new byte[0]); part.setPendingPush(false); ContentValues values = getContentValuesForPart(part); if (partData != null) { values.put(DATA, partData.first.getAbsolutePath()); values.put(SIZE, partData.second); } database.update(TABLE_NAME, values, PART_ID_WHERE, partId.toStrings()); thumbnailExecutor.submit(new ThumbnailFetchCallable(masterSecret, partId)); notifyConversationListeners( DatabaseFactory.getMmsDatabase(context).getThreadIdForMessage(messageId)); }