コード例 #1
0
        public void SyncronizeContacts()
        {
            if (this.Membership == null)
            {
                this.RequestMembership();
            }
            if (this.Contacts == null)
            {
                this.RequestContacts();
            }

            this.Contacts.NotNull();
            this.Membership.NotNull();

            foreach (Contact kvp in this.Contacts)
            {
                if (kvp.IsMessengerUser == false)
                {
                    continue;
                }
                if (this.Membership.Count == 0)
                {
                    continue;
                }
                kvp.MemberRole = (
                    from ms in this.Membership
                    where (ms.MemberRole == MemberRole.Allow || ms.MemberRole == MemberRole.Block) && ms.PassportName == kvp.PassportName
                    select ms.MemberRole
                    ).First();
            }

            //Agora que temos ambos!
            //Vamos 'unir' os desgraçados!!!

            PackageRequest[] request = new PackageRequest[]
            {
                new PrivacySettingsRequest(true),
                new SyncronizeContactsRequest(this.Contacts),
                new EditUserPropertiesRequest(UserProperties.MFN, this.Account),
            };

            Dictionary <int, PackageTransaction> response = this.socket.SendRangeAndBlock(request);

            syncContacts = true;
        }
コード例 #2
0
        static IEnumerator MonitorPackageUpdate(PackageRequest owner, string gitUrl, string packageName)
        {
            Debug.Log($"Checking for updates for {packageName}...");

            var request = UnityEditor.PackageManager.Client.Add(gitUrl);

            while (!request.IsCompleted)
            {
                yield return(null);
            }

            if (request.Error != null)
            {
                Debug.LogError($"Error code {request.Error.message}: {request.Error.message}");
            }

            Debug.Log($"Latest version: {request.Result.version}");
            yield break;
        }
コード例 #3
0
        IEnumerable <ICommandOutput> CopyOpenWrap(PackageDescriptor projectDescriptor, IDirectory projectDirectory)
        {
            var packageManager = Services.ServiceLocator.GetService <IPackageManager>();

            var repositoryOptions = FolderRepositoryOptions.AnchoringEnabled;

            if (projectDescriptor.UseSymLinks)
            {
                repositoryOptions |= FolderRepositoryOptions.UseSymLinks;
            }
            var projectRepository = new FolderRepository(projectDirectory.GetDirectory("wraps"), repositoryOptions)
            {
                Name = "Project repository"
            };

            packageManager.AddProjectPackage(PackageRequest.Any("openwrap"),
                                             new[] { Environment.SystemRepository },
                                             projectDescriptor,
                                             projectRepository,
                                             PackageAddOptions.Default | PackageAddOptions.Anchor | PackageAddOptions.Content).ToList();
            yield return(new GenericMessage("Project repository initialized."));
        }
コード例 #4
0
        public async Task <IActionResult> SendMessages([FromBody] PackageRequest packageRequest)
        {
            if (ModelState.IsValid)
            {
                var res = new PackageResponse
                {
                    Send = new List <ResponseMsg>
                    {
                        new ResponseMsg {
                            Id = 1, MsgErrorCode = "test"
                        },
                        new ResponseMsg {
                            Id = 2, ServerId = "1", Value = "test"
                        }
                    }
                };

                return(Ok(res));
            }

            return(BadRequest(ErrorResponse.GetError(ErrorCodes.BAD_XML)));
        }
コード例 #5
0
        static void CheckForUpdatesDemo()
        {
            var owner = new PackageRequest();

            EditorCoroutineUtility.StartCoroutine(MonitorPackageUpdate(owner, gitUrlDemo, "Graphene Demo"), owner);
        }
コード例 #6
0
        static void CheckForUpdatesComponents()
        {
            var owner = new PackageRequest();

            EditorCoroutineUtility.StartCoroutine(MonitorPackageUpdate(owner, gitUrlCore, "Graphene Components"), owner);
        }
