public static async Task <MailFolder> EnsureFolder(this IUserRequestBuilder userRequestBuilder, string parentFolderId, string folderName)
        {
            if (userRequestBuilder is null)
            {
                throw new ArgumentNullException(nameof(userRequestBuilder));
            }

            var invalidMessagesFolderResults = await userRequestBuilder
                                               .MailFolders[parentFolderId]
                                               .ChildFolders
                                               .Request()
                                               .Filter($"displayName eq '{folderName}'")
                                               .GetAsync();

            if (invalidMessagesFolderResults.CurrentPage.Count > 0)
            {
                return(invalidMessagesFolderResults[0]);
            }
            else
            {
                var newFolder = await userRequestBuilder
                                .MailFolders[parentFolderId]
                                .ChildFolders
                                .Request()
                                .AddAsync(new MailFolder()
                {
                    DisplayName = folderName
                });

                return(newFolder);
            }
        }
 /// <summary>
 /// Set UsageLocation field. It's required when adding maibox rule.
 /// </summary>
 /// <param name="user">Current instance of user</param>
 private void UpdateUser(IUserRequestBuilder user)
 {
     user.Request().UpdateAsync(new User
     {
         UsageLocation = "US"
     }).Wait();
 }
Esempio n. 3
0
        public async Task <User> FindUserByUpn(string upn, CancellationToken token)
        {
            //string request = client.BaseUrl + $"/users/{upn}";
            IUserRequestBuilder urb = client.Users[upn]; //new UserRequestBuilder(request, client);

            try
            {
                User user = await urb.Request().GetAsync(token);

                return(user);
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 4
0
        public async Task <User> FindUserById(string id, CancellationToken token)
        {
            IUserRequestBuilder urb = client.Users[id];

            try
            {
                User user = await urb.Request().GetAsync(token);

                return(user);
            }
            catch (Exception)
            {
                // expected if we are expanding a group and looking for users but this is a group
            }

            return(default(User));
        }
Esempio n. 5
0
        public async Task <Message> Send(Message mail, string mailboxOrUserId = null, string scope = "profile")
        {
            // use scopes: mail.send, mail.readwrite.shared
            GraphServiceClient client = await tokenService.GetClientForUser(new string[] { scope });

            IUserRequestBuilder userRequestBuilder = string.IsNullOrWhiteSpace(mailboxOrUserId)
                ? client.Me
                : client.Users[mailboxOrUserId];

            Message draft = await userRequestBuilder
                            .MailFolders
                            .Drafts
                            .Messages
                            .Request(new List <HeaderOption>() { new HeaderOption("Prefer", "IdType=\"ImmutableId\"") })
                            .AddAsync(mail);

            await userRequestBuilder.Messages[draft.Id].Send().Request().PostAsync();

            Message msg = await userRequestBuilder.Messages[draft.Id].Request().GetAsync();

            return(msg);
        }
 public static async Task <MailFolder> EnsureFolder(this IUserRequestBuilder userRequestBuilder, MailFolder parentFolder, string folderName) =>
 await EnsureFolder(userRequestBuilder, parentFolder?.Id, folderName);
 public static IUserMailboxSettingsRequestBuilder MailboxSettings(this IUserRequestBuilder builder)
 {
     return(new UserMailboxSettingsRequestBuilder(builder.AppendSegmentToRequestUrl("mailboxSettings"), builder.Client));
 }