@Override public JsonElement serialize(final Recording recording, final Type type, final JsonSerializationContext context) { final JsonObject object = new JsonObject(); writeSid(recording.getSid(), object); writeDateCreated(recording.getDateCreated(), object); writeDateUpdated(recording.getDateUpdated(), object); writeAccountSid(recording.getAccountSid(), object); writeCallSid(recording.getCallSid(), object); writeDuration(recording.getDuration(), object); writeApiVersion(recording.getApiVersion(), object); writeUri(recording.getUri(), object); if (recording.getFileUri() != null) { object.addProperty("file_uri", recording.getFileUri().toString()); } if (securityLevel.equals(RecordingSecurityLevel.NONE) && recording.getS3Uri() != null) { object.addProperty("s3_uri", recording.getS3Uri().toString()); } return object; } }
@Override public void addRecording(Recording recording, MediaAttributes.MediaType mediaType) { final String fileExtension = mediaType.equals(MediaAttributes.MediaType.AUDIO_ONLY) ? ".wav" : ".mp4"; if (s3AccessTool != null && ec != null) { final String recordingSid = recording.getSid().toString(); URI s3Uri = s3AccessTool.getS3Uri(recordingPath+"/"+recordingSid+fileExtension); //s3AccessTool.uploadFile(recordingPath+"/"+recording.getSid().toString()+fileExtension); if (s3Uri != null) { recording = recording.setS3Uri(s3Uri); } Future<Boolean> f = Futures.future(new Callable<Boolean>() { @Override public Boolean call () throws Exception { return s3AccessTool.uploadFile(recordingPath+"/"+recordingSid+fileExtension); } }, ec); } String fileUrl = String.format("/restcomm/%s/Accounts/%s/Recordings/%s",recording.getApiVersion(),recording.getAccountSid(),recording.getSid()); recording = recording.updateFileUri(generateLocalFileUri(fileUrl, fileExtension)); final SqlSession session = sessions.openSession(); try { session.insert(namespace + "addRecording", toMap(recording)); session.commit(); } finally { session.close(); } }
if (recording.getS3Uri() != null) { String fileExtension = recording.getS3Uri().toString().endsWith("wav") ? ".wav" : ".mp4"; recordingUri = s3AccessTool.getPublicUrl(recording.getSid() + fileExtension); if (securityLevel.equals(RecordingSecurityLevel.REDIRECT)) { return temporaryRedirect(recordingUri).build(); if (recording.getFileUri() != null) { fileExtension = recording.getFileUri().toString().endsWith("wav") ? ".wav" : ".mp4";
private String getNextPageUri(RecordingList list) { String lastSid = (page == getTotalPages()) ? "null" : list.getRecordings().get(pageSize - 1).getSid().toString(); return (page == getTotalPages()) ? "null" : pathUri + "?Page=" + (page + 1) + "&PageSize=" + pageSize + "&AfterSid=" + lastSid; }
protected Response getRecording(final String accountSid, final String sid, final MediaType responseType) { Account operatedAccount = accountsDao.getAccount(accountSid); secure(operatedAccount, "RestComm:Read:Recordings"); final Recording recording = dao.getRecording(new Sid(sid)); if (recording == null) { return status(NOT_FOUND).build(); } else { secure(operatedAccount, recording.getAccountSid(), SecuredType.SECURED_STANDARD); if (APPLICATION_JSON_TYPE.equals(responseType)) { return ok(gson.toJson(recording), APPLICATION_JSON).build(); } else if (APPLICATION_XML_TYPE.equals(responseType)) { final RestCommResponse response = new RestCommResponse(recording); return ok(xstream.toXML(response), APPLICATION_XML).build(); } else { return null; } } }
private Map<String, Object> toMap(final Recording recording) { final Map<String, Object> map = new HashMap<String, Object>(); map.put("sid", DaoUtils.writeSid(recording.getSid())); map.put("date_created", DaoUtils.writeDateTime(recording.getDateCreated())); map.put("date_updated", DaoUtils.writeDateTime(recording.getDateUpdated())); map.put("account_sid", DaoUtils.writeSid(recording.getAccountSid())); map.put("call_sid", DaoUtils.writeSid(recording.getCallSid())); map.put("duration", recording.getDuration()); map.put("api_version", recording.getApiVersion()); map.put("uri", DaoUtils.writeUri(recording.getUri())); map.put("file_uri", DaoUtils.writeUri(recording.getFileUri())); if (recording.getS3Uri() != null) { map.put("s3_uri", DaoUtils.writeUri(recording.getS3Uri())); } else { map.put("s3_uri", null); } return map; }
@Override public void marshal(final Object object, final HierarchicalStreamWriter writer, final MarshallingContext context) { final Recording recording = (Recording) object; writer.startNode("Recording"); writeSid(recording.getSid(), writer); writeDateCreated(recording.getDateCreated(), writer); writeDateUpdated(recording.getDateUpdated(), writer); writeAccountSid(recording.getAccountSid(), writer); writeCallSid(recording.getCallSid(), writer); writeDuration(recording.getDuration(), writer); writeApiVersion(recording.getApiVersion(), writer); writeUri(recording.getUri(), writer); writer.startNode("FileUri"); writer.setValue(recording.getFileUri().toString()); writer.endNode(); if (securityLevel.equals(RecordingSecurityLevel.NONE) && recording.getS3Uri() != null) { writer.startNode("S3Uri"); writer.setValue(recording.getS3Uri().toString()); writer.endNode(); } writer.endNode(); }