public static void SaveToItem([NotNull] IntegrationConfigData data, [NotNull] Item destinationIntegrationItem)
        {
            Assert.ArgumentNotNull(data, "data");
            Assert.ArgumentNotNull(destinationIntegrationItem, "destinationIntegrationItem");

            ValidateIntegrationItem(destinationIntegrationItem);

            string encryptionKey = null;

            if (data.Credentials != null)
            {
                encryptionKey = GetEncryptionKey(destinationIntegrationItem);
                if (string.IsNullOrEmpty(encryptionKey))
                {
                    encryptionKey = Convert.ToBase64String(CryptoManager.GenerateKey());
                    SaveEncryptionKey(encryptionKey, destinationIntegrationItem);
                }
            }

            using (new EditContext(destinationIntegrationItem))
            {
                destinationIntegrationItem[FieldIDs.IntegrationConfigData] = data.SerializeToString(encryptionKey);

                new CheckboxField(destinationIntegrationItem.Fields[FieldIDs.ScheduledBlobTransfer])
                {
                    Checked = data.ScheduledBlobTransfer
                };

                new CheckboxField(destinationIntegrationItem.Fields[FieldIDs.BidirectionalLink])
                {
                    Checked = data.BidirectionalLink
                };
            }
        }
예제 #2
0
        public IntegrationConfigData Clone()
        {
            var clone = new IntegrationConfigData(this.Server, this.List, this.TemplateID)
            {
                Web                     = this.Web,
                Folder                  = this.Folder,
                View                    = this.View,
                ItemLimit               = this.ItemLimit,
                ExpirationInterval      = this.ExpirationInterval,
                ScheduledBlobTransfer   = this.ScheduledBlobTransfer,
                BidirectionalLink       = this.BidirectionalLink,
                IsSharepointOnline      = this.IsSharepointOnline,
                ConnectionConfiguration = this.ConnectionConfiguration
            };

            var credentials = this.Credentials as NetworkCredential;

            clone.Credentials = credentials == null ? null : new NetworkCredential(credentials.UserName, credentials.Password, credentials.Domain);

            foreach (FieldMapping fieldMapping in this.FieldMappings)
            {
                clone.FieldMappings.Add(fieldMapping.Clone());
            }

            return(clone);
        }
        public static IntegrationConfigData GetFromItem([NotNull] Item sourceIntegrationItem)
        {
            Assert.ArgumentNotNull(sourceIntegrationItem, "sourceIntegrationItem");

            ValidateIntegrationItem(sourceIntegrationItem);

            string xmlData = sourceIntegrationItem.Fields[FieldIDs.IntegrationConfigData].Value;

            if (string.IsNullOrEmpty(xmlData))
            {
                return(null);
            }

            string encryptionKey = GetEncryptionKey(sourceIntegrationItem);

            var data = new IntegrationConfigData(xmlData, encryptionKey)
            {
                ScheduledBlobTransfer = new CheckboxField(sourceIntegrationItem.Fields[FieldIDs.ScheduledBlobTransfer]).Checked,
                BidirectionalLink     = new CheckboxField(sourceIntegrationItem.Fields[FieldIDs.BidirectionalLink]).Checked
            };

            return(data);
        }