-
Notifications
You must be signed in to change notification settings - Fork 409
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
242 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package com.sendgrid.constant; | ||
|
||
public enum Domains { | ||
API("api"); | ||
private final String value; | ||
|
||
private Domains(final String value) { | ||
this.value = value; | ||
} | ||
|
||
public String toString() { | ||
return value; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
package com.sendgrid.exception; | ||
|
||
import com.fasterxml.jackson.annotation.JsonInclude; | ||
import com.fasterxml.jackson.annotation.JsonProperty; | ||
import lombok.Getter; | ||
import lombok.Setter; | ||
import lombok.ToString; | ||
|
||
import java.util.List; | ||
import java.util.StringJoiner; | ||
|
||
@ToString | ||
public class GenericApiError { | ||
@JsonInclude(JsonInclude.Include.NON_EMPTY) | ||
@JsonProperty("errors") | ||
@Getter | ||
@Setter | ||
private List<GenericError> errors; | ||
@JsonInclude(JsonInclude.Include.NON_EMPTY) | ||
@JsonProperty("id") | ||
@Getter | ||
@Setter | ||
private String id; | ||
|
||
public GenericApiError() { | ||
} | ||
|
||
private GenericApiError(GenericApiError.Builder builder) { | ||
this.errors = builder.errors; | ||
this.id = builder.id; | ||
} | ||
|
||
// Builder class for constructing object | ||
public static class Builder { | ||
private List<GenericError> errors; | ||
private String id; | ||
|
||
public Builder() { | ||
} | ||
|
||
public GenericApiError.Builder errors(List<GenericError> errors) { | ||
this.errors = errors; | ||
return this; | ||
} | ||
|
||
public GenericApiError.Builder id(String id) { | ||
this.id = id; | ||
return this; | ||
} | ||
|
||
public GenericApiError build() { | ||
return new GenericApiError(this); | ||
} | ||
|
||
} | ||
|
||
@Override | ||
public String toString() { | ||
StringJoiner joiner = new StringJoiner(", ", GenericApiError.class.getSimpleName() + "(", ")"); | ||
if (errors != null) joiner.add("errors=" + errors); | ||
if (id != null) joiner.add("id=" + id); | ||
return joiner.toString(); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package com.sendgrid.exception; | ||
|
||
import com.fasterxml.jackson.annotation.JsonInclude; | ||
import com.fasterxml.jackson.annotation.JsonProperty; | ||
import lombok.Getter; | ||
import lombok.Setter; | ||
import lombok.ToString; | ||
|
||
import java.util.StringJoiner; | ||
|
||
@ToString | ||
public class GenericError { | ||
@JsonInclude(JsonInclude.Include.NON_EMPTY) | ||
@JsonProperty("message") | ||
@Getter | ||
@Setter | ||
private String message; | ||
@JsonInclude(JsonInclude.Include.NON_EMPTY) | ||
@JsonProperty("field") | ||
@Getter | ||
@Setter | ||
private String field; | ||
@JsonInclude(JsonInclude.Include.NON_EMPTY) | ||
@JsonProperty("help") | ||
@Getter | ||
@Setter | ||
private Object help; | ||
|
||
public GenericError() { | ||
} | ||
|
||
private GenericError(GenericError.Builder builder) { | ||
this.message = builder.message; | ||
this.field = builder.field; | ||
this.help = builder.help; | ||
} | ||
|
||
// Builder class for constructing object | ||
public static class Builder { | ||
private String message; | ||
private String field; | ||
private Object help; | ||
|
||
public Builder() { | ||
} | ||
|
||
public GenericError.Builder message(String message) { | ||
this.message = message; | ||
return this; | ||
} | ||
|
||
public GenericError.Builder field(String field) { | ||
this.field = field; | ||
return this; | ||
} | ||
|
||
public GenericError.Builder help(Object help) { | ||
this.help = help; | ||
return this; | ||
} | ||
|
||
public GenericError build() { | ||
return new GenericError(this); | ||
} | ||
|
||
} | ||
|
||
@Override | ||
public String toString() { | ||
StringJoiner joiner = new StringJoiner(", ", GenericError.class.getSimpleName() + "(", ")"); | ||
if (message != null) joiner.add("message=" + message); | ||
if (field != null) joiner.add("field=" + field); | ||
if (help != null) joiner.add("help=" + help); | ||
return joiner.toString(); | ||
} | ||
|
||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,51 @@ | ||
package com.sendgrid.util; | ||
|
||
import com.fasterxml.jackson.core.JsonProcessingException; | ||
import com.fasterxml.jackson.databind.JsonMappingException; | ||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.sendgrid.exception.ApiConnectionException; | ||
import com.sendgrid.exception.ApiException; | ||
import com.sendgrid.constant.EnumConstants; | ||
import org.apache.http.client.utils.URIBuilder; | ||
|
||
import java.io.IOException; | ||
import java.net.URLEncoder; | ||
import java.nio.charset.StandardCharsets; | ||
import java.util.Arrays; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.StringJoiner; | ||
|
||
public class Utility { | ||
public static String buildWithPathParams(String path, Map<String, String> params) { | ||
|
||
public static String buildBaseUrl(final String domain, final String region, final String endPoint) { | ||
List<String> availableRegions = EnumConstants.Region.getValues(); | ||
StringBuilder defaultDomain = new StringBuilder(domain); | ||
if (availableRegions.contains(region)) { | ||
if (!EnumConstants.Region.GLOBAL.getValue().equals(region)) { | ||
defaultDomain.append("."); | ||
defaultDomain.append(region); | ||
} | ||
} | ||
return "https://" + defaultDomain.toString() + ".sendgrid.com" + endPoint; | ||
} | ||
public static String buildWithPathParams(String path, final Map<String, String> params) { | ||
for (Map.Entry<String, String> entry : params.entrySet()) { | ||
String placeholder = "\\{" + entry.getKey() + "\\}"; | ||
path = path.replaceAll(placeholder, entry.getValue()); | ||
} | ||
return path; | ||
} | ||
|
||
public static String buildWithQueryParams(String path, Map<String, List<String>> queryParams) { | ||
if (queryParams.isEmpty()) { | ||
return path; | ||
public static String buildWithQueryParams(String path, final Map<String, String> queryParams) { | ||
URIBuilder builder = new URIBuilder(); | ||
if (queryParams != null) { | ||
String multiValueDelimiter = "&"; | ||
for (Map.Entry<String, String> entry : queryParams.entrySet()) { | ||
String key = entry.getKey(); | ||
String value = entry.getValue(); | ||
|
||
if (value.contains(multiValueDelimiter)) { | ||
List<String> values = Arrays.asList(value.split(multiValueDelimiter)); | ||
for (String val : values) { | ||
builder.addParameter(key, val); | ||
} | ||
} else { | ||
builder.setParameter(key, value); | ||
} | ||
} | ||
} | ||
StringJoiner joiner = new StringJoiner("&"); | ||
queryParams.forEach((key, values) -> { | ||
values.forEach(value -> { | ||
joiner.add(key + "=" + value); // In case all query parameter needs to be URL Encoded, encode value here. | ||
}); | ||
}); | ||
path = path + "?" + joiner.toString(); | ||
return path; | ||
return path + builder.toString(); | ||
} | ||
} |