diff --git a/src/main/java/com/mifiel/api/dao/Documents.java b/src/main/java/com/mifiel/api/dao/Documents.java index 4cbd42d..f1dbe00 100644 --- a/src/main/java/com/mifiel/api/dao/Documents.java +++ b/src/main/java/com/mifiel/api/dao/Documents.java @@ -1,6 +1,8 @@ package com.mifiel.api.dao; import java.io.File; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; @@ -51,6 +53,11 @@ public void saveFile(final String id, final String localPath) throws MifielExcep final HttpEntity entityResponse = apiClient.get(DOCUMENTS_PATH + "/" + id + "/file"); MifielUtils.saveEntityResponseToFile(entityResponse, localPath); } + + public void saveSignedFile(final String id, final String localPath) throws MifielException { + final HttpEntity entityResponse = apiClient.get( new StringBuilder().append( DOCUMENTS_PATH ).append("/").append(id).append("/file_signed?download=true").toString() ); + MifielUtils.saveEntityResponseToFile(entityResponse, localPath); + } public void saveXml(final String id, final String localPath) throws MifielException { final HttpEntity entityResponse = apiClient.get(DOCUMENTS_PATH + "/" + id + "/xml"); @@ -104,6 +111,9 @@ private HttpEntity buildHttpBody(final Document document) throws MifielException final String fileName = document.getFileName(); final String originalHash = document.getOriginalHash(); final String callbackUrl = document.getCallbackUrl(); + final String signCallbackUrl = document.getSignCallbackUrl(); + + final String allowBusiness = document.getAllowBusiness()!=null? document.getAllowBusiness().toString() : "false"; if (signatures != null) { for (int i = 0; i < signatures.size(); i++) { @@ -119,6 +129,14 @@ private HttpEntity buildHttpBody(final Document document) throws MifielException if (callbackUrl != null) { MifielUtils.appendTextParamToHttpBody(entityBuilder, "callback_url", callbackUrl); } + + if (signCallbackUrl != null) { + MifielUtils.appendTextParamToHttpBody(entityBuilder, "sign_callback_url", signCallbackUrl); + } + + if( allowBusiness!=null){ + MifielUtils.appendTextParamToHttpBody(entityBuilder, "allow_business", allowBusiness); + } if (!StringUtils.isEmpty(filePath)) { final File pdfFile = new File(filePath); @@ -130,7 +148,6 @@ private HttpEntity buildHttpBody(final Document document) throws MifielException } else { throw new MifielException("You must provide file or original hash and file name"); } - return entityBuilder.build(); } diff --git a/src/main/java/com/mifiel/api/objects/Document.java b/src/main/java/com/mifiel/api/objects/Document.java index 664bf10..8850dfb 100644 --- a/src/main/java/com/mifiel/api/objects/Document.java +++ b/src/main/java/com/mifiel/api/objects/Document.java @@ -3,6 +3,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.ArrayList; import org.codehaus.jackson.annotate.JsonAnyGetter; import org.codehaus.jackson.annotate.JsonAnySetter; @@ -18,7 +19,7 @@ public class Document { private String id; @JsonProperty("original_hash") private String originalHash; - @JsonProperty("name") + @JsonProperty("file_file_name") private String fileName; @JsonProperty("signed_by_all") private Boolean signedByAll; @@ -46,6 +47,10 @@ public class Document { private List signatures = null; @JsonIgnore private Map additionalProperties = new HashMap(); + @JsonProperty("allow_business") + private Boolean allowBusiness; + @JsonProperty("sign_callback_url") + private String signCallbackUrl; @JsonProperty("id") public String getId() { @@ -67,12 +72,12 @@ public void setOriginalHash(String originalHash) { this.originalHash = originalHash; } - @JsonProperty("name") + @JsonProperty("file_file_name") public String getFileName() { return fileName; } - @JsonProperty("name") + @JsonProperty("file_file_name") public void setFileName(String fileName) { this.fileName = fileName; } @@ -212,8 +217,47 @@ public String toString() { return "Document [id=" + id + ", originalHash=" + originalHash + ", fileName=" + fileName + ", signedByAll=" + signedByAll + ", signed=" + signed + ", signedAt=" + signedAt + ", status=" + status + ", owner=" + owner + ", callbackUrl=" + callbackUrl + ", file=" + file + ", fileDownload=" + fileDownload - + ", fileSigned=" + fileSigned + ", fileSignedDownload=" + fileSignedDownload + ", fileZipped=" - + fileZipped + ", signatures=" + signatures + ", additionalProperties=" + additionalProperties + "]"; - } + + ", fileSigned=" + fileSigned + ", fileSignedDownload=" + fileSignedDownload + + ", allow_business=" + allowBusiness + ", fileZipped=" + fileZipped + + ", signatures=" + signatures + ", additionalProperties=" + additionalProperties + "]"; + } + + @JsonProperty("allow_business") + public Boolean getAllowBusiness(){ + return allowBusiness; + } + @JsonProperty("allow_business") + public void setAllowBusiness(Boolean allowBusiness){ + this.allowBusiness = allowBusiness; + } + @JsonProperty("sign_callback_url") + public String getSignCallbackUrl() { + return signCallbackUrl; + } + @JsonProperty("sign_callback_url") + public void setSignCallbackUrl(String signCallbackUrl) { + this.signCallbackUrl = signCallbackUrl; + } + + public List signers(){ + List signers = null; + if( additionalProperties!=null && additionalProperties.get("signers")!=null ){ + signers = new ArrayList(); + List signersLst = (List) additionalProperties.get("signers"); + for(Object o : signersLst ){ + Signer s = new Signer(); + Map m = ( (Map) o ); + s.setId( m.get("id")!=null ? m.get("id").toString() : null ); + s.setName( m.get("name")!=null? m.get("name").toString() : null ); + s.setEmail( m.get("email")!=null ? m.get("email").toString() : null ); + s.setTaxId( m.get("tax_id")!=null ? m.get("tax_id").toString() : null ); + s.setField( m.get("field")!=null ? m.get("field").toString() : null ); + s.setSigned( Boolean.parseBoolean( m.get("signed")!=null ? m.get("signed").toString() : "false" ) ); + s.setWidgetId( m.get("widget_id")!=null ? m.get("widget_id").toString() : null ); + signers.add( s ); + } + } + return signers; + } } \ No newline at end of file diff --git a/src/main/java/com/mifiel/api/objects/Signer.java b/src/main/java/com/mifiel/api/objects/Signer.java new file mode 100644 index 0000000..388461d --- /dev/null +++ b/src/main/java/com/mifiel/api/objects/Signer.java @@ -0,0 +1,84 @@ +package com.mifiel.api.objects; +/** + * + * @author Francisco Daniel Perez Morales / fdanielpm@yandex.com + */ +public class Signer { + + private String id; + private String name; + private String email; + private String taxId; + private String field; + private boolean signed; + private String widgetId; + + public Signer() { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTaxId() { + return taxId; + } + + public void setTaxId(String taxId) { + this.taxId = taxId; + } + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + public boolean isSigned() { + return signed; + } + + public void setSigned(boolean signed) { + this.signed = signed; + } + + public String getWidgetId() { + return widgetId; + } + + public void setWidgetId(String widgetId) { + this.widgetId = widgetId; + } + + public String toString(){ + return new StringBuilder() + .append("id=").append(id).append(", ") + .append("name=").append(name).append(", ") + .append("email=").append(email).append(", ") + .append("taxId=").append(taxId).append(", ") + .append("field=").append(field).append(", ") + .append("signed=").append(signed).append(", ") + .append("widgetId=").append(widgetId) + .toString(); + } +} diff --git a/src/main/java/com/mifiel/api/utils/MifielUtils.java b/src/main/java/com/mifiel/api/utils/MifielUtils.java index 0bc85e5..6a6cb50 100644 --- a/src/main/java/com/mifiel/api/utils/MifielUtils.java +++ b/src/main/java/com/mifiel/api/utils/MifielUtils.java @@ -17,10 +17,12 @@ import org.apache.commons.lang.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.ContentType; import org.apache.http.util.EntityUtils; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.ObjectWriter; + import com.mifiel.api.exception.MifielException; public final class MifielUtils { @@ -93,7 +95,7 @@ public static List convertJsonToObjects(final String json, final String public static void appendTextParamToHttpBody(final MultipartEntityBuilder entityBuilder, final String paramName, final String paramValue) { if (!StringUtils.isEmpty(paramValue)) { - entityBuilder.addTextBody(paramName, paramValue); + entityBuilder.addTextBody(paramName,paramValue,ContentType.APPLICATION_JSON); } }