Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
24 changes: 12 additions & 12 deletions examples/Mailtrap.Example.ContactEvents/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,21 @@
logger.LogInformation("Contact found with Id {ContactId} and Email {ContactEmail}.", contact.Id, contact.Email);
}

// Get resource for contact events collection
IContactsEventCollectionResource contactsEventsResource = contactsResource.Events(contact.Id);
// Get resource for contact event collection
IContactEventCollectionResource contactEventsResource = contactsResource.Events(contact.Id);

// Create contacts event
var createContactsEventRequest = new CreateContactsEventRequest("MyFirstContactsEvent");
createContactsEventRequest.Params.Add("user_id", 101);
createContactsEventRequest.Params.Add("user_name", "John Smith");
createContactsEventRequest.Params.Add("is_active", true);
createContactsEventRequest.Params.Add("last_seen", null);
ContactsEvent contactsEvent = await contactsEventsResource.Create(createContactsEventRequest);
var createContactEventRequest = new CreateContactEventRequest("MyFirstContactsEvent");
createContactEventRequest.Params.Add("user_id", 101);
createContactEventRequest.Params.Add("user_name", "John Smith");
createContactEventRequest.Params.Add("is_active", true);
createContactEventRequest.Params.Add("last_seen", null);
ContactEvent contactEvent = await contactEventsResource.Create(createContactEventRequest);

logger.LogInformation("Contacts Event created: {Name}", contactsEvent.Name);
logger.LogInformation("ID: {ContactId}", contactsEvent.ContactId);
logger.LogInformation("Created At: {ContactEmail}", contactsEvent.ContactEmail);
foreach (KeyValuePair<string, object?> param in contactsEvent.Params)
logger.LogInformation("Contacts Event created: {Name}", contactEvent.Name);
logger.LogInformation("ID: {ContactId}", contactEvent.ContactId);
logger.LogInformation("Created At: {ContactEmail}", contactEvent.ContactEmail);
foreach (KeyValuePair<string, object?> param in contactEvent.Params)
{
logger.LogInformation("Param: {ParamKey} = {ParamValue}", param.Key, param.Value);
}
Expand Down
44 changes: 22 additions & 22 deletions examples/Mailtrap.Example.ContactFields/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,42 +30,42 @@
IContactCollectionResource contactsResource = accountResource.Contacts();

// Get resource for contact fields collection
IContactsFieldCollectionResource contactsFieldsResource = contactsResource.Fields();
IContactFieldCollectionResource contactFieldsResource = contactsResource.Fields();

// Get all contacts fields for account
IList<ContactsField> contactsFields = await contactsFieldsResource.GetAll();
// Get all contact fields for account
IList<ContactField> contactFields = await contactFieldsResource.GetAll();

ContactsField? contactsField = contactsFields.Count > 0 ? contactsFields[0] : null;
ContactField? contactField = contactFields.Count > 0 ? contactFields[0] : null;

if (contactsField is null)
if (contactField is null)
{
logger.LogWarning("No contacts field found. Creating.");
logger.LogWarning("No contact field found. Creating.");

// Create contacts field
var createContactsFieldRequest = new CreateContactsFieldRequest("MyFirstContactsField", "TestMergeTag", ContactsFieldDataType.Text);
contactsField = await contactsFieldsResource.Create(createContactsFieldRequest);
// Create contact field
var createContactFieldRequest = new CreateContactFieldRequest("MyFirstContactField", "TestMergeTag", ContactFieldDataType.Text);
contactField = await contactFieldsResource.Create(createContactFieldRequest);
}
else
{
logger.LogInformation("Contacts Field {Name} found.", contactsField.Name);
logger.LogInformation("Contact Field {Name} found.", contactField.Name);
}

// Get resource for specific contacts field
IContactsFieldResource contactsFieldResource = contactsResource.Field(contactsField.Id);
// Get resource for specific contact field
IContactFieldResource contactFieldResource = contactsResource.Field(contactField.Id);

// Get details
ContactsField contactsFieldDetails = await contactsFieldResource.GetDetails();
logger.LogInformation("Contacts Field from resource: {Name}", contactsFieldDetails.Name);
ContactField contactFieldDetails = await contactFieldResource.GetDetails();
logger.LogInformation("Contact Field from resource: {Name}", contactFieldDetails.Name);

