Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ You can find the [Mailtrap Java API reference](https://mailtrap.github.io/mailtr
- [Send using template](examples/java/io/mailtrap/examples/sending/TemplateExample.java)
- [Batch](examples/java/io/mailtrap/examples/sending/BatchExample.java)
- [Sending Domains](examples/java/io/mailtrap/examples/sendingdomains/SendingDomainsExample.java)
- [Company Info](examples/java/io/mailtrap/examples/companyinfo/CompanyInfoExample.java)
- [Suppressions](examples/java/io/mailtrap/examples/suppressions/SuppressionsExample.java)
- [Stats](examples/java/io/mailtrap/examples/sending/StatsExample.java)
- [Email Logs](examples/java/io/mailtrap/examples/emaillogs/EmailLogsExample.java)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package io.mailtrap.examples.companyinfo;

import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.factory.MailtrapClientFactory;
import io.mailtrap.model.request.companyinfo.CreateCompanyInfoRequest;
import io.mailtrap.model.request.companyinfo.UpdateCompanyInfoRequest;

public class CompanyInfoExample {

private static final String TOKEN = System.getenv("MAILTRAP_API_KEY");
private static final long DOMAIN_ID = Long.parseLong(System.getenv("MAILTRAP_DOMAIN_ID"));

public static void main(String[] args) {
final var config = new MailtrapConfig.Builder()
.token(TOKEN)
.build();

final var client = MailtrapClientFactory.createMailtrapClient(config);

final var createRequest = new CreateCompanyInfoRequest(
CreateCompanyInfoRequest.CompanyInfoData.builder()
.name("Mailtrap")
.address("123 Main St")
.city("San Francisco")
.country("US")
.zipCode("94105")
.websiteUrl("https://mailtrap.io")
.phone("+1-555-0100")
.privacyPolicyUrl("https://mailtrap.io/privacy")
.termsOfServiceUrl("https://mailtrap.io/terms")
.infoLevel("business")
.build()
);

final var created = client.sendingApi().companyInfo().createCompanyInfo(DOMAIN_ID, createRequest);
System.out.println(created.getData());

final var companyInfo = client.sendingApi().companyInfo().getCompanyInfo(DOMAIN_ID);
System.out.println(companyInfo.getData());

final var updateRequest = new UpdateCompanyInfoRequest(
UpdateCompanyInfoRequest.CompanyInfoData.builder()
.city("New York")
.zipCode("10001")
.build()
);

final var updated = client.sendingApi().companyInfo().updateCompanyInfo(DOMAIN_ID, updateRequest);
System.out.println(updated.getData());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.mailtrap.factory.MailtrapClientFactory;
import io.mailtrap.model.request.sendingdomains.CreateSendingDomainRequest;
import io.mailtrap.model.request.sendingdomains.SendingDomainsSetupInstructionsRequest;
import io.mailtrap.model.request.sendingdomains.UpdateSendingDomainRequest;

import static io.mailtrap.model.request.sendingdomains.CreateSendingDomainRequest.SendingDomainData;

Expand Down Expand Up @@ -32,6 +33,18 @@ public static void main(String[] args) {
final var allDomains = client.sendingApi().domains().getSendingDomains(ACCOUNT_ID);
System.out.println(allDomains);

final var updateRequest = new UpdateSendingDomainRequest(
UpdateSendingDomainRequest.SendingDomainData.builder()
.openTrackingEnabled(true)
.clickTrackingEnabled(true)
.trackingOptOutEnabled(true)
.autoUnsubscribeLinkEnabled(false)
.build()
);

final var updatedDomain = client.sendingApi().domains().update(ACCOUNT_ID, createdDomain.getId(), updateRequest);
System.out.println(updatedDomain);

final var sendInstructionsRequest = new SendingDomainsSetupInstructionsRequest(DEVOPS_EMAIL);
client.sendingApi().domains().sendSendingDomainsSetupInstructions(ACCOUNT_ID, createdDomain.getId(), sendInstructionsRequest);

Expand Down
35 changes: 35 additions & 0 deletions src/main/java/io/mailtrap/api/companyinfo/CompanyInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package io.mailtrap.api.companyinfo;

import io.mailtrap.model.request.companyinfo.CreateCompanyInfoRequest;
import io.mailtrap.model.request.companyinfo.UpdateCompanyInfoRequest;
import io.mailtrap.model.response.companyinfo.CompanyInfoResponse;

public interface CompanyInfo {

/**
* Get the company info associated with a sending domain
*
* @param sendingDomainId unique domain ID
* @return company info of the sending domain
*/
CompanyInfoResponse getCompanyInfo(long sendingDomainId);

/**
* Create the company info for a sending domain. Company info is required for
* domain compliance verification.
*
* @param sendingDomainId unique domain ID
* @param request request data
* @return created company info
*/
CompanyInfoResponse createCompanyInfo(long sendingDomainId, CreateCompanyInfoRequest request);

/**
* Update the company info for a sending domain
*
* @param sendingDomainId unique domain ID
* @param request request data, only the fields set are sent
* @return updated company info
*/
CompanyInfoResponse updateCompanyInfo(long sendingDomainId, UpdateCompanyInfoRequest request);
}
50 changes: 50 additions & 0 deletions src/main/java/io/mailtrap/api/companyinfo/CompanyInfoImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package io.mailtrap.api.companyinfo;

import io.mailtrap.Constants;
import io.mailtrap.api.apiresource.ApiResource;
import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.http.RequestData;
import io.mailtrap.model.request.companyinfo.CreateCompanyInfoRequest;
import io.mailtrap.model.request.companyinfo.UpdateCompanyInfoRequest;
import io.mailtrap.model.response.companyinfo.CompanyInfoResponse;

public class CompanyInfoImpl extends ApiResource implements CompanyInfo {

public CompanyInfoImpl(final MailtrapConfig config) {
super(config);
this.apiHost = Constants.GENERAL_HOST;
}

@Override
public CompanyInfoResponse getCompanyInfo(final long sendingDomainId) {
return httpClient.get(
companyInfoPath(sendingDomainId),
new RequestData(),
CompanyInfoResponse.class
);
}

@Override
public CompanyInfoResponse createCompanyInfo(final long sendingDomainId, final CreateCompanyInfoRequest request) {
return httpClient.post(
companyInfoPath(sendingDomainId),
request,
new RequestData(),
CompanyInfoResponse.class
);
}

@Override
public CompanyInfoResponse updateCompanyInfo(final long sendingDomainId, final UpdateCompanyInfoRequest request) {
return httpClient.patch(
companyInfoPath(sendingDomainId),
request,
new RequestData(),
CompanyInfoResponse.class
);
}

private String companyInfoPath(final long sendingDomainId) {
return String.format(apiHost + "/api/domains/%d/company_info", sendingDomainId);
}
}
11 changes: 11 additions & 0 deletions src/main/java/io/mailtrap/api/sendingdomains/SendingDomains.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.mailtrap.model.request.sendingdomains.CreateSendingDomainRequest;
import io.mailtrap.model.request.sendingdomains.SendingDomainsSetupInstructionsRequest;
import io.mailtrap.model.request.sendingdomains.UpdateSendingDomainRequest;
import io.mailtrap.model.response.sendingdomains.SendingDomainsResponse;

import java.util.List;
Expand Down Expand Up @@ -34,6 +35,16 @@ public interface SendingDomains {
*/
SendingDomainsResponse getSendingDomain(long accountId, long sendingDomainId);

/**
* Update configuration settings for a sending domain
*
* @param accountId unique account ID
* @param sendingDomainId unique domain ID
* @param request request data, only the fields set are sent
* @return updated domain attributes, DNS records, status
*/
SendingDomainsResponse update(long accountId, long sendingDomainId, UpdateSendingDomainRequest request);

/**
* Send sending domain setup instructions
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import io.mailtrap.http.RequestData;
import io.mailtrap.model.request.sendingdomains.CreateSendingDomainRequest;
import io.mailtrap.model.request.sendingdomains.SendingDomainsSetupInstructionsRequest;
import io.mailtrap.model.request.sendingdomains.UpdateSendingDomainRequest;
import io.mailtrap.model.response.sendingdomains.SendingDomainsResponse;

import java.util.List;
Expand Down Expand Up @@ -45,6 +46,16 @@ public SendingDomainsResponse getSendingDomain(final long accountId, final long
);
}

@Override
public SendingDomainsResponse update(final long accountId, final long sendingDomainId, final UpdateSendingDomainRequest request) {
return httpClient.patch(
String.format(apiHost + "/api/accounts/%d/sending_domains/%d", accountId, sendingDomainId),
request,
new RequestData(),
SendingDomainsResponse.class
);
}

@Override
public void sendSendingDomainsSetupInstructions(final long accountId, final long sendingDomainId, final SendingDomainsSetupInstructionsRequest request) {
httpClient.post(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.mailtrap.client.api;

import io.mailtrap.api.companyinfo.CompanyInfo;
import io.mailtrap.api.emaillogs.EmailLogs;
import io.mailtrap.api.sendingdomains.SendingDomains;
import io.mailtrap.api.sendingemails.SendingEmails;
Expand All @@ -18,6 +19,7 @@
public class MailtrapEmailSendingApi {
private final SendingEmails emails;
private final SendingDomains domains;
private final CompanyInfo companyInfo;
private final Suppressions suppressions;
private final Stats stats;
private final EmailLogs emailLogs;
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/io/mailtrap/factory/MailtrapClientFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import io.mailtrap.api.permissions.PermissionsImpl;
import io.mailtrap.api.projects.ProjectsImpl;
import io.mailtrap.api.emaillogs.EmailLogsImpl;
import io.mailtrap.api.companyinfo.CompanyInfoImpl;
import io.mailtrap.api.sendingdomains.SendingDomainsImpl;
import io.mailtrap.api.sendingemails.SendingEmailsImpl;
import io.mailtrap.api.stats.StatsImpl;
Expand Down Expand Up @@ -134,11 +135,12 @@ private static MailtrapGeneralApi createGeneralApi(final MailtrapConfig config)
private static MailtrapEmailSendingApi createSendingApi(final MailtrapConfig config) {
final var emails = new SendingEmailsImpl(config, VALIDATOR);
final var domains = new SendingDomainsImpl(config);
final var companyInfo = new CompanyInfoImpl(config);
final var suppressions = new SuppressionsImpl(config);
final var stats = new StatsImpl(config);
final var emailLogs = new EmailLogsImpl(config);

return new MailtrapEmailSendingApi(emails, domains, suppressions, stats, emailLogs);
return new MailtrapEmailSendingApi(emails, domains, companyInfo, suppressions, stats, emailLogs);
}

private static MailtrapEmailTestingApi createTestingApi(final MailtrapConfig config) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package io.mailtrap.model.request.companyinfo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.mailtrap.model.AbstractModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class CreateCompanyInfoRequest extends AbstractModel {

@JsonProperty("company_info")
private CompanyInfoData companyInfo;

@Getter
@Builder
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class CompanyInfoData {

private String name;

private String address;

private String city;

private String country;

@JsonProperty("zip_code")
private String zipCode;

@JsonProperty("website_url")
private String websiteUrl;

private String phone;

@JsonProperty("privacy_policy_url")
private String privacyPolicyUrl;

@JsonProperty("terms_of_service_url")
private String termsOfServiceUrl;

@JsonProperty("info_level")
private String infoLevel;

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package io.mailtrap.model.request.companyinfo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.mailtrap.model.AbstractModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class UpdateCompanyInfoRequest extends AbstractModel {

@JsonProperty("company_info")
private CompanyInfoData companyInfo;

@Getter
@Builder
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class CompanyInfoData {

private String name;

private String address;

private String city;

private String country;

private String phone;

@JsonProperty("zip_code")
private String zipCode;

@JsonProperty("privacy_policy_url")
private String privacyPolicyUrl;

@JsonProperty("terms_of_service_url")
private String termsOfServiceUrl;

@JsonProperty("website_url")
private String websiteUrl;

@JsonProperty("info_level")
private String infoLevel;

}

}
Loading
Loading