コード例 #7
0
        private void Authenticate(IPEndPoint host, int attemptsP)
        {
            this.socket = new MessengerSocket(host)
            {
                AutoFlush = false
            };

            //Agora que estamos ligados ao Notification Server vamos começar o processo de autenticação!!!

            #region Request

            //Request this Data!
            PackageRequest[] request = new PackageRequest[]
            {
                new VersionRequest(),
                new MachineInfoRequest(this.Account),
                new AuthenticationRequest(this.Account)
            };

            //Get responses from the server!
            Dictionary <int, PackageTransaction> responses = this.socket.SendRangeAndBlock(request);

            #endregion

            #region Parse Responses if Any

            //Agora que temos as respostas vamos verificar se estão correctas!
            //Seja em quantidade, seja em 'qualidade'...

            if (responses.Count != 3)
            {
                throw new MessengerException("Unable to receive one or more responses from the server");
            }

            //Responses!
            VersionResponse        version        = responses[request[0].TransactionID].Response as VersionResponse;
            MachineInfoResponse    machine        = responses[request[1].TransactionID].Response as MachineInfoResponse;
            AuthenticationResponse authentication = responses[request[2].TransactionID].Response as AuthenticationResponse;

            //Verificar se recebemos as respostas certas!
            version.NotNull <VersionResponse, MessengerProtocolException>("Unexpected response");
            machine.NotNull <MachineInfoResponse, MessengerProtocolException>("Unexpected response");

            if (authentication == null)
            {
                //Vamos ver se fomos redirecionados para outro servidor!
                DispatchServerRedirectionResponse redirection = responses[request[2].TransactionID].Response as DispatchServerRedirectionResponse;
                redirection.NotNull <DispatchServerRedirectionResponse, MessengerProtocolException>("Unexpected response");
                //Caso tenhamos sido redireccionados novamente!
                //Vamos tentar autenticação ai!
                if (attemptsP >= 0)
                {
                    this.Authenticate(redirection.Host, attemptsP - 1);
                }
                return;
            }

            //Verificar se é uma versão suportada do protocolo!
            version.Protocols.MustContainElement <string, MessengerProtocolException>("MSNP15", "Unsupported  Protocol");

            //Verificar se o nosso cliente ainda é aceitável!
            if ((request[1] as MachineInfoRequest).ClientVersion < machine.MinimumSafeVersion)
            {
                //Ignore! We are not a client! We are just the libraries!
                //throw new Exception("Unsupported  client");
            }

            #endregion

            //Como chegamos até aqui
            //Temos confiança que podemos prosseguir com a autenticação!

            #region Request Credentials

            //Vamos obter as nossas credenciais!
            //E neste caso vamos obter credencias para todos os serviços!
            PassportRequest pr = new PassportRequest(this.Account, this.Password, authentication.Policy);

            this.Credentials = pr.RequestCredentials();

            #endregion

            //Agora que temos as credenciais!
            //Vamos POR FIM tentar o 'passo final' de autenticação

            #region Validade Credentials

            const string authDomain = "messengerclear.live.com";
            if (!this.Credentials.ContainsKey(authDomain))
            {
                throw new MessengerAuthenticationException("Could not retrieve Credentials");
            }

            string securityToken = this.Credentials[authDomain].SecurityToken;
            string binarySecret  = this.Credentials[authDomain].BinarySecret;

            securityToken.NotEmpty <MessengerAuthenticationException>("Could not retrieve Credentials");
            binarySecret.NotEmpty <MessengerAuthenticationException>("Could not retrieve Credentials");

            string finalTicket = MessengerSocket.CalculateMBIResponse(binarySecret, authentication.Nonce);

            #endregion

            #region Final Request

            request = new PackageRequest[]
            {
                new AuthenticationRequest(true, string.Format("{0} {1}", securityToken, finalTicket))
            };

            //Get response from the server!
            responses = this.socket.SendRangeAndBlock(request);

            #endregion

            #region Final Parse Responses If Any

            //Agora que temos as respostas vamos verificar se estão correctas!
            //Seja em quantidade, seja em 'qualidade'...

            if (responses.Count != 1)
            {
                throw new MessengerException("Unable to receive response from the server");
            }

            //Responses!
            AuthenticationAchievedResponse authenticatedGranted = responses[request[0].TransactionID].Response as AuthenticationAchievedResponse;

            authenticatedGranted.NotNull <AuthenticationAchievedResponse, MessengerProtocolException>("Unexpected response");

            #endregion

            //Hacker lingo!
            //We are in!
        }
