private static final String[] NAMES = { "GET|fileDownload/*" };
@Override
public boolean execute(OHttpRequest iRequest) throws Exception {
ODatabaseDocumentTx db = getProfiledDatabaseInstance(iRequest);
String[] urlParts = checkSyntax(iRequest.url, 3, "Syntax error: fileDownload/<database>/rid/[/<fileName>][/<fileType>].");
final String fileName = urlParts.length > 3 ? encodeResponseText(urlParts[3]) : "unknown";
final String fileType = urlParts.length > 5 ? encodeResponseText(urlParts[4]) + '/' + encodeResponseText(urlParts[5])
: (urlParts.length > 4 ? encodeResponseText(urlParts[4]) : "");
final String rid = urlParts[2];
iRequest.data.commandInfo = "Download";
iRequest.data.commandDetail = rid;
final ORecordBytes response;
try {
response = db.load(new ORecordId(rid));
if (response != null) {
sendBinaryFileContent(iRequest, OHttpUtils.STATUS_OK_CODE, OHttpUtils.STATUS_OK_DESCRIPTION, fileType, response, fileName);
} else {
sendTextContent(iRequest, OHttpUtils.STATUS_INVALIDMETHOD_CODE, "Record requested not exists", null,
OHttpUtils.CONTENT_TEXT_PLAIN, "Record requestes not exists");