From 98b11780547dd914883e7996e17a88c59d54eb38 Mon Sep 17 00:00:00 2001 From: Meriem El Aaboudi Date: Tue, 6 Mar 2018 14:37:28 +0530 Subject: [PATCH 1/4] Fix sending with attachment API through Json Serializer --- pom.xml | 28 +-- src/main/java/sendinblue/ApiClient.java | 8 +- .../java/sendinblue/{JSON.java => Json.java} | 176 +++++++++--------- src/test/java/sendinblue/JsonTest.java | 73 ++++++++ src/test/resources/xyz.pdf | Bin 0 -> 6192 bytes 5 files changed, 184 insertions(+), 101 deletions(-) rename src/main/java/sendinblue/{JSON.java => Json.java} (84%) create mode 100644 src/test/java/sendinblue/JsonTest.java create mode 100755 src/test/resources/xyz.pdf diff --git a/pom.xml b/pom.xml index ff2d143..4576068 100644 --- a/pom.xml +++ b/pom.xml @@ -126,7 +126,7 @@ - src/main/java + src/main/java @@ -139,7 +139,7 @@ - src/test/java + src/test/java @@ -209,6 +209,11 @@ okhttp ${okhttp-version} + + com.squareup.okio + okio + ${okio-version} + com.squareup.okhttp logging-interceptor @@ -224,11 +229,11 @@ gson-fire ${gson-fire-version} - - org.threeten - threetenbp - ${threetenbp-version} - + + org.threeten + threetenbp + ${threetenbp-version} + junit @@ -243,14 +248,15 @@ - 1.7 + 1.8 ${java.version} ${java.version} - 1.8.0 + 1.8.2 1.5.15 2.7.5 - 2.8.1 - 1.3.5 + 1.14.0 + 2.8.2 + 1.3.5 1.0.0 4.12 UTF-8 diff --git a/src/main/java/sendinblue/ApiClient.java b/src/main/java/sendinblue/ApiClient.java index e9eb2df..c1fc3a5 100644 --- a/src/main/java/sendinblue/ApiClient.java +++ b/src/main/java/sendinblue/ApiClient.java @@ -69,7 +69,7 @@ public class ApiClient { private KeyManager[] keyManagers; private OkHttpClient httpClient; - private JSON json; + private Json json; private HttpLoggingInterceptor loggingInterceptor; @@ -82,7 +82,7 @@ public ApiClient() { verifyingSsl = true; - json = new JSON(); + json = new Json(); // Set default User-Agent. setUserAgent("Swagger-Codegen/1.0.0/java"); @@ -139,7 +139,7 @@ public ApiClient setHttpClient(OkHttpClient httpClient) { * * @return JSON object */ - public JSON getJSON() { + public Json getJSON() { return json; } @@ -149,7 +149,7 @@ public JSON getJSON() { * @param json JSON object * @return Api client */ - public ApiClient setJSON(JSON json) { + public ApiClient setJSON(Json json) { this.json = json; return this; } diff --git a/src/main/java/sendinblue/JSON.java b/src/main/java/sendinblue/Json.java similarity index 84% rename from src/main/java/sendinblue/JSON.java rename to src/main/java/sendinblue/Json.java index f9aefa7..96b8b57 100644 --- a/src/main/java/sendinblue/JSON.java +++ b/src/main/java/sendinblue/Json.java @@ -1,6 +1,6 @@ /* * SendinBlue API - * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :-------------: | ------------- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :-------------: | ------------- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | * * OpenAPI spec version: 3.0.0 * Contact: contact@sendinblue.com @@ -13,49 +13,52 @@ package sendinblue; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonParseException; -import com.google.gson.TypeAdapter; +import com.google.gson.*; import com.google.gson.internal.bind.util.ISO8601Utils; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; -import com.google.gson.JsonElement; import io.gsonfire.GsonFireBuilder; -import io.gsonfire.TypeSelector; import org.threeten.bp.LocalDate; import org.threeten.bp.OffsetDateTime; import org.threeten.bp.format.DateTimeFormatter; -import sibModel.*; - import java.io.IOException; import java.io.StringReader; import java.lang.reflect.Type; import java.text.DateFormat; import java.text.ParseException; import java.text.ParsePosition; +import java.util.Base64; import java.util.Date; import java.util.Map; -import java.util.HashMap; -public class JSON { +public class Json { private Gson gson; private boolean isLenientOnJson = false; private DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); + private ByteArrayToBase64TypeAdapter byteArrayToBase64TypeAdapter = new ByteArrayToBase64TypeAdapter(); private SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); + public Json() { + gson = createGson() + .registerTypeAdapter(Date.class, dateTypeAdapter) + .registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter) + .registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter) + .registerTypeAdapter(LocalDate.class, localDateTypeAdapter) + .registerTypeHierarchyAdapter(byte[].class, byteArrayToBase64TypeAdapter) + .create(); + } + public static GsonBuilder createGson() { - GsonFireBuilder fireBuilder = new GsonFireBuilder() - ; + GsonFireBuilder fireBuilder = new GsonFireBuilder(); return fireBuilder.createGsonBuilder(); } private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { JsonElement element = readElement.getAsJsonObject().get(discriminatorField); - if(null == element) { + if (null == element) { throw new IllegalArgumentException("missing discriminator field: <" + discriminatorField + ">"); } return element.getAsString(); @@ -63,21 +66,12 @@ private static String getDiscriminatorValue(JsonElement readElement, String disc private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue.toUpperCase()); - if(null == clazz) { + if (null == clazz) { throw new IllegalArgumentException("cannot determine model class of name: <" + discriminatorValue + ">"); } return clazz; } - public JSON() { - gson = createGson() - .registerTypeAdapter(Date.class, dateTypeAdapter) - .registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter) - .registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter) - .registerTypeAdapter(LocalDate.class, localDateTypeAdapter) - .create(); - } - /** * Get Gson. * @@ -91,33 +85,33 @@ public Gson getGson() { * Set Gson. * * @param gson Gson - * @return JSON + * @return Json */ - public JSON setGson(Gson gson) { + public Json setGson(Gson gson) { this.gson = gson; return this; } - public JSON setLenientOnJson(boolean lenientOnJson) { + public Json setLenientOnJson(boolean lenientOnJson) { isLenientOnJson = lenientOnJson; return this; } /** - * Serialize the given Java object into JSON string. + * Serialize the given Java object into Json string. * * @param obj Object - * @return String representation of the JSON + * @return String representation of the Json */ public String serialize(Object obj) { return gson.toJson(obj); } /** - * Deserialize the given JSON string to Java object. + * Deserialize the given Json string to Java object. * * @param Type - * @param body The JSON string + * @param body The Json string * @param returnType The type to deserialize into * @return The deserialized Java object */ @@ -133,7 +127,7 @@ public T deserialize(String body, Type returnType) { return gson.fromJson(body, returnType); } } catch (JsonParseException e) { - // Fallback processing when failed to parse JSON form response body: + // Fallback processing when failed to parse Json form response body: // return the response body string directly for the String return type; if (returnType.equals(String.class)) return (T) body; @@ -141,6 +135,26 @@ public T deserialize(String body, Type returnType) { } } + public Json setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { + offsetDateTimeTypeAdapter.setFormat(dateFormat); + return this; + } + + public Json setLocalDateFormat(DateTimeFormatter dateFormat) { + localDateTypeAdapter.setFormat(dateFormat); + return this; + } + + public Json setDateFormat(DateFormat dateFormat) { + dateTypeAdapter.setFormat(dateFormat); + return this; + } + + public Json setSqlDateFormat(DateFormat dateFormat) { + sqlDateTypeAdapter.setFormat(dateFormat); + return this; + } + /** * Gson TypeAdapter for JSR310 OffsetDateTime type */ @@ -178,64 +192,23 @@ public OffsetDateTime read(JsonReader in) throws IOException { default: String date = in.nextString(); if (date.endsWith("+0000")) { - date = date.substring(0, date.length()-5) + "Z"; + date = date.substring(0, date.length() - 5) + "Z"; } return OffsetDateTime.parse(date, formatter); } } } - /** - * Gson TypeAdapter for JSR310 LocalDate type - */ - public class LocalDateTypeAdapter extends TypeAdapter { - - private DateTimeFormatter formatter; - - public LocalDateTypeAdapter() { - this(DateTimeFormatter.ISO_LOCAL_DATE); - } - - public LocalDateTypeAdapter(DateTimeFormatter formatter) { - this.formatter = formatter; + public static class ByteArrayToBase64TypeAdapter implements JsonSerializer, JsonDeserializer { + public byte[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + return Base64.getDecoder().decode(json.getAsString()); } - public void setFormat(DateTimeFormatter dateFormat) { - this.formatter = dateFormat; - } - - @Override - public void write(JsonWriter out, LocalDate date) throws IOException { - if (date == null) { - out.nullValue(); - } else { - out.value(formatter.format(date)); - } - } - - @Override - public LocalDate read(JsonReader in) throws IOException { - switch (in.peek()) { - case NULL: - in.nextNull(); - return null; - default: - String date = in.nextString(); - return LocalDate.parse(date, formatter); - } + public JsonElement serialize(byte[] src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(Base64.getEncoder().encodeToString(src)); } } - public JSON setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { - offsetDateTimeTypeAdapter.setFormat(dateFormat); - return this; - } - - public JSON setLocalDateFormat(DateTimeFormatter dateFormat) { - localDateTypeAdapter.setFormat(dateFormat); - return this; - } - /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple "yyyy-MM-dd" format will be used @@ -349,14 +322,45 @@ public Date read(JsonReader in) throws IOException { } } - public JSON setDateFormat(DateFormat dateFormat) { - dateTypeAdapter.setFormat(dateFormat); - return this; - } + /** + * Gson TypeAdapter for JSR310 LocalDate type + */ + public class LocalDateTypeAdapter extends TypeAdapter { - public JSON setSqlDateFormat(DateFormat dateFormat) { - sqlDateTypeAdapter.setFormat(dateFormat); - return this; + private DateTimeFormatter formatter; + + public LocalDateTypeAdapter() { + this(DateTimeFormatter.ISO_LOCAL_DATE); + } + + public LocalDateTypeAdapter(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public void setFormat(DateTimeFormatter dateFormat) { + this.formatter = dateFormat; + } + + @Override + public void write(JsonWriter out, LocalDate date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public LocalDate read(JsonReader in) throws IOException { + switch (in.peek()) { + case NULL: + in.nextNull(); + return null; + default: + String date = in.nextString(); + return LocalDate.parse(date, formatter); + } + } } } diff --git a/src/test/java/sendinblue/JsonTest.java b/src/test/java/sendinblue/JsonTest.java new file mode 100644 index 0000000..d5970a1 --- /dev/null +++ b/src/test/java/sendinblue/JsonTest.java @@ -0,0 +1,73 @@ +package sendinblue; + +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.hamcrest.CoreMatchers; +import org.junit.Test; +import sibModel.SendEmail; +import sibModel.SendEmailAttachment; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Collections; + +import static java.util.Base64.getEncoder; +import static org.junit.Assert.assertThat; + +public class JsonTest { + + private Json jsonToTest = new Json(); + + private static final String XYZ_FILE_BASE64_CODE = "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dWRpbyAyLjUpCi9OZXh0IDEyIDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKL1BhcmVudCAyIDAgUgovRGVzdCBbNSAwIFIgL1hZWiAwIDc2OSAwLjAwMF0KL1RpdGxlIChTU0wgVHV0b3JpYWwpCi9QcmV2IDExIDAgUgo+PgplbmRvYmoKMTMgMCBvYmoKPDwKL0NyZWF0b3IgKEV2ZW50SGVsaXguY29tL0V2ZW50U3R1ZGlvIDIuNSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA0MDcxNDIzNTQzNSkKL1Byb2R1Y2VyIChbQ2xpYlBERiBMaWJyYXJ5IDIuMDItcjEtMV0gV2luZG93cyA5eC9OVCkKL0F1dGhvciAoVXNlcjogV2luZG93cyBOVC85NS85OCBVc2VyKQovVGl0bGUgKFNTTCBUdXRvcmlhbCkKL1N1YmplY3QgKE1lc3NhZ2UgU2VxdWVuY2UgQ2hhcnQpCi9LZXl3b3JkcyAoTWVzc2FnZSBTZXF1ZW5jZSBDaGFydCwgU2NlbmFyaW8gRGlhZ3JhbSkKPj4KZW5kb2JqCnhyZWYKMCAxNAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMzMgMDAwMDAgbiAKMDAwMDAwMDEyMSAwMDAwMCBuIAowMDAwMDAwMTk0IDAwMDAwIG4gCjAwMDAwMDAyNTkgMDAwMDAgbiAKMDAwMDAwMDI4NyAwMDAwMCBuIAowMDAwMDAwNDgwIDAwMDAwIG4gCjAwMDAwMDM1MTMgMDAwMDAgbiAKMDAwMDAwMzcwNiAwMDAwMCBuIAowMDAwMDA1MDQxIDAwMDAwIG4gCjAwMDAwMDUxNTMgMDAwMDAgbiAKMDAwMDAwNTI2NyAwMDAwMCBuIAowMDAwMDA1NDMzIDAwMDAwIG4gCjAwMDAwMDU1MzUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxNAovUm9vdCAxIDAgUgovSW5mbyAxMyAwIFIKPj4Kc3RhcnR4cmVmCjU4MzMKJSVFT0YK"; + private static final String FILENAME_TO_SERIALIZE = "xyz.pdf"; + private static final String EMAIL_TO = "meriem@sendinblue.com"; + private static final String EXPECTED_JSON_PAYLOAD = "{\"emailTo\":[\"meriem@sendinblue.com\"],\"attachment\":[{\"content\":\"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dWRpbyAyLjUpCi9OZXh0IDEyIDAgUgo+PgplbmRvYmoKMTIgMCBvYmoKPDwKL1BhcmVudCAyIDAgUgovRGVzdCBbNSAwIFIgL1hZWiAwIDc2OSAwLjAwMF0KL1RpdGxlIChTU0wgVHV0b3JpYWwpCi9QcmV2IDExIDAgUgo+PgplbmRvYmoKMTMgMCBvYmoKPDwKL0NyZWF0b3IgKEV2ZW50SGVsaXguY29tL0V2ZW50U3R1ZGlvIDIuNSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA0MDcxNDIzNTQzNSkKL1Byb2R1Y2VyIChbQ2xpYlBERiBMaWJyYXJ5IDIuMDItcjEtMV0gV2luZG93cyA5eC9OVCkKL0F1dGhvciAoVXNlcjogV2luZG93cyBOVC85NS85OCBVc2VyKQovVGl0bGUgKFNTTCBUdXRvcmlhbCkKL1N1YmplY3QgKE1lc3NhZ2UgU2VxdWVuY2UgQ2hhcnQpCi9LZXl3b3JkcyAoTWVzc2FnZSBTZXF1ZW5jZSBDaGFydCwgU2NlbmFyaW8gRGlhZ3JhbSkKPj4KZW5kb2JqCnhyZWYKMCAxNAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMzMgMDAwMDAgbiAKMDAwMDAwMDEyMSAwMDAwMCBuIAowMDAwMDAwMTk0IDAwMDAwIG4gCjAwMDAwMDAyNTkgMDAwMDAgbiAKMDAwMDAwMDI4NyAwMDAwMCBuIAowMDAwMDAwNDgwIDAwMDAwIG4gCjAwMDAwMDM1MTMgMDAwMDAgbiAKMDAwMDAwMzcwNiAwMDAwMCBuIAowMDAwMDA1MDQxIDAwMDAwIG4gCjAwMDAwMDUxNTMgMDAwMDAgbiAKMDAwMDAwNTI2NyAwMDAwMCBuIAowMDAwMDA1NDMzIDAwMDAwIG4gCjAwMDAwMDU1MzUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxNAovUm9vdCAxIDAgUgovSW5mbyAxMyAwIFIKPj4Kc3RhcnR4cmVmCjU4MzMKJSVFT0YK\",\"name\":\"xyz.pdf\"}]}"; + + + @Test + public void shouldTestSerializer() throws Exception{ + SendEmail email = new SendEmail(); + email.setEmailTo(Collections.singletonList(EMAIL_TO)); + + SendEmailAttachment sendEmailAttachment = new SendEmailAttachment(); + sendEmailAttachment.setName(FILENAME_TO_SERIALIZE); + byte[] encode = Files.readAllBytes(Paths.get(getPathToFile())); + sendEmailAttachment.setContent(encode); + + email.setAttachment(Collections.singletonList(sendEmailAttachment)); + + String serializedJson = jsonToTest.serialize(email); + assertThat(serializedJson,CoreMatchers.equalTo(StringEscapeUtils.unescapeJava(EXPECTED_JSON_PAYLOAD))); + assertThat(serializedJson, CoreMatchers.containsString(XYZ_FILE_BASE64_CODE)); + assertThat(serializedJson, CoreMatchers.containsString(EMAIL_TO)); + assertThat(serializedJson, CoreMatchers.containsString(FILENAME_TO_SERIALIZE)); + } + + @Test + public void shouldTestDeserializer() throws Exception{ + SendEmail email = new SendEmail(); + email.setEmailTo(Collections.singletonList(EMAIL_TO)); + + SendEmailAttachment sendEmailAttachment = new SendEmailAttachment(); + sendEmailAttachment.setName(FILENAME_TO_SERIALIZE); + byte[] encode = Files.readAllBytes(Paths.get(getPathToFile())); + sendEmailAttachment.setContent(encode); + + email.setAttachment(Collections.singletonList(sendEmailAttachment)); + String serializedJson = jsonToTest.serialize(email); + + SendEmail deserializedSendEmail = jsonToTest.deserialize(serializedJson, SendEmail.class); + + assertThat(getEncoder().encodeToString(deserializedSendEmail.getAttachment().get(0).getContent()), CoreMatchers.equalTo(XYZ_FILE_BASE64_CODE)); + assertThat(deserializedSendEmail.getEmailTo().get(0), CoreMatchers.containsString(EMAIL_TO)); + assertThat(deserializedSendEmail.getAttachment().get(0).getName(), CoreMatchers.containsString(FILENAME_TO_SERIALIZE)); + } + + public String getPathToFile() throws IOException { + ClassLoader classLoader = this.getClass().getClassLoader(); + File file = new File(classLoader.getResource(FILENAME_TO_SERIALIZE).getFile()); + return file.getPath(); + } +} \ No newline at end of file diff --git a/src/test/resources/xyz.pdf b/src/test/resources/xyz.pdf new file mode 100755 index 0000000000000000000000000000000000000000..7b5a5f90b95d01ea99a854c839a3d9575f2a6728 GIT binary patch literal 6192 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 Date: Tue, 6 Mar 2018 17:36:06 +0530 Subject: [PATCH 2/4] Update readme comments --- docs/SendEmailAttachment.md | 7 ++----- docs/SendSmtpEmailAttachment.md | 7 ++----- pom.xml | 2 +- src/main/java/sibModel/SendEmailAttachment.java | 4 ++-- src/main/java/sibModel/SendSmtpEmailAttachment.java | 4 ++-- 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/docs/SendEmailAttachment.md b/docs/SendEmailAttachment.md index 1a6fa6a..a99b9f1 100644 --- a/docs/SendEmailAttachment.md +++ b/docs/SendEmailAttachment.md @@ -4,8 +4,5 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**content** | **byte[]** | Base64 encoded chunk data of the attachment generated on the fly | [optional] -**name** | **String** | Required for content. Name of the attachment | [optional] - - - +**content** | **byte[]** | Byte array of the attachment generated on the fly ( Encoded to base64 chunk data at our end ) | [optional] +**name** | **String** | Required for content. Name of the attachment | [optional] \ No newline at end of file diff --git a/docs/SendSmtpEmailAttachment.md b/docs/SendSmtpEmailAttachment.md index c946cc7..17be21f 100644 --- a/docs/SendSmtpEmailAttachment.md +++ b/docs/SendSmtpEmailAttachment.md @@ -5,8 +5,5 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **url** | **String** | Absolute url of the attachment (no local file). | [optional] -**content** | **byte[]** | Base64 encoded chunk data of the attachment generated on the fly | [optional] -**name** | **String** | Required for content. Name of the attachment | [optional] - - - +**content** | **byte[]** | Byte array of the attachment generated on the fly ( Encoded to base64 chunk data at our end ) | [optional] +**name** | **String** | Required for content. Name of the attachment | [optional] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4576068..5660f26 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ sib-api-v3-sdk jar sib-api-v3-sdk - 1.0.0 + 1.0.1 https://github.com/sendinblue/APIv3-java-library SendinBlue's API v3 Java Library diff --git a/src/main/java/sibModel/SendEmailAttachment.java b/src/main/java/sibModel/SendEmailAttachment.java index bed9d85..85b24e8 100644 --- a/src/main/java/sibModel/SendEmailAttachment.java +++ b/src/main/java/sibModel/SendEmailAttachment.java @@ -40,10 +40,10 @@ public SendEmailAttachment content(byte[] content) { } /** - * Base64 encoded chunk data of the attachment generated on the fly + * Byte array of the attachment generated on the fly ( Encoded to base64 chunk data at our end ) * @return content **/ - @ApiModelProperty(example = "b3JkZXIucGRm", value = "Base64 encoded chunk data of the attachment generated on the fly") + @ApiModelProperty(example = "b3JkZXIucGRm", value = "Byte array of the attachment generated on the fly ( Encoded to base64 chunk data at our end )") public byte[] getContent() { return content; } diff --git a/src/main/java/sibModel/SendSmtpEmailAttachment.java b/src/main/java/sibModel/SendSmtpEmailAttachment.java index 9be29bd..89c885b 100644 --- a/src/main/java/sibModel/SendSmtpEmailAttachment.java +++ b/src/main/java/sibModel/SendSmtpEmailAttachment.java @@ -61,10 +61,10 @@ public SendSmtpEmailAttachment content(byte[] content) { } /** - * Base64 encoded chunk data of the attachment generated on the fly + * Byte array of the attachment generated on the fly ( Encoded to base64 chunk data at our end ) * @return content **/ - @ApiModelProperty(example = "b3JkZXIucGRm", value = "Base64 encoded chunk data of the attachment generated on the fly") + @ApiModelProperty(example = "b3JkZXIucGRm", value = "Byte array of the attachment generated on the fly ( Encoded to base64 chunk data at our end )") public byte[] getContent() { return content; } From 256f447866b20dc05b0ba11b45523a5f68da3ae4 Mon Sep 17 00:00:00 2001 From: ekta-slt Date: Wed, 7 Mar 2018 10:35:47 +0530 Subject: [PATCH 3/4] Readme version update --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6834715..a608119 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Add this dependency to your project's POM: com.sendinblue sib-api-v3-sdk - 1.0.0 + 1.0.1 compile ``` @@ -32,7 +32,7 @@ Add this dependency to your project's POM: Add this dependency to your project's build file: ```groovy -compile "com.sendinblue:sib-api-v3-sdk:1.0.0" +compile "com.sendinblue:sib-api-v3-sdk:1.0.1" ``` ### Others @@ -45,7 +45,7 @@ At first generate the JAR by executing: Then manually install the following JARs: -* target/sib-api-v3-sdk-1.0.0.jar +* target/sib-api-v3-sdk-1.0.1.jar * target/lib/*.jar ## Getting Started From 00e94275087649e0828a457f7126bbbf80bc57d0 Mon Sep 17 00:00:00 2001 From: ekta-slt Date: Wed, 7 Mar 2018 10:56:17 +0530 Subject: [PATCH 4/4] Readme updates --- docs/SendEmail.md | 2 +- docs/SendSmtpEmail.md | 2 +- src/main/java/sibModel/SendEmail.java | 4 ++-- src/main/java/sibModel/SendSmtpEmail.java | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/SendEmail.md b/docs/SendEmail.md index bce3353..3b23d38 100644 --- a/docs/SendEmail.md +++ b/docs/SendEmail.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **emailCc** | **List<String>** | Email addresses of the recipients in cc | [optional] **replyTo** | **String** | Email on which campaign recipients will be able to reply to | [optional] **attachmentUrl** | **String** | Absolute url of the attachment (no local file). Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps | [optional] -**attachment** | [**List<SendEmailAttachment>**](SendEmailAttachment.md) | Pass the base64 content of the attachment. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps | [optional] +**attachment** | [**List<SendEmailAttachment>**](SendEmailAttachment.md) | Pass the byte array of the attachment ( Encoded to base64 chunk data at our end ). Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps | [optional] **headers** | **Map<String, String>** | | [optional] **attributes** | **Map<String, String>** | | [optional] diff --git a/docs/SendSmtpEmail.md b/docs/SendSmtpEmail.md index a7352a2..919ba85 100644 --- a/docs/SendSmtpEmail.md +++ b/docs/SendSmtpEmail.md @@ -12,7 +12,7 @@ Name | Type | Description | Notes **textContent** | **String** | Plain Text body of the message ( Ignored if templateId is passed ) | [optional] **subject** | **String** | Subject of the message | **replyTo** | [**SendSmtpEmailReplyTo**](SendSmtpEmailReplyTo.md) | | [optional] -**attachment** | [**List<SendSmtpEmailAttachment>**](SendSmtpEmailAttachment.md) | Pass the absolute URL (no local file) or the base64 content of the attachment. Name can be used in both cases to define the attachment name. It is mandatory in case of content. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps | [optional] +**attachment** | [**List<SendSmtpEmailAttachment>**](SendSmtpEmailAttachment.md) | Pass the absolute URL (no local file) or the byte array of the attachment. Name can be used in both cases to define the attachment name. It is mandatory in case of content. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps | [optional] **headers** | **Map<String, String>** | | [optional] **templateId** | **Long** | Id of the template | [optional] **params** | **Map<String, String>** | | [optional] diff --git a/src/main/java/sibModel/SendEmail.java b/src/main/java/sibModel/SendEmail.java index a5587d4..6f258a9 100644 --- a/src/main/java/sibModel/SendEmail.java +++ b/src/main/java/sibModel/SendEmail.java @@ -182,10 +182,10 @@ public SendEmail addAttachmentItem(SendEmailAttachment attachmentItem) { } /** - * Pass the base64 content of the attachment. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps + * Pass the byte array of the attachment. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps * @return attachment **/ - @ApiModelProperty(value = "Pass the base64 content of the attachment. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps") + @ApiModelProperty(value = "Pass the byte array of the attachment. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps") public List getAttachment() { return attachment; } diff --git a/src/main/java/sibModel/SendSmtpEmail.java b/src/main/java/sibModel/SendSmtpEmail.java index 7102af2..58d9a25 100644 --- a/src/main/java/sibModel/SendSmtpEmail.java +++ b/src/main/java/sibModel/SendSmtpEmail.java @@ -253,10 +253,10 @@ public SendSmtpEmail addAttachmentItem(SendSmtpEmailAttachment attachmentItem) { } /** - * Pass the absolute URL (no local file) or the base64 content of the attachment. Name can be used in both cases to define the attachment name. It is mandatory in case of content. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps + * Pass the absolute URL (no local file) or the byte array of the attachment. Name can be used in both cases to define the attachment name. It is mandatory in case of content. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps * @return attachment **/ - @ApiModelProperty(value = "Pass the absolute URL (no local file) or the base64 content of the attachment. Name can be used in both cases to define the attachment name. It is mandatory in case of content. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps") + @ApiModelProperty(value = "Pass the absolute URL (no local file) or the byte array of the attachment. Name can be used in both cases to define the attachment name. It is mandatory in case of content. Extension allowed: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub and eps") public List getAttachment() { return attachment; }