API

Materials event Office365 Rest API

Posted on

O365

Hola de nou,

Us deixo els materials de l’event que vàrem fer divendres passat sobre la nove API Rest per accedir a Office365. Val a dir que tot i que li falten un parell de funcionalitats (que vindran en els propers mesos) per fi tenim una alternativa plenament funcional als antics Exchange Web Services (EWS). Amb l’avantatge de que és més molt més rápida (x20 com a mínim).

O365RestApiLogin

És important senyalar que el trick és paginar entre els resultats que ens retorna la API, com varem veure en el projecte d’exemple:

public static async Task<IEnumerable<Contact>> GetContacts()
{
    var cnames = new List<Contact>();
    var page = 0;
    var client = await EnsureClientCreated();
    var contactsResults = await client.Me.Contacts.Where(p => p.DisplayName != null).ExecuteAsync();
    var cl = contactsResults.CurrentPage.ToList();
    cnames.AddRange(addContactsCurrentPageToList(cl));
    while(cl.Count > 0)
    {
        page++;
        contactsResults = await client.Me.Contacts.Where(p => p.DisplayName != null).Skip(50 * page).ExecuteAsync();
        cl = contactsResults.CurrentPage.ToList();
        cnames.AddRange(addContactsCurrentPageToList(cl));
    }
    return cnames;
}

private static List<Contact> addContactsCurrentPageToList(
    List<IContact> contactsResults)
{
    var contacts = new List<Contact>();
    contacts.AddRange(contactsResults.Select(p => new Contact()
    {
        BusinessPhone1 = p.BusinessPhone1,
        CompanyName = p.CompanyName,
        DisplayName = p.DisplayName,
        EmailAddress1 = p.EmailAddress1,
        HomePhone1 = p.HomePhone1,
        JobTitle = p.JobTitle,
        Manager = p.Manager,
        MobilePhone1 = p.MobilePhone1,
        Title = p.Title
    }));
    return contacts;
}

O365RestAPiContracts

Aquí teniu el projecte publicat al meu Onedrive.

Enjoy! 🙂

Anuncis