// Update contacts field details
var updateContactsFieldRequest = new UpdateContactsFieldRequest("UpdatedContactsField", "UpdatedMergeTag");
ContactsField updateContactsFieldResponse = await contactsFieldResource.Update(updateContactsFieldRequest);
logger.LogInformation("Updated Contacts Field: Name={Name}, Id={Id}", updateContactsFieldResponse.Name, updateContactsFieldResponse.Id);

// Delete contacts Field
// Beware that contacts Field resource becomes invalid after deletion and should not be used anymore
await contactsFieldResource.Delete();
logger.LogInformation("Contacts Field Deleted.");
var updateContactFieldRequest = new UpdateContactFieldRequest("UpdatedContactField", "UpdatedMergeTag");
ContactField updateContactFieldResponse = await contactFieldResource.Update(updateContactFieldRequest);
logger.LogInformation("Updated Contact Field: Name={Name}, Id={Id}", updateContactFieldResponse.Name, updateContactFieldResponse.Id);

// Delete contact Field
// Beware that contact Field resource becomes invalid after deletion and should not be used anymore
await contactFieldResource.Delete();
logger.LogInformation("Contact Field Deleted.");
}
catch (Exception ex)
{
Expand Down
26 changes: 15 additions & 11 deletions examples/Mailtrap.Example.ContactImports/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
// Get resource for contacts collection
IContactCollectionResource contactsResource = accountResource.Contacts();

//Get resource for contact imports collection
IContactsImportCollectionResource contactsImportsResource = contactsResource.Imports();
//Get resource for contact import collection
IContactImportCollectionResource contactImportsResource = contactsResource.Imports();

// Prepare list of contacts to import
var contactImportList = new List<ContactImportRequest>
Expand All @@ -42,21 +42,25 @@
new("[email protected]"),
};

// Create contacts import request
var importRequest = new ContactsImportRequest(contactImportList);
// Create contact import request
var importRequest = new CreateContactImportRequest(contactImportList);

// Import contacts in bulk
ContactsImport importResponse = await contactsImportsResource.Create(importRequest);
logger.LogInformation("Created contact import: {Import}", importResponse);
ContactImport importResponse = await contactImportsResource.Create(importRequest);
logger.LogInformation("Created contact import, Id: {ImportId}", importResponse.Id);

// Get resource for specific contact import
IContactsImportResource contactsImportResource = contactsResource.Import(importResponse.Id);
IContactImportResource contactImportResource = contactsResource.Import(importResponse.Id);

// Get details of specific contact import
ContactsImport contactsImportDetails = await contactsImportResource.GetDetails();
logger.LogInformation("Contacts Import Details: {Details}", contactsImportDetails);

if (contactsImportDetails.Status == ContactsImportStatus.Failed)
ContactImport contactImportDetails = await contactImportResource.GetDetails();
logger.LogInformation("Contact Import Details: {Id}", contactImportDetails.Id);
logger.LogInformation("Contact Import Details: {Status}", contactImportDetails.Status);
logger.LogInformation("Contact Import Details: {CreatedContactsCount}", contactImportDetails.CreatedContactsCount);
logger.LogInformation("Contact Import Details: {UpdatedContactsCount}", contactImportDetails.UpdatedContactsCount);
logger.LogInformation("Contact Import Details: {ContactsOverLimitCount}", contactImportDetails.ContactsOverLimitCount);

if (contactImportDetails.Status == ContactImportStatus.Failed)
{
logger.LogWarning("Import failed!");
}
Expand Down
49 changes: 25 additions & 24 deletions examples/Mailtrap.Example.ContactLists/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,43 +29,44 @@
// Get resource for contacts collection
IContactCollectionResource contactsResource = accountResource.Contacts();

// Get resource for contacts list collection
IContactsListCollectionResource contactsListsResource = contactsResource.Lists();
// Get resource for contact lists collection
IContactListCollectionResource contactListsResource = contactsResource.Lists();

// Get all contacts lists for account
IList<ContactsList> contactsLists = await contactsListsResource.GetAll();
// Get all contact lists for account
IList<ContactList> contactLists = await contactListsResource.GetAll();

ContactsList? contactsList = contactsLists.Count > 0 ? contactsLists[0] : null;
ContactList? contactList = contactLists.Count > 0 ? contactLists[0] : null;

