|
5 | 5 | using System.Net; |
6 | 6 | using System.Threading; |
7 | 7 | using System.Threading.Tasks; |
8 | | -using Interfaces.IO; |
9 | 8 | using MediaBrowser.Common.Net; |
10 | 9 | using MediaBrowser.Controller.Sync; |
| 10 | +using MediaBrowser.Model.IO; |
11 | 11 | using MediaBrowser.Model.Logging; |
12 | 12 | using MediaBrowser.Model.MediaInfo; |
13 | 13 | using MediaBrowser.Model.Net; |
@@ -105,23 +105,28 @@ public async Task<Stream> GetFile(string id, SyncTarget target, IProgress<double |
105 | 105 | }); |
106 | 106 | } |
107 | 107 |
|
108 | | - public async Task<QueryResult<FileMetadata>> GetFiles(FileQuery query, SyncTarget target, CancellationToken cancellationToken) |
| 108 | + public async Task<QueryResult<FileSystemMetadata>> GetFiles(string[] pathParts, SyncTarget target, CancellationToken cancellationToken) |
109 | 109 | { |
110 | 110 | try |
111 | 111 | { |
112 | | - return await TryGetFiles(query, target, cancellationToken); |
| 112 | + return await TryGetFiles(pathParts, target, cancellationToken); |
113 | 113 | } |
114 | 114 | catch (HttpException ex) |
115 | 115 | { |
116 | 116 | if (ex.StatusCode == HttpStatusCode.NotFound) |
117 | 117 | { |
118 | | - return new QueryResult<FileMetadata>(); |
| 118 | + return new QueryResult<FileSystemMetadata>(); |
119 | 119 | } |
120 | 120 |
|
121 | 121 | throw; |
122 | 122 | } |
123 | 123 | } |
124 | 124 |
|
| 125 | + public Task<QueryResult<FileSystemMetadata>> GetFiles(SyncTarget target, CancellationToken cancellationToken) |
| 126 | + { |
| 127 | + return GetFiles(null, target, cancellationToken); |
| 128 | + } |
| 129 | + |
125 | 130 | public async Task<SyncedFileInfo> GetSyncedFileInfo(string id, SyncTarget target, CancellationToken cancellationToken) |
126 | 131 | { |
127 | 132 | _logger.Debug("Getting synced file info for {0} from {1}", id, target.Name); |
@@ -215,74 +220,85 @@ private static async Task<byte[]> FillBuffer(Stream stream, CancellationToken ca |
215 | 220 | return buffer; |
216 | 221 | } |
217 | 222 |
|
218 | | - private async Task<QueryResult<FileMetadata>> TryGetFiles(FileQuery query, SyncTarget target, CancellationToken cancellationToken) |
| 223 | + private async Task<QueryResult<FileSystemMetadata>> TryGetFiles(string[] pathParts, SyncTarget target, CancellationToken cancellationToken) |
219 | 224 | { |
220 | 225 | var oneDriveCredentials = CreateOneDriveCredentials(target); |
221 | 226 |
|
222 | | - if (!string.IsNullOrEmpty(query.Id)) |
| 227 | + ////if (!string.IsNullOrEmpty(query.Id)) |
| 228 | + ////{ |
| 229 | + //// return await GetFileById(query.Id, oneDriveCredentials, cancellationToken); |
| 230 | + ////} |
| 231 | + |
| 232 | + var fullPath = FindPathFromFileQuery(pathParts, target); |
| 233 | + |
| 234 | + if (fullPath != null && fullPath.Length > 0) |
223 | 235 | { |
224 | | - return await GetFileById(query.Id, oneDriveCredentials, cancellationToken); |
| 236 | + return await GetFileByPath(fullPath, oneDriveCredentials, cancellationToken); |
225 | 237 | } |
226 | 238 |
|
227 | | - if (query.FullPath != null && query.FullPath.Length > 0) |
| 239 | + return await GetAllFiles(oneDriveCredentials, cancellationToken); |
| 240 | + } |
| 241 | + |
| 242 | + private string FindPathFromFileQuery(string[] parts, SyncTarget target) |
| 243 | + { |
| 244 | + if (parts != null && parts.Length > 0) |
228 | 245 | { |
229 | | - var path = GetFullPath(query.FullPath); |
230 | | - return await GetFileByPath(path, oneDriveCredentials, cancellationToken); |
| 246 | + return GetFullPath(parts); |
231 | 247 | } |
232 | 248 |
|
233 | | - return await GetAllFiles(oneDriveCredentials, cancellationToken); |
| 249 | + return string.Empty; |
234 | 250 | } |
235 | 251 |
|
236 | | - private async Task<QueryResult<FileMetadata>> GetFileById(string id, OneDriveCredentials oneDriveCredentials, CancellationToken cancellationToken) |
| 252 | + private async Task<QueryResult<FileSystemMetadata>> GetFileById(string id, OneDriveCredentials oneDriveCredentials, CancellationToken cancellationToken) |
237 | 253 | { |
238 | 254 | var viewChangeResult = await _oneDriveApi.ViewChangeById(id, oneDriveCredentials, cancellationToken); |
239 | | - var viewChanges = viewChangeResult.value.Select(CreateFileMetadata).ToArray(); |
| 255 | + var viewChanges = viewChangeResult.value.Select(CreateFileSystemMetadata).ToArray(); |
240 | 256 |
|
241 | | - return new QueryResult<FileMetadata> |
| 257 | + return new QueryResult<FileSystemMetadata> |
242 | 258 | { |
243 | 259 | Items = viewChanges, |
244 | 260 | TotalRecordCount = viewChanges.Length |
245 | 261 | }; |
246 | 262 | } |
247 | 263 |
|
248 | | - private async Task<QueryResult<FileMetadata>> GetFileByPath(string path, OneDriveCredentials oneDriveCredentials, CancellationToken cancellationToken) |
| 264 | + private async Task<QueryResult<FileSystemMetadata>> GetFileByPath(string path, OneDriveCredentials oneDriveCredentials, CancellationToken cancellationToken) |
249 | 265 | { |
250 | 266 | var viewChangeResult = await _oneDriveApi.ViewChangeByPath(path, oneDriveCredentials, cancellationToken); |
251 | | - var viewChanges = viewChangeResult.value.Select(CreateFileMetadata).ToArray(); |
| 267 | + var viewChanges = viewChangeResult.value.Select(CreateFileSystemMetadata).ToArray(); |
252 | 268 |
|
253 | | - return new QueryResult<FileMetadata> |
| 269 | + return new QueryResult<FileSystemMetadata> |
254 | 270 | { |
255 | 271 | Items = viewChanges, |
256 | 272 | TotalRecordCount = viewChanges.Length |
257 | 273 | }; |
258 | 274 | } |
259 | 275 |
|
260 | | - private async Task<QueryResult<FileMetadata>> GetAllFiles(OneDriveCredentials oneDriveCredentials, CancellationToken cancellationToken) |
| 276 | + private async Task<QueryResult<FileSystemMetadata>> GetAllFiles(OneDriveCredentials oneDriveCredentials, CancellationToken cancellationToken) |
261 | 277 | { |
262 | 278 | var viewChangeResult = new ViewChangesResult { HasMoreChanges = true }; |
263 | | - var files = new List<FileMetadata>(); |
| 279 | + var files = new List<FileSystemMetadata>(); |
264 | 280 |
|
265 | 281 | while (viewChangeResult.HasMoreChanges) |
266 | 282 | { |
267 | 283 | viewChangeResult = await _oneDriveApi.ViewChanges(viewChangeResult.Token, oneDriveCredentials, cancellationToken); |
268 | | - var newFiles = viewChangeResult.value.Select(CreateFileMetadata); |
| 284 | + var newFiles = viewChangeResult.value.Select(CreateFileSystemMetadata); |
269 | 285 | files.AddRange(newFiles); |
270 | 286 | } |
271 | 287 |
|
272 | | - return new QueryResult<FileMetadata> |
| 288 | + return new QueryResult<FileSystemMetadata> |
273 | 289 | { |
274 | 290 | Items = files.ToArray(), |
275 | 291 | TotalRecordCount = files.Count |
276 | 292 | }; |
277 | 293 | } |
278 | 294 |
|
279 | | - private FileMetadata CreateFileMetadata(ViewChange viewChange) |
| 295 | + private FileSystemMetadata CreateFileSystemMetadata(ViewChange viewChange) |
280 | 296 | { |
281 | | - return new FileMetadata |
| 297 | + return new FileSystemMetadata |
282 | 298 | { |
283 | | - Id = viewChange.id, |
| 299 | + FullName = viewChange.id, |
284 | 300 | Name = viewChange.name, |
285 | | - IsFolder = viewChange.folder != null |
| 301 | + IsDirectory = viewChange.folder != null |
286 | 302 | }; |
287 | 303 | } |
288 | 304 |
|
|
0 commit comments