Skip to content

Commit f9319ae

Browse files
committed
Implement Contact Exports API
1 parent 0b9583d commit f9319ae

File tree

17 files changed

+330
-1
lines changed

17 files changed

+330
-1
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.mailtrap.examples.contactimports;
2+
3+
import io.mailtrap.config.MailtrapConfig;
4+
import io.mailtrap.factory.MailtrapClientFactory;
5+
import io.mailtrap.model.request.contactexports.ContactExportFilter;
6+
import io.mailtrap.model.request.contactexports.ContactExportFilterOperator;
7+
import io.mailtrap.model.request.contactexports.CreateContactsExportRequest;
8+
9+
import java.util.List;
10+
11+
public class ContactExportsExample {
12+
13+
private static final String TOKEN = "<YOUR MAILTRAP TOKEN>";
14+
private static final long ACCOUNT_ID = 1L;
15+
private static final long FILTER_ID = 1L;
16+
17+
public static void main(String[] args) {
18+
final var config = new MailtrapConfig.Builder()
19+
.token(TOKEN)
20+
.build();
21+
22+
final var client = MailtrapClientFactory.createMailtrapClient(config);
23+
24+
final var exportFilter = ContactExportFilter.ids(ContactExportFilterOperator.EQUAL, FILTER_ID);
25+
26+
final var createRequest = new CreateContactsExportRequest(List.of(exportFilter));
27+
28+
final var createResponse = client.contactsApi().contactExports()
29+
.createContactExport(ACCOUNT_ID, createRequest);
30+
31+
System.out.println(createResponse);
32+
33+
var contactImportResponse = client.contactsApi().contactExports()
34+
.getContactExport(ACCOUNT_ID, createResponse.getId());
35+
36+
System.out.println(contactImportResponse);
37+
}
38+
39+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.mailtrap.api.contactexports;
2+
3+
import io.mailtrap.model.request.contactexports.CreateContactsExportRequest;
4+
import io.mailtrap.model.response.contactexports.ContactExportResponse;
5+
6+
public interface ContactExports {
7+
8+
/**
9+
* Create a new Contact Export
10+
*
11+
* @param accountId unique account ID
12+
* @param request payload
13+
* @return created contact export
14+
*/
15+
ContactExportResponse createContactExport(long accountId, CreateContactsExportRequest request);
16+
17+
/**
18+
* Get Contact Export
19+
*
20+
* @param accountId unique account ID
21+
* @param exportId unique contact export ID
22+
* @return contact export
23+
*/
24+
ContactExportResponse getContactExport(long accountId, long exportId);
25+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.mailtrap.api.contactexports;
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.contactexports.CreateContactsExportRequest;
8+
import io.mailtrap.model.response.contactexports.ContactExportResponse;
9+
10+
public class ContactExportsImpl extends ApiResource implements ContactExports {
11+
12+
public ContactExportsImpl(final MailtrapConfig config) {
13+
super(config);
14+
this.apiHost = Constants.GENERAL_HOST;
15+
}
16+
17+
@Override
18+
public ContactExportResponse createContactExport(final long accountId, final CreateContactsExportRequest request) {
19+
return httpClient.post(
20+
String.format(apiHost + "/api/accounts/%d/contacts/exports", accountId),
21+
request,
22+
new RequestData(),
23+
ContactExportResponse.class
24+
);
25+
}
26+
27+
@Override
28+
public ContactExportResponse getContactExport(final long accountId, final long exportId) {
29+
return httpClient.get(
30+
String.format(apiHost + "/api/accounts/%d/contacts/exports/%d", accountId, exportId),
31+
new RequestData(),
32+
ContactExportResponse.class
33+
);
34+
}
35+
}

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.contactexports.ContactExports;
34
import io.mailtrap.api.contactfields.ContactFields;
45
import io.mailtrap.api.contactimports.ContactImports;
56
import io.mailtrap.api.contactlists.ContactLists;
@@ -19,4 +20,5 @@ public class MailtrapContactsApi {
1920
private final Contacts contacts;
2021
private final ContactImports contactImports;
2122
private final ContactFields contactFields;
23+
private final ContactExports contactExports;
2224
}

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.contactexports.ContactExportsImpl;
910
import io.mailtrap.api.contactfields.ContactFieldsImpl;
1011
import io.mailtrap.api.contactimports.ContactImportsImpl;
1112
import io.mailtrap.api.contactlists.ContactListsImpl;
@@ -74,8 +75,9 @@ private static MailtrapContactsApi createContactsApi(final MailtrapConfig config
7475
final var contacts = new ContactsImpl(config);
7576
final var contactImports = new ContactImportsImpl(config, VALIDATOR);
7677
final var contactFields = new ContactFieldsImpl(config, VALIDATOR);
78+
final var contactExports = new ContactExportsImpl(config);
7779

78-
return new MailtrapContactsApi(contactLists, contacts, contactImports, contactFields);
80+
return new MailtrapContactsApi(contactLists, contacts, contactImports, contactFields, contactExports);
7981
}
8082

8183
private static MailtrapGeneralApi createGeneralApi(final MailtrapConfig config) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.mailtrap.model.request.contactexports;
2+
3+
import lombok.Getter;
4+
5+
import static io.mailtrap.model.request.contactexports.ContactExportFilterName.list_id;
6+
import static io.mailtrap.model.request.contactexports.ContactExportFilterName.subscription_status;
7+
8+
@Getter
9+
public class ContactExportFilter {
10+
11+
private final String name;
12+
private final String operator;
13+
private final Object value;
14+
15+
private ContactExportFilter(final String name, final String operator, final Object value) {
16+
this.name = name;
17+
this.operator = operator;
18+
this.value = value;
19+
}
20+
21+
public static ContactExportFilter ids(final ContactExportFilterOperator operator, final Long... ids) {
22+
return new ContactExportFilter(list_id.name(), operator.getValue(), ids);
23+
}
24+
25+
public static ContactExportFilter subscriptionStatus(final ContactExportFilterOperator operator, final ContactExportFilterSubscriptionStatus status) {
26+
return new ContactExportFilter(subscription_status.name(), operator.getValue(), status.getValue());
27+
}
28+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.mailtrap.model.request.contactexports;
2+
3+
import lombok.RequiredArgsConstructor;
4+
5+
@RequiredArgsConstructor
6+
public enum ContactExportFilterName {
7+
subscription_status,
8+
list_id
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.mailtrap.model.request.contactexports;
2+
3+
import lombok.Getter;
4+
import lombok.RequiredArgsConstructor;
5+
6+
@Getter
7+
@RequiredArgsConstructor
8+
public enum ContactExportFilterOperator {
9+
EQUAL("equal");
10+
11+
private final String value;
12+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.mailtrap.model.request.contactexports;
2+
3+
import lombok.Getter;
4+
import lombok.RequiredArgsConstructor;
5+
6+
import java.util.Arrays;
7+
8+
@Getter
9+
@RequiredArgsConstructor
10+
public enum ContactExportFilterSubscriptionStatus {
11+
SUBSCRIBED("subscribed"),
12+
UNSUBSCRIBED("unsubscribed");
13+
14+
private final String value;
15+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.mailtrap.model.request.contactexports;
2+
3+
import io.mailtrap.model.AbstractModel;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
7+
import java.util.List;
8+
9+
@Getter
10+
@AllArgsConstructor
11+
public class CreateContactsExportRequest extends AbstractModel {
12+
13+
private List<ContactExportFilter> filters;
14+
}

0 commit comments

Comments
 (0)