Skip to content

Commit a81bc68

Browse files
committed
Implemented ContactEvents and missing ContactLists APIs
1 parent bee3b04 commit a81bc68

20 files changed

Lines changed: 355 additions & 12 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.mailtrap.examples.contactevents;
2+
3+
import io.mailtrap.config.MailtrapConfig;
4+
import io.mailtrap.factory.MailtrapClientFactory;
5+
import io.mailtrap.model.request.contactevents.CreateContactEventRequest;
6+
import io.mailtrap.model.response.contactevents.ContactEventResponse;
7+
8+
import java.util.Map;
9+
10+
public class ContactEventsExample {
11+
12+
private static final String TOKEN = "<YOUR MAILTRAP TOKEN>";
13+
private static final long ACCOUNT_ID = 1L;
14+
private static final String CONTACT_EVENT_ID = "b691272b-3e50-4813-997b-c7c9b317dcb2";
15+
16+
public static void main(String[] args) {
17+
final var config = new MailtrapConfig.Builder()
18+
.token(TOKEN)
19+
.build();
20+
21+
final var client = MailtrapClientFactory.createMailtrapClient(config);
22+
23+
final CreateContactEventRequest request = new CreateContactEventRequest("UserLogin", Map.of(
24+
"user_id", 11,
25+
"user_name", "Dillan Doe",
26+
"is_active", true
27+
));
28+
29+
final ContactEventResponse contactEvent = client.contactsApi().contactEvents().createContactEvent(ACCOUNT_ID, CONTACT_EVENT_ID, request);
30+
System.out.println(contactEvent);
31+
}
32+
}

examples/java/io/mailtrap/examples/contactlists/ContactListsExample.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,34 @@
22

33
import io.mailtrap.config.MailtrapConfig;
44
import io.mailtrap.factory.MailtrapClientFactory;
5+
import io.mailtrap.model.request.contactlists.CreateUpdateContactListRequest;
56

67
public class ContactListsExample {
78

89
private static final String TOKEN = "<YOUR MAILTRAP TOKEN>";
910
private static final long ACCOUNT_ID = 1L;
11+
private static final String NAME_FOR_CREATE = "Clients";
12+
private static final String NAME_FOR_UPDATE = "Customers";
1013

1114
public static void main(String[] args) {
1215
final var config = new MailtrapConfig.Builder()
13-
.token(TOKEN)
14-
.build();
16+
.token(TOKEN)
17+
.build();
1518

1619
final var client = MailtrapClientFactory.createMailtrapClient(config);
1720

18-
final var contacts = client.contactsApi().contactLists().findAll(ACCOUNT_ID);
21+
final var created = client.contactsApi().contactLists().createContactList(ACCOUNT_ID, new CreateUpdateContactListRequest(NAME_FOR_CREATE));
22+
System.out.println(created);
1923

20-
System.out.println(contacts);
24+
final var updated = client.contactsApi().contactLists().updateContactList(ACCOUNT_ID, created.getId(), new CreateUpdateContactListRequest(NAME_FOR_UPDATE));
25+
System.out.println(updated);
26+
27+
final var byId = client.contactsApi().contactLists().getContactList(ACCOUNT_ID, updated.getId());
28+
System.out.println(byId);
29+
30+
final var contactLists = client.contactsApi().contactLists().findAll(ACCOUNT_ID);
31+
System.out.println(contactLists);
32+
33+
contactLists.forEach(contactList -> client.contactsApi().contactLists().deleteContactList(ACCOUNT_ID, contactList.getId()));
2134
}
2235
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.mailtrap.api.contactevents;
2+
3+
import io.mailtrap.model.request.contactevents.CreateContactEventRequest;
4+
import io.mailtrap.model.response.contactevents.ContactEventResponse;
5+
6+
public interface ContactEvents {
7+
8+
/**
9+
* Submit custom event for contact
10+
*
11+
* @param accountId unique account ID
12+
* @param contactIdentifier Contact UUID or Email
13+
* @param request body
14+
* @return created contact event
15+
*/
16+
ContactEventResponse createContactEvent(long accountId, String contactIdentifier, CreateContactEventRequest request);
17+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.mailtrap.api.contactevents;
2+
3+
import io.mailtrap.Constants;
4+
import io.mailtrap.api.apiresource.ApiResource;
5+
import io.mailtrap.config.MailtrapConfig;
6+
import io.mailtrap.http.RequestData;
7+
import io.mailtrap.model.request.contactevents.CreateContactEventRequest;
8+
import io.mailtrap.model.response.contactevents.ContactEventResponse;
9+
10+
import java.net.URLEncoder;
11+
import java.nio.charset.StandardCharsets;
12+
13+
public class ContactEventsImpl extends ApiResource implements ContactEvents {
14+
15+
public ContactEventsImpl(final MailtrapConfig config) {
16+
super(config);
17+
this.apiHost = Constants.GENERAL_HOST;
18+
}
19+
20+
@Override
21+
public ContactEventResponse createContactEvent(final long accountId, final String contactIdentifier, final CreateContactEventRequest request) {
22+
return httpClient.post(
23+
String.format(apiHost + "/api/accounts/%d/contacts/%s/events", accountId, URLEncoder.encode(contactIdentifier, StandardCharsets.UTF_8)),
24+
request,
25+
new RequestData(),
26+
ContactEventResponse.class
27+
);
28+
}
29+
}

src/main/java/io/mailtrap/api/contactlists/ContactLists.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.mailtrap.api.contactlists;
22

3+
import io.mailtrap.model.request.contactlists.CreateUpdateContactListRequest;
34
import io.mailtrap.model.response.contactlists.ContactListResponse;
45

56
import java.util.List;
@@ -13,4 +14,40 @@ public interface ContactLists {
1314
* @return contacts list
1415
*/
1516
List<ContactListResponse> findAll(long accountId);
17+
18+
/**
19+
* Create new Contact Lists
20+
*
21+
* @param accountId unique account ID
22+
* @param request body
23+
* @return created contact list
24+
*/
25+
ContactListResponse createContactList(long accountId, CreateUpdateContactListRequest request);
26+
27+
/**
28+
* Get a contact list by ID
29+
*
30+
* @param accountId unique account ID
31+
* @param contactListId unique contact list ID
32+
* @return found contact list
33+
*/
34+
ContactListResponse getContactList(long accountId, long contactListId);
35+
36+
/**
37+
* Update existing Contact List
38+
*
39+
* @param accountId unique account ID
40+
* @param contactListId unique contact list ID
41+
* @param request body
42+
* @return updated contact list
43+
*/
44+
ContactListResponse updateContactList(long accountId, long contactListId, CreateUpdateContactListRequest request);
45+
46+
/**
47+
* Delete existing Contact List
48+
*
49+
* @param accountId unique account ID
50+
* @param contactListId unique contact list ID
51+
*/
52+
void deleteContactList(long accountId, long contactListId);
1653
}

src/main/java/io/mailtrap/api/contactlists/ContactListsImpl.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.mailtrap.api.apiresource.ApiResource;
55
import io.mailtrap.config.MailtrapConfig;
66
import io.mailtrap.http.RequestData;
7+
import io.mailtrap.model.request.contactlists.CreateUpdateContactListRequest;
78
import io.mailtrap.model.response.contactlists.ContactListResponse;
89

910
import java.util.List;
@@ -23,4 +24,42 @@ public List<ContactListResponse> findAll(final long accountId) {
2324
ContactListResponse.class
2425
);
2526
}
27+
28+
@Override
29+
public ContactListResponse createContactList(final long accountId, final CreateUpdateContactListRequest request) {
30+
return httpClient.post(
31+
String.format(apiHost + "/api/accounts/%d/contacts/lists", accountId),
32+
request,
33+
new RequestData(),
34+
ContactListResponse.class
35+
);
36+
}
37+
38+
@Override
39+
public ContactListResponse getContactList(final long accountId, final long contactListId) {
40+
return httpClient.get(
41+
String.format(apiHost + "/api/accounts/%d/contacts/lists/%d", accountId, contactListId),
42+
new RequestData(),
43+
ContactListResponse.class
44+
);
45+
}
46+
47+
@Override
48+
public ContactListResponse updateContactList(final long accountId, final long contactListId, final CreateUpdateContactListRequest request) {
49+
return httpClient.patch(
50+
String.format(apiHost + "/api/accounts/%d/contacts/lists/%d", accountId, contactListId),
51+
request,
52+
new RequestData(),
53+
ContactListResponse.class
54+
);
55+
}
56+
57+
@Override
58+
public void deleteContactList(final long accountId, final long contactListId) {
59+
httpClient.delete(
60+
String.format(apiHost + "/api/accounts/%d/contacts/lists/%d", accountId, contactListId),
61+
new RequestData(),
62+
Void.class
63+
);
64+
}
2665
}