if (contactsList is null)
if (contactList is null)
{
logger.LogWarning("No contacts list found. Creating.");

// Create contacts list
var createContactsListRequest = new ContactsListRequest("MyFirstContactsList");
contactsList = await contactsListsResource.Create(createContactsListRequest);
// Create contact list
var createContactsListRequest = new ContactListRequest("MyFirstContactList");
contactList = await contactListsResource.Create(createContactsListRequest);
}
else
{
logger.LogInformation("Contacts List {Name} found.", contactsList.Name);
logger.LogInformation("Contact List {Name} found.", contactList.Name);
}

// Get resource for specific contacts list
IContactsListResource contactsListResource = contactsResource.List(contactsList.Id);
// Get resource for specific contact list
IContactListResource contactListResource = contactsResource.List(contactList.Id);

// Get details
ContactsList contactsListResponse = await contactsListResource.GetDetails();
logger.LogInformation("Contacts List from resource: {Name}", contactsListResponse.Name);

// Update contacts list details
var updateContactsListRequest = new ContactsListRequest("updatedContactsList");
ContactsList updateContactsListResponse = await contactsListResource.Update(updateContactsListRequest);
logger.LogInformation("Updated Contacts List: Name={Name}, Id={Id}", updateContactsListResponse.Name, updateContactsListResponse.Id);

// Delete contacts List
// Beware that contacts list resource becomes invalid after deletion and should not be used anymore
await contactsListResource.Delete();
logger.LogInformation("Contacts List Deleted.");
ContactList contactListResponse = await contactListResource.GetDetails();
logger.LogInformation("Contact List Name from resource: {Name}", contactListResponse.Name);
logger.LogInformation("Contact List Id from resource: {Id}", contactListResponse.Id);

// Update contact list details
var updateContactListRequest = new ContactListRequest("updatedContactList");
ContactList updateContactListResponse = await contactListResource.Update(updateContactListRequest);
logger.LogInformation("Updated Contact List: Name={Name}, Id={Id}", updateContactListResponse.Name, updateContactListResponse.Id);

// Delete contact List
// Beware that contact list resource becomes invalid after deletion and should not be used anymore
await contactListResource.Delete();
logger.LogInformation("Contact List Deleted.");
}
catch (Exception ex)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
namespace Mailtrap.ContactEvents;

/// <summary>
/// Represents contact event collection resource.
/// </summary>
public interface IContactEventCollectionResource : IRestResource
{
/// <summary>
/// Creates a new contact event with details specified by <paramref name="request"/>.
/// </summary>
///
/// <param name="request">
/// Request containing contact event details for creation.
/// </param>
///
/// <param name="cancellationToken">
/// Token to control operation cancellation.
/// </param>
///
/// <returns>
/// Created contact event details.
/// </returns>
public Task<ContactEvent> Create(CreateContactEventRequest request, CancellationToken cancellationToken = default);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
namespace Mailtrap.ContactEvents.Models;

/// <summary>
/// Represents Contacts Event details.
/// Represents Contact Event details.
/// </summary>
public sealed record ContactsEvent
public sealed record ContactEvent
{
/// <summary>
/// Gets Contact identifier.
/// Gets or sets Contact identifier.
/// </summary>
///
/// <value>
Expand All @@ -16,7 +16,7 @@ public sealed record ContactsEvent
public string ContactId { get; set; } = string.Empty;

/// <summary>
/// Gets Contact email.
/// Gets or sets Contact email.
/// </summary>
///
/// <value>
Expand All @@ -26,21 +26,21 @@ public sealed record ContactsEvent
public string ContactEmail { get; set; } = string.Empty;

/// <summary>
/// Gets Contacts Event name.
/// Gets or sets Contact Event name.
/// </summary>
///
/// <value>
/// Contacts Event name.
/// Contact Event name.
/// </value>
[JsonPropertyName("name")]
public string Name { get; set; } = string.Empty;

/// <summary>
/// Gets Contacts event params.
/// Gets Contact event params.
/// </summary>
///
/// <value>
/// Contacts event params.
/// Contact event params.
/// </value>
[JsonPropertyName("params")]
[JsonObjectCreationHandling(JsonObjectCreationHandling.Populate)]
Expand Down
Loading