Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package io.mailtrap.examples.contactevents;

import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.factory.MailtrapClientFactory;
import io.mailtrap.model.request.contactevents.CreateContactEventRequest;
import io.mailtrap.model.response.contactevents.ContactEventResponse;

import java.util.Map;

public class ContactEventsExample {

private static final String TOKEN = "<YOUR MAILTRAP TOKEN>";
private static final long ACCOUNT_ID = 1L;
private static final String CONTACT_IDENTIFIER = "b691272b-3e50-4813-997b-c7c9b317dcb2";

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

final var client = MailtrapClientFactory.createMailtrapClient(config);

final CreateContactEventRequest request = new CreateContactEventRequest("UserLogin", Map.of(
"user_id", 11,
"user_name", "Dillan Doe",
"is_active", true
));

final ContactEventResponse contactEvent = client.contactsApi().contactEvents().createContactEvent(ACCOUNT_ID, CONTACT_IDENTIFIER, request);
System.out.println(contactEvent);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,34 @@

import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.factory.MailtrapClientFactory;
import io.mailtrap.model.request.contactlists.ContactListRequest;

public class ContactListsExample {

private static final String TOKEN = "<YOUR MAILTRAP TOKEN>";
private static final long ACCOUNT_ID = 1L;
private static final String NAME_FOR_CREATE = "Clients";
private static final String NAME_FOR_UPDATE = "Customers";

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

final var client = MailtrapClientFactory.createMailtrapClient(config);

final var contacts = client.contactsApi().contactLists().findAll(ACCOUNT_ID);
final var created = client.contactsApi().contactLists().createContactList(ACCOUNT_ID, new ContactListRequest(NAME_FOR_CREATE));
System.out.println(created);

System.out.println(contacts);
final var updated = client.contactsApi().contactLists().updateContactList(ACCOUNT_ID, created.getId(), new ContactListRequest(NAME_FOR_UPDATE));
System.out.println(updated);

final var byId = client.contactsApi().contactLists().getContactList(ACCOUNT_ID, updated.getId());
System.out.println(byId);

final var contactLists = client.contactsApi().contactLists().findAll(ACCOUNT_ID);
System.out.println(contactLists);

client.contactsApi().contactLists().deleteContactList(ACCOUNT_ID, byId.getId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.factory.MailtrapClientFactory;
import io.mailtrap.model.request.projects.CreateUpdateProjectRequest;
import io.mailtrap.model.request.projects.ProjectRequest;

public class ProjectsExample {

Expand All @@ -22,7 +22,7 @@ public static void main(String[] args) {
long firstProjectId = projects.get(0).getId();

final var updatedProject =
testingClient.projects().updateProject(ACCOUNT_ID, firstProjectId, new CreateUpdateProjectRequest(new CreateUpdateProjectRequest.ProjectData("mock project")));
testingClient.projects().updateProject(ACCOUNT_ID, firstProjectId, new ProjectRequest(new ProjectRequest.ProjectData("mock project")));
System.out.println(updatedProject);

final var deletedProject = testingClient.projects().deleteProject(ACCOUNT_ID, firstProjectId);
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/io/mailtrap/api/contactevents/ContactEvents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.mailtrap.api.contactevents;

import io.mailtrap.model.request.contactevents.CreateContactEventRequest;
import io.mailtrap.model.response.contactevents.ContactEventResponse;

public interface ContactEvents {

/**
* Submit custom event for contact
*
* @param accountId unique account ID
* @param contactIdentifier Contact UUID or Email
* @param request body
* @return created contact event
*/
ContactEventResponse createContactEvent(long accountId, String contactIdentifier, CreateContactEventRequest request);
}
29 changes: 29 additions & 0 deletions src/main/java/io/mailtrap/api/contactevents/ContactEventsImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package io.mailtrap.api.contactevents;

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.contactevents.CreateContactEventRequest;
import io.mailtrap.model.response.contactevents.ContactEventResponse;

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class ContactEventsImpl extends ApiResource implements ContactEvents {

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

@Override
public ContactEventResponse createContactEvent(final long accountId, final String contactIdentifier, final CreateContactEventRequest request) {
return httpClient.post(
String.format(apiHost + "/api/accounts/%d/contacts/%s/events", accountId, URLEncoder.encode(contactIdentifier, StandardCharsets.UTF_8)),
request,
new RequestData(),
ContactEventResponse.class
);
}
}
37 changes: 37 additions & 0 deletions src/main/java/io/mailtrap/api/contactlists/ContactLists.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.mailtrap.api.contactlists;

import io.mailtrap.model.request.contactlists.ContactListRequest;
import io.mailtrap.model.response.contactlists.ContactListResponse;

import java.util.List;
Expand All @@ -13,4 +14,40 @@ public interface ContactLists {
* @return contacts list
*/
List<ContactListResponse> findAll(long accountId);

/**
* Create new Contact List
*
* @param accountId unique account ID
* @param request body
* @return created contact list
*/
ContactListResponse createContactList(long accountId, ContactListRequest request);

/**
* Get a contact list by ID
*
* @param accountId unique account ID
* @param contactListId unique contact list ID
* @return found contact list
*/
ContactListResponse getContactList(long accountId, long contactListId);

/**
* Update existing Contact List
*
* @param accountId unique account ID
* @param contactListId unique contact list ID
* @param request body
* @return updated contact list
*/
ContactListResponse updateContactList(long accountId, long contactListId, ContactListRequest request);

/**
* Delete existing Contact List
*
* @param accountId unique account ID
* @param contactListId unique contact list ID
*/
void deleteContactList(long accountId, long contactListId);
}
39 changes: 39 additions & 0 deletions src/main/java/io/mailtrap/api/contactlists/ContactListsImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import io.mailtrap.api.apiresource.ApiResource;
import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.http.RequestData;
import io.mailtrap.model.request.contactlists.ContactListRequest;
import io.mailtrap.model.response.contactlists.ContactListResponse;

import java.util.List;
Expand All @@ -23,4 +24,42 @@ public List<ContactListResponse> findAll(final long accountId) {
ContactListResponse.class
);
}

@Override
public ContactListResponse createContactList(final long accountId, final ContactListRequest request) {
return httpClient.post(
String.format(apiHost + "/api/accounts/%d/contacts/lists", accountId),
request,
new RequestData(),
ContactListResponse.class
);
}

@Override
public ContactListResponse getContactList(final long accountId, final long contactListId) {
return httpClient.get(
String.format(apiHost + "/api/accounts/%d/contacts/lists/%d", accountId, contactListId),
new RequestData(),
ContactListResponse.class
);
}

@Override
public ContactListResponse updateContactList(final long accountId, final long contactListId, final ContactListRequest request) {
return httpClient.patch(
String.format(apiHost + "/api/accounts/%d/contacts/lists/%d", accountId, contactListId),
request,
new RequestData(),
ContactListResponse.class
);
}

@Override
public void deleteContactList(final long accountId, final long contactListId) {
httpClient.delete(
String.format(apiHost + "/api/accounts/%d/contacts/lists/%d", accountId, contactListId),
new RequestData(),
Void.class
);
}
}
6 changes: 3 additions & 3 deletions src/main/java/io/mailtrap/api/projects/Projects.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.mailtrap.api.projects;

import io.mailtrap.model.request.projects.CreateUpdateProjectRequest;
import io.mailtrap.model.request.projects.ProjectRequest;
import io.mailtrap.model.response.projects.DeleteProjectResponse;
import io.mailtrap.model.response.projects.ProjectsResponse;

Expand All @@ -18,7 +18,7 @@ public interface Projects {
* @param request request data
* @return Returns attributes of the created project. <b>permissions</b> returns the permissions of the token for the project
*/
ProjectsResponse createProject(long accountId, CreateUpdateProjectRequest request);
ProjectsResponse createProject(long accountId, ProjectRequest request);

/**
* List projects and their inboxes to which the API token has access.
Expand All @@ -45,7 +45,7 @@ public interface Projects {
* @param updateRequest request data
* @return project attributes and inboxes of this project with their attributes. <b>permissions</b> returns the permissions of the token for the project
*/
ProjectsResponse updateProject(long accountId, long projectId, CreateUpdateProjectRequest updateRequest);
ProjectsResponse updateProject(long accountId, long projectId, ProjectRequest updateRequest);

/**
* Delete project and its inboxes
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/io/mailtrap/api/projects/ProjectsImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import io.mailtrap.api.apiresource.ApiResourceWithValidation;
import io.mailtrap.config.MailtrapConfig;
import io.mailtrap.http.RequestData;
import io.mailtrap.model.request.projects.CreateUpdateProjectRequest;
import io.mailtrap.model.request.projects.ProjectRequest;
import io.mailtrap.model.response.projects.DeleteProjectResponse;
import io.mailtrap.model.response.projects.ProjectsResponse;

Expand All @@ -19,7 +19,7 @@ public ProjectsImpl(final MailtrapConfig config, final MailtrapValidator mailtra
}

@Override
public ProjectsResponse createProject(final long accountId, final CreateUpdateProjectRequest request) {
public ProjectsResponse createProject(final long accountId, final ProjectRequest request) {

validateRequestBodyAndThrowException(request);

Expand Down Expand Up @@ -50,7 +50,7 @@ public ProjectsResponse getProject(final long accountId, final long projectId) {
}

@Override
public ProjectsResponse updateProject(final long accountId, final long projectId, final CreateUpdateProjectRequest updateRequest) {
public ProjectsResponse updateProject(final long accountId, final long projectId, final ProjectRequest updateRequest) {

validateRequestBodyAndThrowException(updateRequest);

Expand Down
2 changes: 2 additions & 0 deletions src/main/java/io/mailtrap/client/api/MailtrapContactsApi.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.mailtrap.client.api;

import io.mailtrap.api.contactevents.ContactEvents;
import io.mailtrap.api.contactexports.ContactExports;
import io.mailtrap.api.contactfields.ContactFields;
import io.mailtrap.api.contactimports.ContactImports;
Expand All @@ -21,4 +22,5 @@ public class MailtrapContactsApi {
private final ContactImports contactImports;
private final ContactFields contactFields;
private final ContactExports contactExports;
private final ContactEvents contactEvents;
}
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 @@ -6,6 +6,7 @@
import io.mailtrap.api.attachments.AttachmentsImpl;
import io.mailtrap.api.billing.BillingImpl;
import io.mailtrap.api.bulkemails.BulkEmailsImpl;
import io.mailtrap.api.contactevents.ContactEventsImpl;
import io.mailtrap.api.contactexports.ContactExportsImpl;
import io.mailtrap.api.contactfields.ContactFieldsImpl;
import io.mailtrap.api.contactimports.ContactImportsImpl;
Expand Down Expand Up @@ -76,8 +77,9 @@ private static MailtrapContactsApi createContactsApi(final MailtrapConfig config
final var contactImports = new ContactImportsImpl(config, VALIDATOR);
final var contactFields = new ContactFieldsImpl(config, VALIDATOR);
final var contactExports = new ContactExportsImpl(config);
final var contactEvents = new ContactEventsImpl(config);

return new MailtrapContactsApi(contactLists, contacts, contactImports, contactFields, contactExports);
return new MailtrapContactsApi(contactLists, contacts, contactImports, contactFields, contactExports, contactEvents);
}

private static MailtrapGeneralApi createGeneralApi(final MailtrapConfig config) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.mailtrap.model.request.contactevents;

import io.mailtrap.model.AbstractModel;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Map;

@Getter
@AllArgsConstructor
public class CreateContactEventRequest extends AbstractModel {
private String name;
private Map<String, Object> params;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.mailtrap.model.request.contactlists;

import io.mailtrap.model.AbstractModel;
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class ContactListRequest extends AbstractModel {
private String name;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

@Getter
@AllArgsConstructor
public class CreateUpdateProjectRequest extends AbstractModel {
public class ProjectRequest extends AbstractModel {

@JsonProperty("project")
private ProjectData project;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.mailtrap.model.response.contactevents;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.Map;

@Data
public class ContactEventResponse {

@JsonProperty("contact_id")
private String contactId;

@JsonProperty("contact_email")
private String contactEmail;

private String name;

private Map<String, Object> params;

}
Loading