All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sparkpost.Client Maven / Gradle / Ivy

There is a newer version: 0.27
Show newest version

package com.sparkpost;

import java.net.InetSocketAddress;
import java.net.Proxy;
import java.util.ArrayList;
import java.util.List;

import com.sparkpost.exception.SparkPostException;
import com.sparkpost.model.AddressAttributes;
import com.sparkpost.model.OptionsAttributes;
import com.sparkpost.model.RecipientAttributes;
import com.sparkpost.model.TemplateContentAttributes;
import com.sparkpost.model.TransmissionWithRecipientArray;
import com.sparkpost.model.responses.Response;
import com.sparkpost.resources.ResourceTransmissions;
import com.sparkpost.transport.IRestConnection;
import com.sparkpost.transport.RestConnection;

/**
 * The Client class stores everything specific to the SparkPost client:
*
    *
  • The Authorization Key *
  • The "From:" email address *
* * @author grava */ public class Client { private String authKey; private String username; private String password; private String fromEmail; private Proxy proxy; private boolean disconnectAfterRequest = false; private int httpConnectTimeout = 0; // 0 - system default private int httpReadTimeout = 0; // 0 - system default public Client() { } public Client(String key) { setAuthKey(key); } /** * You can create and API Key here SparkPost * * @param key * SparkPost API Key */ public final void setAuthKey(String key) { this.authKey = key; } public String getAuthKey() { return this.authKey; } public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } /** * @return the fromEmail */ public String getFromEmail() { return this.fromEmail; } /** * If true will be more aggressive about disconnecting idle HTTP connections * * @return true */ public boolean isDisconnectAfterRequest() { return this.disconnectAfterRequest; } /** * If true the underlying HTTP transport will be more aggressive about closing idle HTTP connection so may not resuse TCP sockets as much. * * @param disconnectAfterRequest * default is false */ public void setDisconnectAfterRequest(boolean disconnectAfterRequest) { this.disconnectAfterRequest = disconnectAfterRequest; } public int getHttpConnectTimeout() { return this.httpConnectTimeout; } public void setProxy(String hostname, int port) { this.proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(hostname, port)); } public Proxy getProxy() { return this.proxy; } /** * Sets a specified timeout value, in milliseconds, to be used * when opening a communications link to the resource referenced * by this URLConnection. If the timeout expires before the * connection can be established, a * java.net.SocketTimeoutException is raised. A timeout of zero is * interpreted as an infinite timeout. **/ public void setHttpConnectTimeout(int timeout) { this.httpConnectTimeout = timeout; } public int getHttpReadTimeout() { return this.httpReadTimeout; } public void setHttpReadTimeout(int httpReadTimeout) { this.httpReadTimeout = httpReadTimeout; } /** * @param fromEmail * the fromEmail to set */ public void setFromEmail(String fromEmail) { this.fromEmail = fromEmail; } public Response sendMessage(String from, String recipient, String subject, String text, String html) throws SparkPostException { List recipients = new ArrayList<>(); recipients.add(recipient); return sendMessage(from, recipients, subject, text, html); } public Response sendMessage(String from, List recipients, String subject, String text, String html) throws SparkPostException { TransmissionWithRecipientArray transmission = new TransmissionWithRecipientArray(); List recipientArray = new ArrayList(); for (String recipient : recipients) { RecipientAttributes recipientAttribs = new RecipientAttributes(); recipientAttribs.setAddress(new AddressAttributes(recipient)); recipientArray.add(recipientAttribs); } transmission.setRecipientArray(recipientArray); TemplateContentAttributes contentAttributes = new TemplateContentAttributes(); contentAttributes.setFrom(new AddressAttributes(from)); contentAttributes.setSubject(subject); contentAttributes.setHtml(html); contentAttributes.setText(text); transmission.setContentAttributes(contentAttributes); if (from.toLowerCase().contains("@sparkpostbox.com")) { OptionsAttributes options = new OptionsAttributes(); options.setSandbox(true); transmission.setOptions(options); } IRestConnection connection = new RestConnection(this); Response response = ResourceTransmissions.create(connection, 0, transmission); return response; } @Override public String toString() { return "client[email: " + this.fromEmail; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy