コード例 #1
0
        public static EventReceiverDefinition RegisterEventReceiver(List list, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, bool force, ClientContext clientContext)
        {
            clientContext.Load(list.EventReceivers);

            clientContext.ExecuteQuery();

            bool receiverExists = false;
            foreach (var receiver in list.EventReceivers)
            {
                if (receiver.ReceiverName == name)
                {
                    receiverExists = true;
                    if (force)
                    {
                        receiver.DeleteObject();
                        clientContext.ExecuteQuery();
                        receiverExists = false;
                    }
                }
            }
            EventReceiverDefinition def = null;
            if (!receiverExists)
            {
                EventReceiverDefinitionCreationInformation receiver = new EventReceiverDefinitionCreationInformation();
                receiver.EventType = eventReceiverType;
                receiver.ReceiverUrl = url;
                receiver.ReceiverName = name;
                receiver.Synchronization = synchronization;
                def = list.EventReceivers.Add(receiver);
                clientContext.Load(def);
                clientContext.ExecuteQuery();
            }
            return def;
        }
コード例 #2
0
        /// <summary>
        /// Registers a remote event receiver
        /// </summary>
        /// <param name="web">The web to process</param>
        /// <param name="name">The name of the event receiver (needs to be unique among the event receivers registered on this list)</param>
        /// <param name="url">The URL of the remote WCF service that handles the event</param>
        /// <param name="eventReceiverType"></param>
        /// <param name="synchronization"></param>
        /// <param name="sequenceNumber"></param>
        /// <param name="force">If True any event already registered with the same name will be removed first.</param>
        /// <returns>Returns an EventReceiverDefinition if succeeded. Returns null if failed.</returns>
        public static EventReceiverDefinition AddRemoteEventReceiver(this Web web, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, int sequenceNumber, bool force)
        {
            var query = from receiver
                   in web.EventReceivers
                        where receiver.ReceiverName == name
                        select receiver;
            var receivers = web.Context.LoadQuery(query);
            web.Context.ExecuteQueryRetry();

            var receiverExists = receivers.Any();
            if (receiverExists && force)
            {
                var receiver = receivers.FirstOrDefault();
                receiver.DeleteObject();
                web.Context.ExecuteQueryRetry();
                receiverExists = false;
            }
            EventReceiverDefinition def = null;

            if (!receiverExists)
            {
                EventReceiverDefinitionCreationInformation receiver = new EventReceiverDefinitionCreationInformation();
                receiver.EventType = eventReceiverType;
                receiver.ReceiverUrl = url;
                receiver.ReceiverName = name;
                receiver.SequenceNumber = sequenceNumber;
                receiver.Synchronization = synchronization;
                def = web.EventReceivers.Add(receiver);
                web.Context.Load(def);
                web.Context.ExecuteQueryRetry();
            }
            return def;
        }
        protected override bool InitOnePropertyFromJson(string peekedName, JsonReader reader)
        {
            bool flag = base.InitOnePropertyFromJson(peekedName, reader);

            if (flag)
            {
                return(flag);
            }
            switch (peekedName)
            {
            case "ReceiverAssembly":
                flag = true;
                reader.ReadName();
                this.m_receiverAssembly = reader.ReadString();
                break;

            case "ReceiverClass":
                flag = true;
                reader.ReadName();
                this.m_receiverClass = reader.ReadString();
                break;

            case "ReceiverName":
                flag = true;
                reader.ReadName();
                this.m_receiverName = reader.ReadString();
                break;

            case "SequenceNumber":
                flag = true;
                reader.ReadName();
                this.m_sequenceNumber = reader.ReadInt32();
                break;

            case "Synchronization":
                flag = true;
                reader.ReadName();
                this.m_synchronization = reader.ReadEnum <EventReceiverSynchronization>();
                break;

            case "EventType":
                flag = true;
                reader.ReadName();
                this.m_eventType = reader.ReadEnum <EventReceiverType>();
                break;

            case "ReceiverUrl":
                flag = true;
                reader.ReadName();
                this.m_receiverUrl = reader.ReadString();
                break;
            }
            return(flag);
        }
コード例 #4
0
ファイル: ReceiverHelper.cs プロジェクト: NicolajLarsen/PnP
        /// <summary>
        /// Creates a Remote Event Receiver
        /// </summary>
        /// <param name="receiverName">The name of the remote event receiver</param>
        /// <param name="type"><see cref="Microsoft.SharePoint.Client.EventReceiverType"/></param>
        /// <returns><see cref="Microsoft.SharePoint.Client.EventReceiverDefinitionRemoCreationInformation"/></returns>
        public static EventReceiverDefinitionCreationInformation CreateEventReciever(string receiverName, EventReceiverType type)
        {

            EventReceiverDefinitionCreationInformation _rer = new EventReceiverDefinitionCreationInformation();
            _rer.EventType = type;
            _rer.ReceiverName = receiverName;
            _rer.ReceiverClass = "ECM.AutoTaggingWeb.Services.AutoTaggingService";
            _rer.ReceiverUrl = "https://amsecm.azurewebsites.net/Services/AutoTaggingService.svc";
            _rer.Synchronization = EventReceiverSynchronization.Synchronous;
            return _rer;
        }
コード例 #5
0
        /// <summary>
        /// Register the remote event receiver
        /// </summary>
        /// <param name="clientContext"></param>
        /// <param name="list"></param>
        /// <param name="name"></param>
        /// <param name="serviceUrl"></param>
        /// <param name="eventType"></param>
        /// <param name="sequence"></param>
        private void RegisterEventReceiver(ClientContext clientContext, List list, string name, string serviceUrl, EventReceiverType eventType, int sequence)
        {
            EventReceiverDefinitionCreationInformation newEventReceiver = new EventReceiverDefinitionCreationInformation()
            {
                EventType = eventType,
                ReceiverName = name,
                ReceiverUrl = serviceUrl,
                SequenceNumber = sequence
            };

            list.EventReceivers.Add(newEventReceiver);
            clientContext.ExecuteQuery();
        }
コード例 #6
0
 private static void AddEventReceiverToList(ClientContext clientContext, string listTitle, EventReceiverType eventType)
 {
     var list = clientContext.Web.Lists.GetByTitle(listTitle);
     var requestProperty = (HttpRequestMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name];
     var appWebUrl = "https://" + requestProperty.Headers[HttpRequestHeader.Host];
     var receiverName = listTitle + "_" + eventType.ToString();
     var eventReceiver = new EventReceiverDefinitionCreationInformation();
     eventReceiver.EventType = eventType;
     eventReceiver.ReceiverName = receiverName;
     eventReceiver.ReceiverClass = receiverName;
     eventReceiver.ReceiverUrl = appWebUrl + "/Services/" + receiverName + ".svc";
     eventReceiver.SequenceNumber = 10000;
     list.EventReceivers.Add(eventReceiver);
     clientContext.ExecuteQuery();
     TraceHelper.RemoteLog("RER attached: " + receiverName);
 }
コード例 #7
0
ファイル: AppHelper.cs プロジェクト: robgarrett/SharePoint
        public static bool IsRemoteEventRegistered(ClientContext clientContext, EventReceiverType type)
        {
            var result = false;

            if (null == clientContext)
            {
                throw new ArgumentNullException("clientContext");
            }
            try
            {
                // Get the list
                Logger.Logger.LogInfo("Checking if remote events registered", () =>
                {
                    var listName = GetProperty(clientContext, Constants.LISTNAME_PROPERTY) as string;
                    if (String.IsNullOrEmpty(listName))
                    {
                        return;
                    }
                    var srcList = clientContext.Web.Lists.GetByTitle(listName);
                    clientContext.Load(clientContext.Web);
                    clientContext.ExecuteQuery();
                    // Iterate all event receivers.
                    clientContext.Load(srcList.EventReceivers);
                    clientContext.ExecuteQuery();
                    // ReSharper disable once LoopCanBeConvertedToQuery
                    foreach (var er in srcList.EventReceivers)
                    {
                        if (er.ReceiverName == Constants.LISTEVTRCVR_NAME && er.EventType == type)
                        {
                            result = true;
                            break;
                        }
                    }
                });
                return(result);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                Logger.Logger.LogError(ex.ToString());
            }
            return(false);
        }
コード例 #8
0
ファイル: RERUtility.cs プロジェクト: stebra-consulting/Peter
  public static void AddListItemRemoteEventReceiver(ClientContext context, string listName, EventReceiverType eventType,
 EventReceiverSynchronization synchronization, string receiverName,
 string receiverUrl, int sequence, string receiverAssemblyName = "", string receiverClassName = "")
  {
      var list = context.Web.Lists.GetByTitle(listName);
      context.Load(list);
      var eventReceivers = list.EventReceivers;
      context.Load(eventReceivers);
      context.ExecuteQuery();
      var newRER = new EventReceiverDefinitionCreationInformation();
      newRER.EventType = eventType;
      newRER.ReceiverName = receiverName;
      newRER.ReceiverClass = receiverClassName;
      newRER.ReceiverAssembly = receiverAssemblyName;
      newRER.ReceiverUrl = receiverUrl;
      newRER.Synchronization = synchronization;
      newRER.SequenceNumber = sequence;
      list.EventReceivers.Add(newRER);
      list.Update();
      context.ExecuteQuery();
  }
コード例 #9
0
 public void Bind(ClientContext clientContext,
                  string listName,
                  string eventRecieverName,
                  string remoteUrl,
                  int sequencyId,
                  EventReceiverType eventType)
 {
     try
     {
         List olist = clientContext.Web.Lists.GetByTitle(listName);
         clientContext.Load(olist, o => o.EventReceivers);
         clientContext.ExecuteQuery();
         bool isReRExsist = false;
         foreach (var receiver in olist.EventReceivers)
         {
             if (receiver.ReceiverName == eventRecieverName)
             {
                 isReRExsist = true;
                 break;
             }
         }
         if (!isReRExsist)
         {
             EventReceiverDefinitionCreationInformation eventReDefCreation = new EventReceiverDefinitionCreationInformation()
             {
                 EventType        = eventType,
                 ReceiverAssembly = Assembly.GetExecutingAssembly().FullName,
                 ReceiverName     = eventRecieverName,
                 ReceiverClass    = eventRecieverName,
                 ReceiverUrl      = remoteUrl,
                 SequenceNumber   = sequencyId
             };
             olist.EventReceivers.Add(eventReDefCreation);
             clientContext.ExecuteQuery();
         }
     }
     catch (Exception ex)
     {
     }
 }
コード例 #10
0
        public SPOEventReceiverDefinition AddEventReceiver(
            EventReceiverType eventType,
            string receiverAssembly,
            string receiverClass,
            string receiverName,
            string receiverUrl,
            int sequenceNumber,
            EventReceiverSynchronization synchronization)
        {
            EventReceiverDefinitionCreationInformation erdci = new EventReceiverDefinitionCreationInformation
            {
                EventType        = eventType,
                ReceiverAssembly = receiverAssembly,
                ReceiverClass    = receiverClass,
                ReceiverName     = receiverName,
                ReceiverUrl      = receiverUrl,
                SequenceNumber   = sequenceNumber,
                Synchronization  = synchronization
            };

            return(AddEventReceiver(erdci));
        }
コード例 #11
0
ファイル: AppHelper.cs プロジェクト: robgarrett/SharePoint
        public static bool IsRemoteEventRegistered(ClientContext clientContext, EventReceiverType type)
        {
            var result = false;

            if (null == clientContext)
            {
                throw new ArgumentNullException("clientContext");
            }
            try
            {
                // Get the list
                Logger.Logger.LogInfo("Checking if remote events registered", () =>
                {
                    var srcList = clientContext.Web.Lists.GetByTitle(LISTNAME);
                    clientContext.Load(clientContext.Web);
                    clientContext.ExecuteQuery();
                    // Iterate all event receivers.
                    clientContext.Load(srcList.EventReceivers);
                    clientContext.ExecuteQuery();
                    foreach (var er in srcList.EventReceivers)
                    {
                        if (0 == string.Compare(er.ReceiverName, RERNAME, true, CultureInfo.CurrentCulture) && er.EventType == type)
                        {
                            result = true;
                            break;
                        }
                    }
                });
                return(result);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                Logger.Logger.LogError(ex.ToString());
            }
            return(false);
        }
コード例 #12
0
        public static EventReceiverDefinitionCreationInformation CreateEventReciever(string receiverName, EventReceiverType type)
        {
            EventReceiverDefinitionCreationInformation _rer = new EventReceiverDefinitionCreationInformation();

            _rer.EventType       = type;
            _rer.ReceiverName    = receiverName;
            _rer.ReceiverClass   = "ECM.AutoTaggingWeb.Services.AutoTaggingService";
            _rer.ReceiverUrl     = "https://localhost:44382/Services/AppEventReceiver.svc";
            _rer.Synchronization = EventReceiverSynchronization.Synchronous;
            return(_rer);
        }
コード例 #13
0
 /// <summary>
 /// Registers a remote event receiver
 /// </summary>
 /// <param name="site">The site collection to process</param>
 /// <param name="name">The name of the event receiver (needs to be unique among the event receivers registered on this site)</param>
 /// <param name="url">The URL of the remote WCF service that handles the event</param>
 /// <param name="eventReceiverType"></param>
 /// <param name="synchronization"></param>
 /// <param name="force">If True any event already registered with the same name will be removed first.</param>
 /// <returns>Returns an EventReceiverDefinition if succeeded. Returns null if failed.</returns>
 public static EventReceiverDefinition AddRemoteEventReceiver(this Site site, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, bool force)
 {
     return(site.AddRemoteEventReceiver(name, url, eventReceiverType, synchronization, 1000, force));
 }
コード例 #14
0
        private void AttachEventHandler(string handlerEndpoint, Web web, string name, EventReceiverType receiverType,
                                        ClientContext clientContext)
        {
            clientContext.Load(web, w => w.EventReceivers.Include(e => e.ReceiverName));
            clientContext.ExecuteQueryRetry();

            var handlersToDelete = new List <EventReceiverDefinition>();

            foreach (var eventReciever in web.EventReceivers)
            {
                if (eventReciever.ReceiverName == name)
                {
                    handlersToDelete.Add(eventReciever);
                }
            }
            if (handlersToDelete.Count > 0)
            {
                foreach (var eventReceiverDefinition in handlersToDelete)
                {
                    eventReceiverDefinition.DeleteObject();
                }
                clientContext.ExecuteQueryRetry();
            }

            var eventReceiver = new EventReceiverDefinitionCreationInformation
            {
                EventType       = receiverType,
                ReceiverName    = name,
                ReceiverUrl     = handlerEndpoint,
                SequenceNumber  = 10000,
                Synchronization = EventReceiverSynchronization.DefaultSynchronization
            };

            web.EventReceivers.Add(eventReceiver);
            OnNotify(ProvisioningNotificationLevels.Verbose, "Attaching remote event handler to web | " + name);
        }
コード例 #15
0
 private static EventReceiverDefinitionCreationInformation CreateECMRecordEventReceiverDefinition(EventReceiverType eventType, int sequenceNumber, int sharePointVersion)
 {
     return new EventReceiverDefinitionCreationInformation()
     {
         EventType = eventType,
         ReceiverAssembly = String.Format("Microsoft.Office.Policy, Version={0}.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c", sharePointVersion),
         ReceiverClass = "Microsoft.Office.RecordsManagement.Internal.HoldEventReceiver",
         ReceiverName = "ECM_RecordEventReceiver",
         ReceiverUrl = "",
         SequenceNumber = sequenceNumber,
         Synchronization = EventReceiverSynchronization.Synchronous
     };
 }
コード例 #16
0
 public static EventReceiverDefinition RegisterRemoteEventReceiver(this Web web, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, bool force)
 {
     return(web.AddRemoteEventReceiver(name, url, eventReceiverType, synchronization, force));
 }
コード例 #17
0
ファイル: AppEventReceiver.svc.cs プロジェクト: arzumy/sdk
        private static void AddEventReceiverToList(ClientContext clientContext, string listTitle, EventReceiverType eventType)
        {
            var list            = clientContext.Web.Lists.GetByTitle(listTitle);
            var requestProperty = (HttpRequestMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpRequestMessageProperty.Name];
            var appWebUrl       = "https://" + requestProperty.Headers[HttpRequestHeader.Host];
            var receiverName    = listTitle + "_" + eventType.ToString();
            var eventReceiver   = new EventReceiverDefinitionCreationInformation();

            eventReceiver.EventType      = eventType;
            eventReceiver.ReceiverName   = receiverName;
            eventReceiver.ReceiverClass  = receiverName;
            eventReceiver.ReceiverUrl    = appWebUrl + "/Services/" + receiverName + ".svc";
            eventReceiver.SequenceNumber = 10000;
            list.EventReceivers.Add(eventReceiver);
            clientContext.ExecuteQuery();
            TraceHelper.RemoteLog("RER attached: " + receiverName);
        }
コード例 #18
0
 public SPOEventReceiverDefinition AddEventReceiver(
     EventReceiverType eventType,
     string receiverAssembly,
     string receiverClass,
     string receiverName,
     string receiverUrl,
     int sequenceNumber,
     EventReceiverSynchronization synchronization)
 {
     EventReceiverDefinitionCreationInformation erdci = new EventReceiverDefinitionCreationInformation
     {
         EventType = eventType,
         ReceiverAssembly = receiverAssembly,
         ReceiverClass = receiverClass,
         ReceiverName = receiverName,
         ReceiverUrl = receiverUrl,
         SequenceNumber = sequenceNumber,
         Synchronization = synchronization
     };
     return AddEventReceiver(erdci);
 }
コード例 #19
0
 public static EventReceiverDefinition RegisterRemoteEventReceiver(this List list, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, bool force)
 {
     return list.AddRemoteEventReceiver(name, url, eventReceiverType, synchronization, force);
 }
コード例 #20
0
 private static EventReceiverDefinitionCreationInformation CreateECMRecordEventReceiverDefinition(EventReceiverType eventType, int sequenceNumber, int sharePointVersion)
 {
     return(new EventReceiverDefinitionCreationInformation()
     {
         EventType = eventType,
         ReceiverAssembly =
             $"Microsoft.Office.Policy, Version={sharePointVersion}.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c",
         ReceiverClass = "Microsoft.Office.RecordsManagement.Internal.HoldEventReceiver",
         ReceiverName = "ECM_RecordEventReceiver",
         ReceiverUrl = "",
         SequenceNumber = sequenceNumber,
         Synchronization = EventReceiverSynchronization.Synchronous
     });
 }
コード例 #21
0
 /// <summary>
 /// Registers a remote event receiver
 /// </summary>
 /// <param name="web">The web to process</param>
 /// <param name="name">The name of the event receiver (needs to be unique among the event receivers registered on this list)</param>
 /// <param name="url">The URL of the remote WCF service that handles the event</param>
 /// <param name="eventReceiverType"></param>
 /// <param name="synchronization"></param>
 /// <param name="force">If True any event already registered with the same name will be removed first.</param>
 /// <returns>Returns an EventReceiverDefinition if succeeded. Returns null if failed.</returns>
 public static EventReceiverDefinition AddRemoteEventReceiver(this Web web, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, bool force)
 {
     return web.AddRemoteEventReceiver(name, url, eventReceiverType, synchronization, 1000, force);
 }
コード例 #22
0
ファイル: WebExtensions.cs プロジェクト: Xylon5/API
        /// <summary>
        /// Registers a remote event receiver
        /// </summary>
        /// <param name="web">The web to process</param>
        /// <param name="name">The name of the event receiver (needs to be unique among the event receivers registered on this list)</param>
        /// <param name="url">The URL of the remote WCF service that handles the event</param>
        /// <param name="eventReceiverType"></param>
        /// <param name="synchronization"></param>
        /// <param name="sequenceNumber"></param>
        /// <param name="force">If True any event already registered with the same name will be removed first.</param>
        /// <returns>Returns an EventReceiverDefinition if succeeded. Returns null if failed.</returns>
        public static EventReceiverDefinition AddRemoteEventReceiver(this Web web, string name, string url, EventReceiverType eventReceiverType, EventReceiverSynchronization synchronization, int sequenceNumber, bool force)
        {
            var query = from receiver
                        in web.EventReceivers
                        where receiver.ReceiverName == name
                        select receiver;

            web.Context.LoadQuery(query);
            web.Context.ExecuteQueryRetry();

            var receiverExists = query.Any();

            if (receiverExists && force)
            {
                var receiver = query.FirstOrDefault();
                receiver.DeleteObject();
                web.Context.ExecuteQueryRetry();
                receiverExists = false;
            }
            EventReceiverDefinition def = null;

            if (!receiverExists)
            {
                EventReceiverDefinitionCreationInformation receiver = new EventReceiverDefinitionCreationInformation();
                receiver.EventType       = eventReceiverType;
                receiver.ReceiverUrl     = url;
                receiver.ReceiverName    = name;
                receiver.SequenceNumber  = sequenceNumber;
                receiver.Synchronization = synchronization;
                def = web.EventReceivers.Add(receiver);
                web.Context.Load(def);
                web.Context.ExecuteQueryRetry();
            }
            return(def);
        }
コード例 #23
0
        private void AttachEventHandler(string handlerEndpoint, List list, string name, EventReceiverType receiverType,
                                        ClientContext clientContext)
        {
            clientContext.Load(list, l => l.Title, l => l.EventReceivers.Include(e => e.ReceiverName));
            clientContext.ExecuteQueryRetry();

            foreach (var eventReciever in list.EventReceivers)
            {
                if (eventReciever.ReceiverName == name)
                {
                    return;
                }
            }

            var eventReceiver = new EventReceiverDefinitionCreationInformation
            {
                EventType       = receiverType,
                ReceiverName    = name,
                ReceiverUrl     = handlerEndpoint,
                SequenceNumber  = 10000,
                Synchronization = EventReceiverSynchronization.Asynchronous
            };

            list.EventReceivers.Add(eventReceiver);
            OnNotify(ProvisioningNotificationLevels.Verbose,
                     "Attaching remote event handler to list " + list.Title + " | " + name);
        }