コード例 #8
0
ファイル: WeightForm.cs プロジェクト: 524300045/pc
        private void tbWeight_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                try
                {
                    if (string.IsNullOrWhiteSpace(tbWeight.Text.Trim()))
                    {
                        MessageBox.Show("请录入重量!");
                        tbWeight.Focus();
                        return;
                    }

                    decimal weight = 0;
                    decimal.TryParse(tbWeight.Text.Trim(), out weight);
                    if (weight <= 0)
                    {
                        MessageBox.Show("录入重量必须大于0!");
                        tbWeight.Focus();
                        return;
                    }

                    curWeight = Util.ConvertGToJin(weight);

                    //if (curWeight<downWeight)
                    //{
                    //    MessageBox.Show("重量不能小于浮动下限");
                    //    return;
                    //}

                    //if (curWeight>upWeight)
                    //{
                    //      MessageBox.Show("重量不能大于浮动上限");
                    //    return;
                    //}


                    tbWeight.Enabled = false;

                    PackageRequest request = new PackageRequest();
                    request.packTaskDetailId = curTaskDetailId;
                    request.processUser      = UserInfo.RealName;

                    request.weight           = curWeight;
                    request.packTaskCode     = taskCode;
                    request.outboundTaskCode = curOutStockCode;
                    request.skuCode          = curSkuCode;
                    request.createUser       = UserInfo.RealName;
                    request.updateUser       = UserInfo.RealName;
                    request.partnerCode      = UserInfo.PartnerCode;
                    request.partnerName      = UserInfo.PartnerName;



                    PackageResponse response = client.Execute(request);
                    if (!response.IsError)
                    {
                        curPackageCode = response.result;
                        PrintDocument document = new PrintDocument();
                        document.DefaultPageSettings.PaperSize = new PaperSize("Custum", 270, 180);

#if (!DEBUG)
                        PrintDialog dialog = new PrintDialog();
                        document.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
                        dialog.Document     = document;
#else
                        PrintPreviewDialog dialog = new PrintPreviewDialog();
                        document.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
                        dialog.Document     = document;
#endif
                        try
                        {
                            document.Print();
                        }
                        catch (Exception exception)
                        {
                            MessageBox.Show("打印异常" + exception);
                            document.PrintController.OnEndPrint(document, new PrintEventArgs());
                        }
                        //打印,加载下一个
                        ClearForm();
                        tbWeight.Text = "";
                        ShowDetail();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    tbWeight.Enabled = true;
                    tbWeight.Focus();
                }
            }
        }
コード例 #9
0
ファイル: AddWrapCommand.cs プロジェクト: danstuken/openwrap
        protected override IEnumerable <ICommandOutput> ExecuteCore()
        {
            var targetDescriptor = HostEnvironment.GetOrCreateScopedDescriptor(Scope ?? string.Empty);

            yield return(VerifyDescriptor(targetDescriptor));

            yield return(VerifyProjectRepository());

            yield return(SetupEnvironmentForAdd());

            var sourceRepositories = GetSourceRepositories();


            if (Project && System)
            {
                var sysToAdd = new List <PackageIdentifier>();
                using (ChangeMonitor(targetDescriptor))
                {
                    foreach (var m in PackageManager.AddProjectPackage(PackageRequest, sourceRepositories, targetDescriptor.Value, HostEnvironment.ProjectRepository, AddOptions))
                    {
                        yield return(ToOutput(m));

                        ParseSuccess(m, sysToAdd.Add);
                    }
                    foreach (var identifier in sysToAdd)
                    {
                        foreach (var m in PackageManager.AddSystemPackage(PackageRequest.Exact(identifier.Name, identifier.Version), sourceRepositories, HostEnvironment.SystemRepository))
                        {
                            yield return(ToOutput(m));
                        }
                    }
                }
            }
            else if (Project)
            {
                using (ChangeMonitor(targetDescriptor))
                {
                    foreach (var m in PackageManager.AddProjectPackage(PackageRequest, sourceRepositories, targetDescriptor.Value, HostEnvironment.ProjectRepository, AddOptions))
                    {
                        yield return(ToOutput(m));
                    }
                }
            }
            else if (System)
            {
                foreach (var m in PackageManager.AddSystemPackage(PackageRequest, sourceRepositories, HostEnvironment.SystemRepository, AddOptions))
                {
                    yield return(ToOutput(m));
                }
            }

            if (_packageNotFound)
            {
                var hit = false;
                foreach (var m in PackageManager.ListPackages(sourceRepositories, Name))
                {
                    if (!hit)
                    {
                        yield return(new Info("Did you mean one of the following package?", Name));

                        hit = true;
                    }
                    yield return(ToOutput(m));
                }
            }
            if (ShouldUpdateDescriptor)
            {
                TrySaveDescriptorFile(targetDescriptor);
            }
        }
