/// <summary> /// Gets the library group from the specified <paramref name="libraryId" />. /// </summary> /// <param name="libraryId">The unique library identifier.</param> /// <param name="cancellationToken">A token that allows the search to be cancelled.</param> /// <returns> /// An instance of <see cref="T:Microsoft.Web.LibraryManager.Contracts.ILibraryGroup" /> or <code>null</code>. /// </returns> public async Task <ILibrary> GetLibraryAsync(string libraryId, CancellationToken cancellationToken) { ILibrary library; if (libraryId.Contains("://")) { library = new FileSystemLibrary { Name = libraryId, ProviderId = _provider.Id, Files = await GetFilesAsync(libraryId).ConfigureAwait(false) }; return(library); } string path = Path.Combine(_provider.HostInteraction.WorkingDirectory, libraryId); if (!_underTest && !File.Exists(path) && !Directory.Exists(path)) { return(null); } library = new FileSystemLibrary { Name = libraryId, ProviderId = _provider.Id, Files = await GetFilesAsync(path).ConfigureAwait(false) }; return(library); }
/// <summary> /// Gets the library group from the specified <paramref name="libraryId" />. /// </summary> /// <param name="libraryId">The unique library identifier.</param> /// <param name="cancellationToken">A token that allows the search to be cancelled.</param> /// <returns> /// An instance of <see cref="T:Microsoft.Web.LibraryManager.Contracts.ILibraryGroup" /> or <code>null</code>. /// </returns> public async Task <ILibrary> GetLibraryAsync(string libraryId, CancellationToken cancellationToken) { ILibrary library; try { if (string.IsNullOrEmpty(libraryId) || libraryId.IndexOfAny(Path.GetInvalidPathChars()) >= 0) { throw new InvalidLibraryException(libraryId, _provider.Id); } if (libraryId.Contains("://")) { library = new FileSystemLibrary { Name = libraryId, ProviderId = _provider.Id, Files = await GetFilesAsync(libraryId).ConfigureAwait(false) }; return(library); } string path = Path.Combine(_provider.HostInteraction.WorkingDirectory, libraryId); if (!_underTest && !File.Exists(path) && !Directory.Exists(path)) { throw new InvalidLibraryException(libraryId, _provider.Id); } library = new FileSystemLibrary { Name = libraryId, ProviderId = _provider.Id, Files = await GetFilesAsync(path).ConfigureAwait(false) }; } catch (Exception) { throw new InvalidLibraryException(libraryId, _provider.Id); } return(library); }