/// <summary> /// Creates the result for the specified content asynchronously. /// </summary> /// <param name="content">The HTTP content.</param> /// <returns>The produced operation result.</returns> protected async override Task <HadoopFileSystemOperationResult> CreateResultAsync(HttpContent content) { return(new HadoopFileListingOperationResult { Request = CompleteRequest, StatusList = JObject.Parse(await content.ReadAsStringAsync()).GetValue("FileStatuses")["FileStatus"].Children <JObject>().Select(fileObject => { HadoopFileStatusOperationResult fileResult = new HadoopFileStatusOperationResult { Name = fileObject.Value <String>("pathSuffix"), AccessTime = new DateTime(1970, 1, 1) + TimeSpan.FromTicks(fileObject.Value <Int64>("accessTime")), ModificationTime = new DateTime(1970, 1, 1) + TimeSpan.FromTicks(fileObject.Value <Int64>("modificationTime")), Length = fileObject.Value <Int64>("length"), BlockSize = fileObject.Value <Int64>("blockSize"), }; switch (fileObject.Value <String>("type")) { case "FILE": fileResult.EntryType = FileSystemEntryType.File; break; case "DIRECTORY": fileResult.EntryType = FileSystemEntryType.Directory; break; case "SYMLINK": fileResult.EntryType = FileSystemEntryType.Link; break; } return fileResult; }).ToArray() }); }
/// <summary> /// Creates the result for the specified content asynchronously. /// </summary> /// <param name="content">The HTTP content.</param> /// <returns>The produced operation result.</returns> protected async override Task<HadoopFileSystemOperationResult> CreateResultAsync(HttpContent content) { JObject contentObject = JObject.Parse(await content.ReadAsStringAsync()).Value<JObject>("FileStatus"); HadoopFileStatusOperationResult result = new HadoopFileStatusOperationResult { Request = CompleteRequest, Name = contentObject.Value<String>("pathSuffix"), AccessTime = new DateTime(1970, 1, 1) + TimeSpan.FromSeconds(contentObject.Value<Int64>("accessTime") / 1000), ModificationTime = new DateTime(1970, 1, 1) + TimeSpan.FromSeconds(contentObject.Value<Int64>("modificationTime") / 1000), Length = contentObject.Value<Int64>("length"), BlockSize = contentObject.Value<Int64>("blockSize"), }; switch (contentObject.Value<String>("type")) { case "FILE": result.EntryType = FileSystemEntryType.File; break; case "DIRECTORY": result.EntryType = FileSystemEntryType.Directory; break; case "SYMLINK": result.EntryType = FileSystemEntryType.Link; break; } return result; }