/**
*
*/
package com.azwul.api.service.impl;
import java.io.File;
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.StoreStrategy;
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.AzSignPlusTransaction;
import com.azwul.api.model.tx.AzSignTransaction;
import com.azwul.api.service.AzSignService;
import com.azwul.api.util.ResponseUtil;
/**
* @author Theotime Jurzak
*
*/
public class AzSignServiceImpl extends AzServiceImpl implements AzSignService {
public SignatureResult doSign(AzSignTransaction azSignTransaction,
Credentials credentials) {
return doSign(azSignTransaction.getFile(),
azSignTransaction.getFileName(),
azSignTransaction.getDocumentTitle(),
azSignTransaction.getRecipientEmail(),
azSignTransaction.getInternalFolderReference(),
azSignTransaction.getMessage(), null,
azSignTransaction.isMailAttachement(),
azSignTransaction.getStoreStrategy(), credentials, null, false);
}
public SignatureResult doSign(AzSignTransaction azSignTransaction,
SessionToken sessionToken) {
return doSign(azSignTransaction.getFile(),
azSignTransaction.getFileName(),
azSignTransaction.getDocumentTitle(),
azSignTransaction.getRecipientEmail(),
azSignTransaction.getInternalFolderReference(),
azSignTransaction.getMessage(), null,
azSignTransaction.isMailAttachement(),
azSignTransaction.getStoreStrategy(), null, sessionToken, true);
}
public SignatureResult doSignPlus(
AzSignPlusTransaction azSignPlusTransaction, Credentials credentials) {
return doSign(azSignPlusTransaction.getFile(),
azSignPlusTransaction.getFileName(),
azSignPlusTransaction.getDocumentTitle(),
azSignPlusTransaction.getRecipientEmail(),
azSignPlusTransaction.getInternalFolderReference(),
azSignPlusTransaction.getMessage(),
azSignPlusTransaction.getCode(),
azSignPlusTransaction.isMailAttachement(),
azSignPlusTransaction.getStoreStrategy(), credentials, null,
false);
}
public SignatureResult doSignPlus(
AzSignPlusTransaction azSignPlusTransaction,
SessionToken sessionToken) {
return doSign(azSignPlusTransaction.getFile(),
azSignPlusTransaction.getFileName(),
azSignPlusTransaction.getDocumentTitle(),
azSignPlusTransaction.getRecipientEmail(),
azSignPlusTransaction.getInternalFolderReference(),
azSignPlusTransaction.getMessage(),
azSignPlusTransaction.getCode(),
azSignPlusTransaction.isMailAttachement(),
azSignPlusTransaction.getStoreStrategy(), null, sessionToken,
true);
}
protected SignatureResult doSign(File file, String fileName,
String documentTitle, String recipientEmail,
String internalFolderReference, String message, String code,
boolean isMailAttachement, StoreStrategy storeStrategy,
Credentials credentials, SessionToken sessionToken,
boolean keepAlive) {
if (credentials != null) {
LoginResult loginResult = login(credentials);
if (loginResult.isOk()) {
sessionToken = loginResult.getHttpResult().getSessionToken();
} else {
SignatureResult result = new SignatureResult();
result.setHttpResult(loginResult.getHttpResult());
result.setBasicResponse(loginResult.getBasicResponse());
return result;
}
}
Map<String, String> params = new HashMap<String, String>();
params.put("recipientEmail", recipientEmail);
params.put("resourceName", documentTitle);
params.put("message", message);
if (internalFolderReference != null
&& !"".equals(internalFolderReference)) {
params.put("internalFolderReference", internalFolderReference);
}
if (fileName != null && !"".equals(fileName)) {
params.put("fileName", fileName);
}
params.put("mailAttachement", Boolean.toString(isMailAttachement));
params.put("storeStrategy", storeStrategy.name());
String resSign = null;
HttpResult httpResult;
if (code != null) {
params.put("code", code);
httpResult = httpHelper.doPostMultipart("/basic/signPlus",
httpConfiguration, sessionToken, file, "file", params);
resSign = ResponseUtil.getBasicResponse(httpResult);
} else {
httpResult = httpHelper.doPostMultipart("/basic/sign",
httpConfiguration, sessionToken, file, "file", params);
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(httpResult.getSessionToken());
}
return result;
}
}