public static async Task <WsFilesPreviewReaderEngine> Create(WsHttpClient httpClient, Task <WsFilesReader> filesReaderTask, HttpResponseMessage responseMessage)
        {
            WsFilesPreviewReaderEngine engine = new WsFilesPreviewReaderEngine(httpClient, responseMessage);
            XmlDocument xml = new XmlDocument();

            xml.Load(await engine._responseMessage.Content.ReadAsStreamAsync());
            engine._xmlReader = new XmlNodeReader(xml.DocumentElement);

            if (engine._xmlReader.Read() && engine._xmlReader.Name == ROOT_ELEMENT_NAME && engine._xmlReader.Read() && engine.ReadNextElement(out string status) == "status")
            {
                engine.Status = status;
                if (engine.Status != ResultStatus.OK)
                {
                    if (engine.ReadNextElement(out string errorCode) == "code")
                    {
                        engine.ErrorCode = errorCode;
                    }
                    engine.Dispose();
                }
                else if (engine.ReadNextElement(out _) != "name" || engine.ReadNextElement(out _) != "total" || engine.ReadNextElement(out _) != "size")
                {
                    engine.Status = "Xml format error.";
                    engine.Dispose();
                }
            }
        internal async Task <WsFilesPreviewReader> GetFolderFilesPreview(WsFolder folder)
        {
            if (folder == null)
            {
                throw new ArgumentNullException(nameof(folder));
            }
            CheckConnected();

            Task <WsFilesReader>       filesReaderTask = folder.GetAllFilesRecursive(0);
            WsFilesPreviewReaderEngine readerEngine    = await PostFormDataWithLoginRetry(async() =>
            {
                FormUrlEncodedContent formContent = CreateFormContent(new[]
                {
                    new KeyValuePair <string, string>("ident", folder.Ident),
                    new KeyValuePair <string, string>("limit", "99999999"),
                    //new KeyValuePair<string, string>("offset", "0")
                });
                HttpResponseMessage response = await _httpClient.PostFormData(API_FOLDER_URI, formContent);
                return(await WsFilesPreviewReaderEngine.Create(_httpClient, filesReaderTask, response));
            });

            CheckResultStatus(readerEngine);
            return(new WsFilesPreviewReader(readerEngine));
        }
Exemple #3
0
 internal WsFilesPreviewReader(WsFilesPreviewReaderEngine readerEngine)
 {
     _readerEngine = readerEngine;
 }