/// <summary>
        /// An item is being deleted
        /// </summary>
        public override void ItemDeleting(SPItemEventProperties properties)
        {
            Logger.WriteLog(Logger.Category.Information, "ItemDeleting", "Started.");
            try
            {
                //get settings from the appropriate list
                SharprSettings settings = GetSharprSettingValues(properties);
                if (properties.List.Title == settings.DocumentListName)
                {
                    SharprSyncService sss = SharprSyncService.Instance;
                    sss.InitSettings(settings.SharprURL, settings.SharprUser, settings.SharprPass, settings.DocumentListName, settings.FileMetadata);

                    SPFile sFile = properties.ListItem.File;

                    sss.RemoveFileFromSharpr(sFile.UniqueId.ToString());

                    Logger.WriteLog(Logger.Category.Information, "ItemDeleting", "Completed.");
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLog(Logger.Category.Unexpected, "ItemDeleting", ex.Message + Environment.NewLine + ex.StackTrace);
            }
            finally
            {
                base.ItemDeleting(properties);
            }
        }
        private void SendFile(SPItemEventProperties properties)
        {
            //get settings from the appropriate list
            SharprSettings settings = GetSharprSettingValues(properties);

            SharprSyncService sss = SharprSyncService.Instance;

            sss.InitSettings(settings.SharprURL, settings.SharprUser, settings.SharprPass, settings.DocumentListName, settings.FileMetadata);

            if (settings.InitialExportDate == null)
            {
                try
                {
                    Logger.WriteLog(Logger.Category.Information, "SendFile", "performing initial export.");
                    SharprInitResults result = sss.InitialListLoad(properties.Web);
                    Logger.WriteLog(Logger.Category.Information, "SendFile", "Initial export complete, writing results.");
                    WriteSharprSettingValue(properties, "Sharpr Service Init Date", DateTime.UtcNow.ToShortDateString());
                    WriteSharprSettingValue(properties, "Sharpr Export Results", Newtonsoft.Json.JsonConvert.SerializeObject(result));
                }
                catch { }
            }
            else
            {
                SPFile sFile = properties.ListItem.File;
                Logger.WriteLog(Logger.Category.Information, "SendFile", "Got file for export : " + sFile.Name);
                //WriteSharprSettingValue(properties, "Currently Processing Files", settings.CurrentlyProcessingFile + "," + sFile.Name);
                this.currentFileList.Add(new SharprTransferRecord {
                    FileName = sFile.Name, TimeStamp = DateTime.UtcNow, Result = "Started"
                });
                string contentType = MimeMapping.GetMimeMapping(sFile.Name);

                byte[]       fileContents = sFile.OpenBinary();
                MemoryStream mStream      = new MemoryStream();
                mStream.Write(fileContents, 0, fileContents.Length);

                List <SharprFileMetadata> metadata = new List <SharprFileMetadata>();
                metadata.AddRange(settings.FileMetadata);
                foreach (SharprFileMetadata m in metadata)
                {
                    try { m.PropertyValue = ((string)sFile.Item[m.SharePointPropertyName].ToString()); }
                    catch (Exception ex)
                    {
                        //do nothing
                    }
                }
                Logger.WriteLog(Logger.Category.Information, "SendFile", "Calling UploadFileToSharpr.");
                //now that we have the contents, upload to Sharpr
                string result = sss.UploadFileToSharpr(sFile.UniqueId.ToString(), sFile.Name, contentType, mStream, metadata);
            }
        }