public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
    {
        TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb);
        ErrorTypes eError = ErrorTypes.NoError;
        try
        {
            _log.Info("Starting process request...");
            _log.Info(context.Request.QueryString.ToString());
            
            InputParams oInputParams = new InputParams();
            oInputParams.m_sKey = context.Request.QueryString["key"];
            oInputParams.m_svKey = context.Request.QueryString["vkey"];
            oInputParams.m_sUrl = context.Request.QueryString["url"];
            oInputParams.m_sEmbeddedfonts = context.Request.QueryString["embeddedfonts"];

            int nIndexSep = oInputParams.m_sUrl.IndexOf(',');
            if (-1 != nIndexSep)
                oInputParams.m_sUrl = oInputParams.m_sUrl.Substring(0, nIndexSep);
            oInputParams.m_sTitle = context.Request.QueryString["title"];
            if (string.IsNullOrEmpty(oInputParams.m_sTitle))
                oInputParams.m_sTitle = "convert";
            oInputParams.m_sFiletype = context.Request.QueryString["filetype"];
            oInputParams.m_nOutputtype = FileFormats.FromString(context.Request.QueryString["outputtype"]);
            oInputParams.m_bAsyncConvert = Convert.ToBoolean(context.Request.QueryString["async"]);
            oInputParams.m_sCodepage = context.Request.QueryString["codePage"];
            oInputParams.m_sDelimiter = context.Request.QueryString["delimiter"];

            if (ErrorTypes.NoError == eError)
            {
                ITaskResultInterface oTaskResult = TaskResult.NewTaskResult();
                TaskResultData oToAdd = new TaskResultData();
                
                oInputParams.m_sKey = "conv_" + oInputParams.m_sKey;
                oToAdd.sKey = oInputParams.m_sKey;
                oToAdd.sFormat = oInputParams.m_sFiletype;
                oToAdd.eStatus = FileStatus.WaitQueue;
                oToAdd.sTitle = oInputParams.m_sTitle;
                TransportClass1 oTransportClass1 = new TransportClass1(oTransportClassMainAshx, oTaskResult, new CTaskQueue(), oInputParams);
                oTaskResult.GetOrCreateBegin(oInputParams.m_sKey, oToAdd, GetOrCreateCallback, oTransportClass1);
            }
        }
        catch(Exception e)
        {
            eError = ErrorTypes.Unknown;
            
            _log.Error(context.Request.QueryString.ToString());
            _log.Error("Exeption: ", e);
        }
        finally
        {
            if( ErrorTypes.NoError != eError )
                WriteOutputCommand(oTransportClassMainAshx, new OutputCommand(null, null, null, eError));
        }
        return new AsyncOperationData(extraData);
    }
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
    {

        TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb);
        ErrorTypes eError = ErrorTypes.NoError;
        try
        {
            _log.Info("Starting process request...");
            _log.Info(context.Request.QueryString.ToString());

            string sGuid = context.Request.QueryString["key"];
            int nMaxBytes = Convert.ToInt32(ConfigurationSettings.AppSettings["limits.image.size"] ?? "25000000");
            if (context.Request.ContentLength <= nMaxBytes)
            {
                if (context.Request.Files.Count > 0)
                {
                    
                    int nParamsCount = 0;
                    string sInputParams = "";
                    for (int i = 0, length = context.Request.QueryString.Count; i < length; ++i)
                    {
                        sInputParams += context.Request.QueryString.Get(i) + ":" + context.Request.QueryString.GetKey(i);
                        if (nParamsCount > 0)
                            sInputParams += ",";
                        nParamsCount++;
                    }
                    AsyncMediaXmlOperation oAsyncMediaXmlOperation = new AsyncMediaXmlOperation();
                    List<string> aUrls = new List<string>();
                    TransportClass1 oTransportClass1 = new TransportClass1(oTransportClassMainAshx, oAsyncMediaXmlOperation, context.Request.QueryString, aUrls, sGuid, Path.Combine(sGuid, @"media/media.xml"), context.Request.Files, context.Request.Files.GetEnumerator());
                    oAsyncMediaXmlOperation.GetMediaXmlBegin(oTransportClass1.m_sMediaXml, GetMediaXmlCallback, oTransportClass1);
                }
                else
                    eError = ErrorTypes.UploadCountFiles;
            }
            else
                eError = ErrorTypes.UploadContentLength;
        }
        catch(Exception e)
        {
            eError = ErrorTypes.Upload;
            
            _log.Error(context.Request.QueryString.ToString());
            _log.Error("Exeption: ", e);
        }
        if (ErrorTypes.NoError != eError)
            WriteToResponse(oTransportClassMainAshx, eError, null, context.Request.QueryString);
        return new AsyncOperationData(extraData);
    }
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
    {
        TransportClassMainAshx oTransportClassMainAshx = new TransportClassMainAshx(context, cb);
        AsyncContextReadOperation asynch = new AsyncContextReadOperation();
        TransportClassContextRead oTransportClassContextRead = new TransportClassContextRead(oTransportClassMainAshx, asynch);
        try
        {
            asynch.ReadContextBegin(context.Request.InputStream, ReadContext, oTransportClassContextRead);
        }
        catch(Exception e)
        {
            OutputCommand oOutputCommand = new OutputCommand(ErrorTypes.Unknown);
            WriteOutputCommand(new TransportClassMainAshx(context, cb), oOutputCommand);

            _log.Error("Exception catched in BeginProcessRequest:", e);
        }
        return new AsyncOperationData(extraData);
    }
 public TransportClassStorage3(TransportClassMainAshx oTransportClassMainAshx, InputCommand oInputCommand, Storage oStorage, Stream stream, string sKey, TransportClassSaveChanges2 oSaveChanges2)
     : base(oTransportClassMainAshx, oInputCommand, oStorage, stream, sKey)
 {
     m_oSaveChanges2 = oSaveChanges2;
 }
 public TransportClassStorage2(TransportClassMainAshx oTransportClassMainAshx, InputCommand oInputCommand, Storage oStorage, Stream stream, string sKey, string sFilename, string sExt, OutputCommand oOutputCommand)
     : base(oTransportClassMainAshx, oInputCommand, oStorage, stream, sKey)
 {
     m_sFilename = sFilename;
     m_sExt = sExt;
     m_oOutputCommand = oOutputCommand;
 }
 public TransportClassStorage(TransportClassMainAshx oTransportClassMainAshx, InputCommand oInputCommand, Storage oStorage, Stream stream, string sKey)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oInputCommand = oInputCommand;
     m_oStorage = oStorage;
     m_oStream = stream;
     m_sKey = sKey;
 }
 public TransportClassTaskResult(TransportClassMainAshx oTransportClassMainAshx, InputCommand oInputCommand, ITaskResultInterface oTaskResult)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oInputCommand = oInputCommand;
     m_oTaskResult = oTaskResult;
 }
 public TransportClassContextRead(TransportClassMainAshx m_oTransportClassMainAshx, AsyncContextReadOperation oAsyncContextReadOperation)
     : base(m_oTransportClassMainAshx.m_oHttpContext, m_oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oAsyncContextReadOperation = oAsyncContextReadOperation;
 }
 public TransportClassSaveChanges2(TransportClassMainAshx oTransportClassMainAshx)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
 }
 public TransportClass1(TransportClassMainAshx oTransportClassMainAshx, AsyncMediaXmlOperation oAsyncMediaXmlOperation, NameValueCollection aInputParams, List<string> aUrls, string sKey, string sMediaXml, HttpFileCollection oFiles, IEnumerator oFilesEnumerator)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oAsyncMediaXmlOperation = oAsyncMediaXmlOperation;
     m_aInputParams = aInputParams;
     m_sKey = sKey;
     m_oFiles = oFiles;
     m_oFilesEnumerator = oFilesEnumerator;
     m_sMediaXml = sMediaXml;
     m_aUrls = aUrls;
 }
    private void WriteToResponse(TransportClassMainAshx oTransportClassMainAshx, ErrorTypes eError, List<string> aUrls, NameValueCollection aNameValueCollection)
    {
        HttpContext oHttpContext = oTransportClassMainAshx.m_oHttpContext;
        AsyncCallback oAsyncCallback = oTransportClassMainAshx.m_oAsyncCallback;
        OutputCommand oOutputCommand = new OutputCommand();
        if (null != aNameValueCollection)
        {
            
            for (int i = 0, length = aNameValueCollection.Count; i < length; ++i)
                oOutputCommand.input.Add(aNameValueCollection.GetKey(i), aNameValueCollection.Get(i));
        }
        oOutputCommand.urls = aUrls;
        oOutputCommand.error = (int)eError;
        oOutputCommand.type = (int)PostMessageType.UploadImage;

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        StringBuilder sb = new StringBuilder();
        serializer.Serialize(oOutputCommand, sb);
        string sJson = sb.ToString();

        oHttpContext.Response.Write("<html><head><script type=\"text/javascript\">function load(){ parent.postMessage(\"" + sJson.Replace("\"", "\\\"") + "\", '*'); }</script></head><body onload='load()'></body></html>");

        oAsyncCallback.Invoke(new AsyncOperationData(null));
    }
 public TransportClass2(TransportClassMainAshx oTransportClassMainAshx, AsyncClearCacheOperation oAsyncClearCacheOperation, ErrorTypes eError)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oAsyncClearCacheOperation = oAsyncClearCacheOperation;
     m_eError = eError;
 }
 public TransportClass1(TransportClassMainAshx oTransportClassMainAshx, ITaskResultInterface oTaskResult, CTaskQueue oTaskQueue, InputParams oInputParams)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oTaskResult = oTaskResult;
     m_oInputParams = oInputParams;
     m_oTaskQueue = oTaskQueue;
     m_oTimer = null;
 }
    private void WriteOutputCommand(TransportClassMainAshx oTransportClassMainAshx, OutputCommand oOutputCommand)
    {
        HttpContext oHttpContext = oTransportClassMainAshx.m_oHttpContext;
        AsyncCallback fAsyncCallback = oTransportClassMainAshx.m_oAsyncCallback;
        oHttpContext.Response.ContentType = "text/xml";
        oHttpContext.Response.Charset = "UTF-8";

        string sXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><FileResult>";
        if (null != oOutputCommand.m_sFileUrl)
            sXml += string.Format("<FileUrl>{0}</FileUrl>", HttpUtility.HtmlEncode(oOutputCommand.m_sFileUrl));
        if (null != oOutputCommand.m_sPercent)
            sXml += string.Format("<Percent>{0}</Percent>", oOutputCommand.m_sPercent);
        if (true == oOutputCommand.m_bIsEndConvert.HasValue)
            sXml += string.Format("<EndConvert>{0}</EndConvert>", oOutputCommand.m_bIsEndConvert.Value.ToString());
        if (ErrorTypes.NoError != oOutputCommand.m_eError)
            sXml += string.Format("<Error>{0}</Error>", Utils.mapAscServerErrorToOldError(oOutputCommand.m_eError).ToString());
        sXml += "</FileResult>";

        oHttpContext.Response.Write(sXml);

        fAsyncCallback.Invoke(new AsyncOperationData(null));
    }
 public TransportClassTaskQueue(TransportClassMainAshx oTransportClassMainAshx, CTaskQueue oTaskQueue, object oParam)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oTaskQueue = oTaskQueue;
     m_oParam = oParam;
 }
    private void WriteOutputCommand(TransportClassMainAshx oTransportClassMainAshx, OutputCommand oOutputCommand)
    {
        HttpContext oHttpContext = oTransportClassMainAshx.m_oHttpContext;
        AsyncCallback fAsyncCallback = oTransportClassMainAshx.m_oAsyncCallback;
        oHttpContext.Response.ContentType = "text/plain";
        string sJson = new JavaScriptSerializer().Serialize(oOutputCommand);
        byte[] aJsonUtf8 = Encoding.UTF8.GetBytes(sJson);
        oHttpContext.Response.OutputStream.Write(aJsonUtf8, 0, aJsonUtf8.Length);

        fAsyncCallback.Invoke(new AsyncOperationData(null));
    }
 public TransportClassMediaXml(TransportClassMainAshx m_oTransportClassMainAshx, InputCommand oInputCommand, AsyncMediaXmlOperation oAsyncMediaXmlOperation, object oParam)
     : base(m_oTransportClassMainAshx.m_oHttpContext, m_oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oAsyncMediaXmlOperation = oAsyncMediaXmlOperation;
     m_oInputCommand = oInputCommand;
     m_oParam = oParam;
 }
 private void OpenCommand(TransportClassMainAshx oTransportClassMainAshx, InputCommand cmd)
 {
     try
     {
         TaskResultData oTaskResultData = new TaskResultData();
         oTaskResultData.sKey = cmd.id;
         
         if (false == string.IsNullOrEmpty(cmd.format))
             oTaskResultData.sFormat = cmd.format;
         
         oTaskResultData.eStatus = FileStatus.WaitQueue;
         
         if (false == string.IsNullOrEmpty(cmd.title))
             oTaskResultData.sTitle = cmd.title;
         
         ITaskResultInterface oTaskResult = TaskResult.NewTaskResult();
         TransportClassTaskResult oTransportClassClearCache = new TransportClassTaskResult(oTransportClassMainAshx, cmd, oTaskResult);
         
         oTaskResult.GetOrCreateBegin(cmd.id, oTaskResultData, TaskResultGetOrCreateCallback, oTransportClassClearCache);
     }
     catch
     {
         WriteOutputCommand(oTransportClassMainAshx, new OutputCommand(ErrorTypes.Unknown));
     }
 }
 public TransportClassInfo(TransportClassMainAshx oTransportClassMainAshx, string[] aKeys, ITaskResultInterface oTaskResult)
     : base(oTransportClassMainAshx.m_oHttpContext, oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_aKeys = aKeys;
     m_oTaskResult = oTaskResult;
 }
    private void TaskResultGetProcess(TaskResultData oTaskInfo, bool bDataCreate, InputCommand cmd, TransportClassMainAshx oTransportClassMainAshx)
    {
        switch (oTaskInfo.eStatus)
        {
            case FileStatus.Ok:
                {
                    string sAffiliateId = null;
                    Signature.getVKeyStringParam(cmd.vkey, ConfigurationSettings.AppSettings["keyKeyID"], out sAffiliateId);
                    if (null != sAffiliateId)
                    {
                        string sTag = null;
                        switch (cmd.editorid)
                        {
                            case (int)LicenseInfo.EditorType.Spreadsheet: sTag = "open_sheet"; break;
                            case (int)LicenseInfo.EditorType.Presentation: sTag = "open_presentation"; break;
                            default: sTag = "open_word"; break;
                        }
                        FileConverterUtils2.FileStatistic oFileStat = new FileStatistic();
                        oFileStat.insert(sAffiliateId, cmd.id, DateTime.UtcNow, sTag);
                    }

					ITaskResultInterface oTaskResult = TaskResult.NewTaskResult();
					TransportClassTaskResult oTransportClassTaskResult = new TransportClassTaskResult(
						oTransportClassMainAshx, cmd, oTaskResult);
					
					string sOutputCommand = ("create" == cmd.c)? "create": "open";
					
					WriteOutputCommand(oTransportClassTaskResult, 
						new OutputCommand(sOutputCommand, cmd.id + "/Editor.bin"));
                }
                break;
            case FileStatus.Convert:
            case FileStatus.WaitQueue:
                {
                    if (bDataCreate)
                    {
                        AddTask(cmd, oTransportClassMainAshx);
                    }
                    else
                    {
                        
                        WriteOutputCommand(oTransportClassMainAshx, new OutputCommand("waitopen", oTaskInfo.nStatusInfo.ToString()));
                    }
                }
                break;
            case FileStatus.None:
                {

                    if (bDataCreate)
                    {
                        TaskResultDataToUpdate oToUpdate = new TaskResultDataToUpdate();
                        oToUpdate.eStatus = FileStatus.WaitQueue;
                        ITaskResultInterface oTaskResult = TaskResult.NewTaskResult();
                        TransportClassTaskResult oTransportClassTaskResult = new TransportClassTaskResult(oTransportClassMainAshx, cmd, oTaskResult);
                        oTaskResult.UpdateBegin(cmd.id, oToUpdate, TaskResultUpdateCallback, oTransportClassTaskResult);

                    }
                    else
                    {
                        
                        WriteOutputCommand(oTransportClassMainAshx, new OutputCommand("waitopen", oTaskInfo.nStatusInfo.ToString()));
                    }
                }
                break;
            case FileStatus.NeedParams:
                string sUrl = Constants.mc_sResourceServiceUrlRel + HttpUtility.UrlEncode(cmd.id + "/settings.json");
                WriteOutputCommand(oTransportClassMainAshx, new OutputCommand("needparams", sUrl));
                break;
            case FileStatus.ErrToReload:
                {
                    
                    AsyncClearCacheOperation oAsyncClearCacheOperation = new AsyncClearCacheOperation();
                    TransportClassClearCache oTempTransportClassClearCache = new TransportClassClearCache(oTransportClassMainAshx, cmd, oAsyncClearCacheOperation, oTaskInfo.nStatusInfo);
                    oAsyncClearCacheOperation.ClearCacheBegin(cmd.id, TaskResultRemoveCallback2, oTempTransportClassClearCache);
                }
                break;
            case FileStatus.Err:
                WriteOutputCommand(oTransportClassMainAshx, new OutputCommand((ErrorTypes)oTaskInfo.nStatusInfo));
                break;
            case FileStatus.SaveVersion:
                {
                    if (cmd.viewmode)
                        WriteOutputCommand(oTransportClassMainAshx, new OutputCommand("updateversion", cmd.id + "/Editor.bin"));
                    else
                    {
                        ITaskResultInterface oTaskResult = TaskResult.NewTaskResult();
                        TaskResultDataToUpdate oTask = new TaskResultDataToUpdate();
                        oTask.eStatus = FileStatus.Ok;
                        TaskResultDataToUpdate oMask = new TaskResultDataToUpdate();
                        oMask.eStatus = FileStatus.SaveVersion;
                        TransportClassTaskResult oTransportClassTaskResult = new TransportClassTaskResult(oTransportClassMainAshx, cmd, oTaskResult);
                        oTaskResult.UpdateIfBegin(cmd.id, oMask, oTask, TaskResultUpdateIfCallback2, oTransportClassTaskResult);
                    }
                }
                break;
            case FileStatus.UpdateVersion:
                WriteOutputCommand(oTransportClassMainAshx, new OutputCommand("updateversion", cmd.id + "/Editor.bin"));
                break;
            default:
                WriteOutputCommand(oTransportClassMainAshx, new OutputCommand(ErrorTypes.Unknown));
                break;
        }
    }
    private void AddTask(InputCommand cmd, TransportClassMainAshx oTransportClassMainAshx)
    {
        try
        {
            
            int nToFormat = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS;

            TaskQueueData oTaskQueueData = new TaskQueueData(cmd.id, nToFormat, "Editor.bin");

            oTaskQueueData.m_sFromUrl = cmd.url;
            oTaskQueueData.m_sFromFormat = cmd.format;

            if (cmd.codepage.HasValue)
                oTaskQueueData.m_nCsvTxtEncoding = cmd.codepage.Value;
            if (cmd.delimiter.HasValue)
                oTaskQueueData.m_nCsvDelimiter = cmd.delimiter.Value;
            oTaskQueueData.m_bEmbeddedFonts = false;

            CTaskQueue oTaskQueue = new CTaskQueue();
            TransportClassTaskQueue oTransportClassTaskQueue = new TransportClassTaskQueue(oTransportClassMainAshx, oTaskQueue, null);

            oTaskQueue.AddTaskBegin(oTaskQueueData, Priority.High, TaskQueueAddCallback, oTransportClassTaskQueue);
			
            WriteOutputCommand(oTransportClassTaskQueue, new OutputCommand("waitopen", "0"));
        }
        catch
        {
            WriteOutputCommand(oTransportClassMainAshx, new OutputCommand(ErrorTypes.Unknown));
        }
    }
Beispiel #22
0
 public TransportClassContextRead(TransportClassMainAshx m_oTransportClassMainAshx, AsyncContextReadOperation oAsyncContextReadOperation)
     : base(m_oTransportClassMainAshx.m_oHttpContext, m_oTransportClassMainAshx.m_oAsyncCallback)
 {
     m_oAsyncContextReadOperation = oAsyncContextReadOperation;
 }