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)); }
internal WsFilesPreviewReader(WsFilesPreviewReaderEngine readerEngine) { _readerEngine = readerEngine; }