SharePoint API测试系列——Manage SharePoint Site Policy & Expiration Email with CSOM API

简介: 转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对CSOM(Not SSOM) Site Policy & Expiration Email的API的调用过程进行封装,做成tool,界面如下: 代码如下: using System; using System.

转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/

对CSOM(Not SSOM) Site Policy & Expiration Email的API的调用过程进行封装,做成tool,界面如下:

代码如下:

using System;
using System.Windows.Forms;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.InformationPolicy;

namespace CSOMForm
{
    public partial class MainForm : System.Windows.Forms.Form
    {
        public MainForm()
        {
            InitializeComponent();        
        }

        private void start_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                //Get all the site policies and add them into the combox.
                var projectPolicies = GetAllSitePolicies(context, web);
                try
                {
                    sitePolicies_comboBox.Items.Clear();
                    foreach (ProjectPolicy projectPolicy in projectPolicies)
                    {
                        sitePolicies_comboBox.Items.Add(projectPolicy.Name);
                    }
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.AppendText(ex.ToString() + System.Environment.NewLine);
                }
            }
        }

        //Get all site policies from the server.
        private ClientObjectList<ProjectPolicy> GetAllSitePolicies(ClientContext context, Web web)
        {
            //API test GetProjectPolicies.
            var projectPolicies = ProjectPolicy.GetProjectPolicies(context, web);
            context.Load(projectPolicies);
            context.ExecuteQuery();
            return projectPolicies;
        }

        //The method to get the current applied site policy from the server.
        private ProjectPolicy GetCurrentAppliedSitePolicy(ClientContext context, Web web)
        {
            //API test GetCurrentlyAppliedProjectPolicyOnWeb.
            ProjectPolicy policy = ProjectPolicy.GetCurrentlyAppliedProjectPolicyOnWeb(context, web);
            context.Load(policy,
                            p => p.Name,
                            p => p.Description,
                            p => p.EmailSubject,
                            p => p.EmailBody,
                            p => p.EmailBodyWithTeamMailbox);
            context.ExecuteQuery();
            return policy;
        }


        //Apply the policy selected to the site.
        private void ApplyProjectPolicy_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    //API test ApplyProjectPolicy.
                    ProjectPolicy.ApplyProjectPolicy(context, web, selectedPolicy);
                    returnDisplay_richTextBox.Text = "The policy we selected has been applied to the site. The current policy applied is:" + System.Environment.NewLine;
                    //API test GetCurrentAppliedSitePolicy.
                    ProjectPolicy AppliedPolicy = GetCurrentAppliedSitePolicy(context, web);
                    context.Load(AppliedPolicy);
                    context.ExecuteQuery();
                    //API test Name.
                    returnDisplay_richTextBox.AppendText(AppliedPolicy.Name.ToString() + System.Environment.NewLine);
                    //API test Description.
                    returnDisplay_richTextBox.AppendText(AppliedPolicy.Description.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = "You may not have a project policy yet. Please check it." + System.Environment.NewLine;
                    returnDisplay_richTextBox.AppendText(ex.ToString());
                }
            }
        }

        /*
            Close the site.
            The site must have a policy applied and the site is open.
        */
        private void closeProject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                //Close the site.
                try
                {
                    //API test CloseProject.
                    ProjectPolicy.CloseProject(context, web);
                    //API test IsProjectClosed.
                    returnDisplay_richTextBox.Text = "The site's project is now closed: ";
                    var ifClosed = ProjectPolicy.IsProjectClosed(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(ifClosed.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void doesProjectHavePolicy_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test DoesProjectHavePolicy.
                    ClientResult<bool> result = ProjectPolicy.DoesProjectHavePolicy(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "DoesProjectHavePolicy: ";
                    returnDisplay_richTextBox.AppendText(result.Value.ToString());
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void openProject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                //Open the site.
                try
                {
                    //API test OpenProject.
                    ProjectPolicy.OpenProject(context, web);
                    //API test IsProjectClosed.
                    returnDisplay_richTextBox.Text = "The site's project is now closed: ";
                    var ifOpen = ProjectPolicy.IsProjectClosed(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(ifOpen.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void getProjectCloseDate_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test GetProjectCloseDate.
                    returnDisplay_richTextBox.Text = "The project's close date is: ";
                    var projectCloseDate = ProjectPolicy.GetProjectCloseDate(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(projectCloseDate.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void getProjectExpirationDate_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test GetProjectExpirationDate.
                    returnDisplay_richTextBox.Text = "The project's expiration date is: ";
                    var projectExpireDate = ProjectPolicy.GetProjectExpirationDate(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.AppendText(projectExpireDate.Value.ToString() + System.Environment.NewLine);
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        private void postponeProject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test PostponeProject.
                    ProjectPolicy.PostponeProject(context, web);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The project has been postponed.";  
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        /*
            You should select a policy first.
        */
        private void setEmailSubject_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test set EmailSubject.
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    selectedPolicy.EmailSubject = emailSubject_textBox.Text;
                    selectedPolicy.SavePolicy();
                    context.ExecuteQuery();
                    context.Load(selectedPolicy,p => p.EmailSubject);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The selected project's EmailSubject is now: " + selectedPolicy.EmailSubject.ToString();
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        /*
            You should select a policy first.
        */
        private void setEmailBody_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test set EmailBody.
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    selectedPolicy.EmailBody = emailBody_richTextBox.Text;
                    selectedPolicy.SavePolicy();
                    context.ExecuteQuery();
                    context.Load(selectedPolicy, p => p.EmailBody);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The selected project's EmailBody is now: " + selectedPolicy.EmailBody.ToString();
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }

        /*
            You should select a policy first.
        */
        private void setEmailBodyWithTeamMailbox_button_Click(object sender, EventArgs e)
        {
            using (ClientContext context = new ClientContext(scUrl_textBox.Text))
            {
                Site site = context.Site;
                Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
                try
                {
                    //API test set EmailBodyWithTeamMailbox.
                    var policies = GetAllSitePolicies(context, web);
                    ProjectPolicy selectedPolicy = null;
                    foreach (ProjectPolicy policy in policies)
                    {
                        if (policy.Name == sitePolicies_comboBox.Text)
                        {
                            selectedPolicy = policy;
                        }
                    }
                    selectedPolicy.EmailBodyWithTeamMailbox = emailBodyWithTeamMailbox_richTextBox.Text;
                    selectedPolicy.SavePolicy();
                    context.ExecuteQuery();
                    context.Load(selectedPolicy, p => p.EmailBodyWithTeamMailbox);
                    context.ExecuteQuery();
                    returnDisplay_richTextBox.Text = "The selected project's EmailBodyWithTeamMailbox is now: " + selectedPolicy.EmailBodyWithTeamMailbox.ToString();
                }
                catch (Exception ex)
                {
                    returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
                }
            }
        }
    }
}

 

相关文章
|
3月前
|
JSON API 开发工具
如何使用Postman 设计和测试一个API?
如何使用Postman 设计和测试一个API?
如何使用Postman 设计和测试一个API?
|
1月前
|
安全 测试技术 API
|
1月前
|
JSON 测试技术 API
Postman Newman 实现 API 自动化测试的快速指南
Newman 是一款专为 Postman 打造的命令行工具,旨在通过自动运行 Postman 集合和环境,实现 API 测试的自动化。它使得开发者无需打开 Postman 图形界面,即可直接在命令行中执行测试用例。
|
1月前
|
缓存 负载均衡 Java
Python实现API接口并发测试
Python实现API接口并发测试
57 0
|
1月前
|
架构师 前端开发 测试技术
|
2月前
|
JSON JavaScript 前端开发
提升 API 测试效率:Postman Tests 详解
Postman 不仅是一个强大的 API 开发工具,它还提供了创建自动化测试脚本的能力,这些脚本可以用于检验API请求得到的响应是否符合预期。这些测试脚本被称为 “Tests”,支持使用 JavaScript 编程语言进行编写,并且 Postman 提供了一系列的断言库来帮助你检查包括但不限于状态码、响应内容以及响应时间在内的响应数据。
|
2月前
|
开发框架 JSON .NET
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
76 0
|
2月前
|
JSON 测试技术 API
一个数据驱动的API测试框架
一个数据驱动的API测试框架
|
2月前
|
安全 API 网络架构
API测试中常用测试协议
API测试中常用测试协议
|
3月前
|
数据挖掘 测试技术 API
数据驱动API测试
数据驱动API测试

热门文章

最新文章