Esempio n. 1
0
        static void Main(string[] args)
        {
            //string msg = "This is a sentence to be compressed, converted to Base64 encoding,\r\nthen converted back to compressed form, then decompressed.";
            string msg = FoeServerCatalog.GetRssCache("CKXX");
            //PrintTitle("Testing CompressionManager");

            // Show original message
            //Console.WriteLine("Original message:");
            //Console.WriteLine(msg);
            //Console.WriteLine();

            // Show Base64 without compression
            string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(msg));

            //Console.WriteLine("Base64 without compression:");
            //Console.WriteLine(base64);
            //Console.WriteLine();

            // Show compressed base64
            byte[] compressed = CompressionManager.Compress(Encoding.UTF8.GetBytes(msg));
            base64 = Convert.ToBase64String(compressed);
            //Console.WriteLine("Compressed + Base64:");
            //Console.WriteLine(base64);
            //Console.WriteLine();

            // Show decompressed
            //compressed = Convert.FromBase64String(base64);
            compressed = Convert.FromBase64String("XQAAgAAQAAAAAAAAAAArlMVWcCtFDcKRGJnu/tFfaO6aVg==");
            //compressed = Convert.FromBase64String(base64);
            byte[] decompressed = CompressionManager.Decompress(compressed);
            string originalMsg  = Encoding.UTF8.GetString(decompressed);
            //Console.WriteLine("Decompressed:");
            //Console.WriteLine(originalMsg);
            //Console.WriteLine();

            //PrintFooter();
        }
        private void DoContentDelivery()
        {
            //FoeDebug.Print("Loading requests...");
            bool hasError = false;

            // Load content requests
            FoeRequester     req            = null;
            FoeServerRequest requestManager = new FoeServerRequest(RequestType.Content, FoeServerRegistry.Get("ProcessorEmail"));

            while ((req = requestManager.GetNextRequest()) != null)
            {
                //FoeDebug.Print("Processing request from " + req.UserEmail + " with request ID " + req.RequestId);

                // Check what contents are requested


                // Get user info
                FoeUser user = FoeServerUser.GetUser(req.UserEmail);
                if (user == null)
                {
                    //FoeDebug.Print("User not registered. Skip this request.");
                    //FoeDebug.Print("---------------------------------------");

                    // User is not registered, mark this request as "E" (Error) and skip to the next one
                    requestManager.UpdateRequestStatus(req, "E");

                    FoeServerLog.Add(_processName, FoeServerLog.LogType.Warning, "User " + user.Email + " not registered. Discard content request.");

                    continue;
                }

                //FoeDebug.Print("User verified.");

                // Process request
                string catalog = req.RequestMessage;
                string rss     = FoeServerCatalog.GetRssCache(catalog); // original RSS

                if (rss != null)
                {
                    // Send reply to user
                    try
                    {
                        FoeServerMessage.SendMessage(
                            FoeServerMessage.GetDefaultSmtpServer(),
                            FoeServerRegistry.Get("ProcessorEmail"),
                            req.UserEmail,
                            SubjectGenerator.ReplySubject(RequestType.Content, catalog, req.RequestId, FoeServerUser.GetUser(req.UserEmail).UserId),
                            rss);

                        //FoeDebug.Print("Sent reply to user.");

                        // Add user to auto-subscription list
                        FoeServerAutoSubscribe.Add(req.UserEmail, catalog, req.RequestId);

                        //FoeDebug.Print("Added user to Auto Subscription.");
                    }
                    catch (Exception except)
                    {
                        //FoeDebug.Print("Error sending email.");
                        //FoeDebug.Print(except.ToString());
                        hasError = true;

                        FoeServerLog.Add(_processName, FoeServerLog.LogType.Error, "Error delivering content to " + user.Email + "\r\n" + except.ToString());
                    }
                }

                // If there is no error, then we'll mark the request as 'C' (Completed).
                // Otherwise, we'll leave it as 'P' (Pending).
                if (!hasError)
                {
                    // mark request as "C" (Completed)
                    requestManager.UpdateRequestStatus(req, "C");

                    FoeServerLog.Add(_processName, FoeServerLog.LogType.Message, "Sent " + catalog + "to " + user.Email + " and added user to AutoSubscription.");

                    //FoeDebug.Print("Marked request as 'C' (Completed).");
                    //FoeDebug.Print("----------------------------------");
                }
                else
                {
                    //FoeDebug.Print("Leave request as 'P' (Pending).");
                    //FoeDebug.Print("-------------------------------");

                    FoeServerLog.Add(_processName, FoeServerLog.LogType.Error,
                                     "Error delivering content but error is likely caused by temporary email downtime. " +
                                     "Leave status as 'P' (Pending) so process can try again later.");
                }
            }

            // Close all requestManager connections
            requestManager.Close();
        }