src/main/java/io/mailtrap/client/api/MailtrapContactsApi.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.mailtrap.client.api;
22

3+
import io.mailtrap.api.contactevents.ContactEvents;
34
import io.mailtrap.api.contactexports.ContactExports;
45
import io.mailtrap.api.contactfields.ContactFields;
56
import io.mailtrap.api.contactimports.ContactImports;
@@ -21,4 +22,5 @@ public class MailtrapContactsApi {
2122
private final ContactImports contactImports;
2223
private final ContactFields contactFields;
2324
private final ContactExports contactExports;
25+
private final ContactEvents contactEvents;
2426
}

src/main/java/io/mailtrap/factory/MailtrapClientFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import io.mailtrap.api.attachments.AttachmentsImpl;
77
import io.mailtrap.api.billing.BillingImpl;
88
import io.mailtrap.api.bulkemails.BulkEmailsImpl;
9+
import io.mailtrap.api.contactevents.ContactEventsImpl;
910
import io.mailtrap.api.contactexports.ContactExportsImpl;
1011
import io.mailtrap.api.contactfields.ContactFieldsImpl;
1112
import io.mailtrap.api.contactimports.ContactImportsImpl;
@@ -76,8 +77,9 @@ private static MailtrapContactsApi createContactsApi(final MailtrapConfig config
7677
final var contactImports = new ContactImportsImpl(config, VALIDATOR);
7778
final var contactFields = new ContactFieldsImpl(config, VALIDATOR);
7879
final var contactExports = new ContactExportsImpl(config);
80+
final var contactEvents = new ContactEventsImpl(config);
7981

80-
return new MailtrapContactsApi(contactLists, contacts, contactImports, contactFields, contactExports);
82+
return new MailtrapContactsApi(contactLists, contacts, contactImports, contactFields, contactExports, contactEvents);
8183
}
8284

8385
private static MailtrapGeneralApi createGeneralApi(final MailtrapConfig config) {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.mailtrap.model.request.contactevents;
2+
3+
import io.mailtrap.model.AbstractModel;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
7+
import java.util.Map;
8+
9+
@Getter
10+
@AllArgsConstructor
11+
public class CreateContactEventRequest extends AbstractModel {
12+
private String name;
13+
private Map<String, Object> params;
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.mailtrap.model.request.contactlists;
2+
3+
import io.mailtrap.model.AbstractModel;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
7+
@Getter
8+
@AllArgsConstructor
9+
public class CreateUpdateContactListRequest extends AbstractModel {
10+
private String name;
11+
}

0 commit comments

Comments
 (0)