/**
*
*/
package com.azwul.api.service.impl;
import java.util.HashMap;
import java.util.Map;
import com.azwul.api.model.Credentials;
import com.azwul.api.model.SessionToken;
import com.azwul.api.model.result.HttpResult;
import com.azwul.api.model.result.LoginResult;
import com.azwul.api.model.result.SignatureResult;
import com.azwul.api.model.tx.AzRmailTransaction;
import com.azwul.api.service.AzRmailService;
import com.azwul.api.util.ResponseUtil;
/**
* @author theo
*
*/
public class AzRmailServiceImpl extends AzServiceImpl implements AzRmailService {
public SignatureResult sendRmail(AzRmailTransaction azRmailTransaction,
Credentials credentials) {
return sendRmail(azRmailTransaction, credentials, null, false);
}
public SignatureResult sendRmail(AzRmailTransaction azRmailTransaction,
SessionToken sessionToken) {
return sendRmail(azRmailTransaction, null, sessionToken, true);
}
protected SignatureResult sendRmail(AzRmailTransaction azRmailTransaction,
Credentials credentials, SessionToken sessionToken,
boolean keepAlive) {
if (credentials != null) {
LoginResult loginResult = login(credentials);
sessionToken = loginResult.getHttpResult().getSessionToken();
}
Map<String, String> params = new HashMap<String, String>();
params.put("recipientEmail", azRmailTransaction.getRecipientEmail());
params.put("resourceName", azRmailTransaction.getDocumentTitle());
params.put("recipientCommonName",
azRmailTransaction.getRecipientCommonName());
if (azRmailTransaction.getInternalFolderReference() != null
&& !"".equals(azRmailTransaction.getInternalFolderReference())) {
params.put("internalFolderReference",
azRmailTransaction.getInternalFolderReference());
}
if (azRmailTransaction.getFileName() != null
&& !"".equals(azRmailTransaction.getFileName())) {
params.put("fileName", azRmailTransaction.getFileName());
}
HttpResult httpResult = httpHelper.doPostMultipart("/basic/signRmail",
httpConfiguration, sessionToken, azRmailTransaction.getFile(),
"file", params);
String resSign = ResponseUtil.getBasicResponse(httpResult);
SignatureResult result = new SignatureResult();
result.setHttpResult(httpResult);
result.setBasicResponse(resSign);
String resSignSplit[] = resSign.split("\\s");
if (resSignSplit[1].equals("OK")) {
result.setOk(true);
result.setSignatureId(resSignSplit[3]);
}
if (!keepAlive) {
logout(sessionToken);
}
return result;
}
}