コード例 #10
0
ファイル: MessengerSocket.cs プロジェクト: r3db/Messenger
 public PackageResponse SendAndBlock <T>(PackageRequest request)
 {
     return(this.SendAndBlock <T>(request, this.Timeout));
 }
コード例 #11
0
ファイル: MainWindow.cs プロジェクト: slapware/AdobeIngest
        private void btnPackageRequest_Click_OLD(object sender, EventArgs e)
        {
            if (HCPACS4.AdobeConfig.DELETE_FROM_FTP)
            {
                MessageBox.Show("Beware Delete From FTP");
            }

            log.Info("Begin ACS4 ingestion process...");


            int             numFilesDropped   = 0;
            int             numFilesIngested  = 0;
            ACS4ApiResponse builtInCatalogRaw = null;
            Dictionary <string, ACS4CatalogResourceMapItem> mapBuiltInCatalog = null;
            IEnumerable <ACS4Catalog> builtInCatalog = null;
            ACS4ApiResponse           eCtbCatalogRaw = null;
            Dictionary <string, ACS4CatalogResourceMapItem> eCtbCatalogMap = null;
            IEnumerable <ACS4Catalog> eCtbCatalog = null;
            List <List <HCPACS4.FileIO.HCPFileInfo> > allDroppedFiles = new List <List <HCPACS4.FileIO.HCPFileInfo> >();


            var dbRunLog = new ACS4Ingest.RunLog();

            dbRunLog.StartTimeUtc = System.DateTime.UtcNow;
            dbRunLog.BatchSize    = HCPACS4.AdobeConfig.BATCH_SIZE;
            dbRunLog.Insert();

            // check for any files on drop folders
            var dropFolders = ACS4Ingest.ConfigFtpDropFolder.Query("SELECT * FROM ConfigFtpDropFolder WHERE Enabled = 1");

            foreach (var dropFolder in dropFolders)
            {
                try
                {
                    log.Info(String.Format("List dropped epubs for {0} from {1}{2}", dropFolder.Alias, dropFolder.FtpHost, dropFolder.FtpRemotePath));

                    var ftpDrop      = new DropFolder(dropFolder.Id, dropFolder.Alias, dropFolder.FtpHost, dropFolder.FtpUser, dropFolder.FtpPassword, dropFolder.FtpRemotePath, dropFolder.Enabled);
                    var droppedFiles = ftpDrop.ListFiles(".epub");
                    var dbFileStats  = new ACS4Ingest.DropFolderStat();
                    dbFileStats.RunLogId     = dbRunLog.Id;
                    dbFileStats.DropFolderId = dropFolder.Id;
                    dbFileStats.EpubCount    = droppedFiles.Count;
                    dbFileStats.Insert();

                    numFilesDropped += droppedFiles.Count;
                    log.Info(String.Format("{0} epubs found at {1}{2}", droppedFiles.Count, dropFolder.FtpHost, dropFolder.FtpRemotePath));
                }
                catch (Exception ex)
                {
                    log.Error(String.Format("Exception listing files for {0} from {1}{2}", dropFolder.Alias, dropFolder.FtpHost, dropFolder.FtpRemotePath), ex);
                }
            }
            dbRunLog.NumFilesDropped = numFilesDropped;
            dbRunLog.Update();

            if (numFilesDropped == 0)
            {
                log.Info(String.Format("No epubs to process, exiting job."));
                return;
            }

            /** Get ACS4 catalogs **/
            try
            {
                // Get ACS4 Built In Distributor catalog to know if an asset already exists in ACS4 system
                log.Info(String.Format("Fetching ACS4 Built In Distributor catalog..."));
                builtInCatalogRaw = eCTB.FetchCatalog(HCPACS4.AdobeConfig.ACS_ECTB_BUILTIN_DISTRIBUTORID, HCPACS4.AdobeConfig.ACS_ECTB_BUILTIN_SECRET_KEY);
                if (!builtInCatalogRaw.IsError())
                {
                    builtInCatalog    = HCPUtils.ParseACS4Catalog(builtInCatalogRaw.ResponseBody);
                    mapBuiltInCatalog = HCPUtils.MapIsbnToACS4Resource(builtInCatalog);
                    log.Info(String.Format("ACS4 Built In Distributor fetched successfully with {0} records", builtInCatalog.Count()));
                }
                else
                {
                    log.Error(String.Format("Error Fetching ACS4 Built In Distributor : {0} - {1}", builtInCatalogRaw.ErrorCode, builtInCatalogRaw.ErrorMessage));
                }

                // Get eCTB catalog - to know if epub has already been assigned distribution rights within eCTB distributor
                log.Info(String.Format("Fetching eCtb Distributor catalog..."));
                eCtbCatalogRaw = eCTB.FetchCatalog(HCPACS4.AdobeConfig.ACS_ECTB_DISTRIBUTORID, HCPACS4.AdobeConfig.ACS_ECTB_SECRET_KEY);
                if (!eCtbCatalogRaw.IsError())
                {
                    eCtbCatalog    = HCPUtils.ParseACS4Catalog(eCtbCatalogRaw.ResponseBody);
                    eCtbCatalogMap = HCPUtils.MapIsbnToACS4Resource(eCtbCatalog);
                    log.Info(String.Format("eCtb Distributor fetched successfully with {0} records", eCtbCatalog.Count()));
                }
                else
                {
                    log.Error(String.Format("Error Fetching eCtb Distributor : {0} - {1}", eCtbCatalogRaw.ErrorCode, eCtbCatalogRaw.ErrorMessage));
                }
                dbRunLog.InitialCountBuiltInCatalog = builtInCatalog.Count();
                dbRunLog.InitialCounteCtbCatalog    = eCtbCatalog.Count();
                dbRunLog.Update();
            }
            catch (Exception ex)
            {
                log.Error("Exception fetching ACS4 catalog(s)", ex);
            }

            /** Get the files and begin processing **/
            if (!builtInCatalogRaw.IsError() && !eCtbCatalogRaw.IsError() && numFilesDropped > 0)
            {
                // Download the files from FTP
                List <HCPFileInfo> fetchedFiles = new List <HCPFileInfo>();
                foreach (var dropFolder in dropFolders)
                {
                    log.Info(String.Format("Downloading files from {0}{1} ...", dropFolder.FtpHost, dropFolder.FtpRemotePath));
                    string savePath = String.Format(@"{0}\{1}", HCPACS4.AdobeConfig.LOCAL_STAGING_PATH.TrimEnd('\\'), dropFolder.Alias);
                    var    ftpDrop  = new DropFolder(dropFolder.Id, dropFolder.Alias, dropFolder.FtpHost, dropFolder.FtpUser, dropFolder.FtpPassword, dropFolder.FtpRemotePath, dropFolder.Enabled);
                    var    files    = ftpDrop.DownloadFiles(".epub", savePath, HCPACS4.AdobeConfig.BATCH_SIZE, HCPACS4.AdobeConfig.DELETE_FROM_FTP);
                    log.Info(String.Format("Downloaded {0} files from {1}{2} ...", files.Count, dropFolder.FtpHost, dropFolder.FtpRemotePath));
                    foreach (var f in files)
                    {
                        f.DropFolderAlias = dropFolder.Alias;
                        f.DropFolderId    = dropFolder.Id;
                    }
                    fetchedFiles.AddRange(files);
                }

                // load / analyze / package epub files
                foreach (var f in fetchedFiles)
                {
                    bool existsBuiltInCatalog                 = false;
                    bool existsEctbDistributionRights         = false;
                    bool galleyAttemptingToOverwriteNonGalley = false;

                    Epub epub  = new Epub(f.FullName, f.DropFolderAlias);
                    var  dbLog = new ACS4Ingest.IngestionLog();
                    dbLog.RunLogId         = dbRunLog.Id;
                    dbLog.EpubFileName     = f.FileName;
                    dbLog.Isbn             = epub.Isbn;
                    dbLog.FileSize         = epub.FileSizeBytes;
                    dbLog.ArchivePath      = f.FileArchivePath;
                    dbLog.DropFolderId     = f.DropFolderId;
                    dbLog.IsbnFromFileName = epub.IsbnFromFileName;
                    dbLog.IsbnFromOpf      = epub.IsbnFromOpf;
                    dbLog.OpfIdentifier    = epub.OpfIdentifier;
                    dbLog.IsCorrupt        = epub.CorruptFile;
                    dbLog.EnteredDateUtc   = System.DateTime.UtcNow;
                    dbLog.Insert();


                    /** PreFlight Checks **/

                    /** TODO:
                     *      Needs some refactoring:
                     *             move to function
                     *             log to IngestionErrors table accomodate 1 to many to multiple to table
                     **/
                    if (epub.CorruptFile)
                    {
                        log.Info(String.Format("FailedPreFlightCheck {0} : {1}", "CorruptFile", epub.FullName));
                        dbLog.Ingested        = false;
                        dbLog.IsValidPreCheck = false;
                        dbLog.PreCheckError   = "CorruptFile";
                        dbLog.Update();
                        continue;
                    }

                    if (epub.IsbnFromFileName != epub.IsbnFromOpf)
                    {
                        log.Info(String.Format("FailedPreFlightCheck {0} : {1}", "IsbnMismatchFileNameOpf", epub.FullName));
                        dbLog.IsbnFromOpf     = epub.IsbnFromOpf;
                        dbLog.Ingested        = false;
                        dbLog.IsValidPreCheck = false;
                        dbLog.PreCheckError   = "IsbnMismatchFileNameOpf";
                        dbLog.Update();
                        continue;
                    }

                    if (epub.InvalidDocType)
                    {
                        log.Info(String.Format("FailedPreFlightCheck {0} : {1}", "InvalidDocType", epub.FullName));
                        dbLog.Ingested        = false;
                        dbLog.IsValidPreCheck = false;
                        dbLog.PreCheckError   = "InvalidDocType";
                        dbLog.Update();
                        continue;
                    }

                    // TODO: Zero in on this size restriction - 50 MB for now
                    if (epub.FileSizeBytes > HCPACS4.AdobeConfig.MAX_FILE_SIZE)
                    {
                        log.Info(String.Format("FailedPreFlightCheck {0} : {1}", "FileTooLarge", epub.FullName));
                        dbLog.Ingested        = false;
                        dbLog.IsValidPreCheck = false;
                        dbLog.PreCheckError   = "FileTooLarge";
                        dbLog.Update();
                        continue;
                    }



                    // lookup to see if isbn exists in Built In Catalog
                    // ACS4 does not work on isbn13, it will happily ingest the same isbn several times
                    ACS4CatalogResourceMapItem mappedBuiltInCatalog;
                    //TODO: using Isbn //if (mapBuiltInCatalog.TryGetValue(epub.IsbnFromOpf, out mappedBuiltInCatalog))
                    if (mapBuiltInCatalog.TryGetValue(epub.Isbn, out mappedBuiltInCatalog))
                    {
                        epub.ACS4Guid        = mappedBuiltInCatalog.Guid;
                        existsBuiltInCatalog = true;

                        if (epub.IsGalley && !mappedBuiltInCatalog.IsGalley)
                        {
                            galleyAttemptingToOverwriteNonGalley = true;
                        }
                    }

                    // See if book is already assigned to eCTB Distributor
                    if (eCtbCatalog.Any(i => i.resource == epub.ACS4Guid))
                    {
                        existsEctbDistributionRights = true;
                    }

                    dbLog.IsValidPreCheck = true;
                    dbLog.IngestType      = existsBuiltInCatalog ? "update" : "add";



                    /* Abort ingest if this file is a galley and existing is a non Galley */
                    if (galleyAttemptingToOverwriteNonGalley)
                    {
                        log.Info(String.Format("IngestAborted {0} : {1}", "GalleyCannotOverwriteNonGalley", epub.FullName));
                        dbLog.Ingested        = false;
                        dbLog.IsValidPreCheck = false;
                        dbLog.PreCheckError   = "GalleyCannotOverwriteNonGalley";
                        dbLog.Update();
                        continue;
                    }



                    PackageRequest         package         = new PackageRequest(epub);
                    PackageRequestResponse packageResponse = package.SendRequest();

                    log.Info(String.Format("{0} : {1} : {2}", (bool)packageResponse.Ingested ? "INGESTED" : "NOT INGESTED", epub.FullName, packageResponse.Ingested ? null  : String.Format("{0} : {1}", packageResponse.ErrorCode, packageResponse.ErrorMessage)));

                    // assign to eCTB distributor if does not already exists
                    ACS4ApiResponse rightsReqResponse = null;
                    if ((bool)packageResponse.Ingested && !existsEctbDistributionRights)
                    {
                        // assign the book to the eCTB distributor
                        ManageDistributionRights rightsReq = new ManageDistributionRights(HCPACS4.AdobeConfig.ACS_ECTB_DISTRIBUTORID, packageResponse.ACS4Guid);
                        rightsReqResponse = rightsReq.AssignRights();
                        rightsReq         = null;
                        numFilesIngested++;
                    }



                    dbLog.PackageHttpResponseCode = (int)packageResponse.HttpStatusCode;
                    dbLog.Ingested         = (bool)packageResponse.Ingested;
                    dbLog.ACS4Guid         = packageResponse.ACS4Guid;
                    dbLog.FileSize         = epub.FileSizeBytes;
                    dbLog.PackageResponse  = packageResponse.ResponseBody;
                    dbLog.PackageErrorCode = packageResponse.IsError() ? packageResponse.ErrorCode : null;
                    //TODO: Ensure we truncate to 256 dbLog.PackageErrorMessage = packageResponse.IsError() ? String.IsNullOrEmpty(packageResponse.ErrorMessage) ? null : packageResponse.ErrorMessage.Substring(0, 256) : null;
                    dbLog.PackageErrorMessage = packageResponse.IsError() ? packageResponse.ErrorMessage : null;
                    if (rightsReqResponse != null)
                    {
                        dbLog.DistributionRightsAssigned  = !rightsReqResponse.IsError();
                        dbLog.DistributionRightsErrorCode = rightsReqResponse.IsError() ? rightsReqResponse.ErrorCode : null;
                        //TODO: Ensure we truncate to 256 dbLog.DistributionRightsErrorMessage = rightsReqResponse.IsError() ? String.IsNullOrEmpty(rightsReqResponse.ErrorMessage) ? rightsReqResponse.ErrorMessage.Substring(0, 256) : null : null;
                        dbLog.DistributionRightsErrorMessage = rightsReqResponse.IsError() ? rightsReqResponse.ErrorMessage : null;
                    }
                    dbLog.EnteredDateUtc = System.DateTime.UtcNow;
                    //dbLog.Insert();
                    dbLog.Update();

                    dbLog             = null;
                    package           = null;
                    packageResponse   = null;
                    rightsReqResponse = null;
                }
            }
            else
            {
                log.Info(String.Format("Nothing to do, exiting job."));
            }

            dbRunLog.NumFilesIngested = numFilesIngested;
            dbRunLog.EndTimeUtc       = System.DateTime.UtcNow;
            dbRunLog.Update();

            log.Info(String.Format("Total files ingested {0}", numFilesIngested));
            log.Info("End ACS4 ingestion process");

            MessageBox.Show("Done");
        }