초기 커밋.
This commit is contained in:
71
BokBonCheck/BookSearchService.cs
Normal file
71
BokBonCheck/BookSearchService.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
|
||||
namespace BokBonCheck
|
||||
{
|
||||
public class BookSearchResult
|
||||
{
|
||||
public string SiteName { get; set; }
|
||||
public int BookCount { get; set; }
|
||||
public string SearchTerm { get; set; }
|
||||
public DateTime SearchTime { get; set; }
|
||||
public string ErrorMessage { get; set; }
|
||||
public bool IsSuccess { get; set; }
|
||||
}
|
||||
|
||||
public class BookSearchService
|
||||
{
|
||||
private readonly List<ILibrarySearcher> _searchers;
|
||||
|
||||
public BookSearchService()
|
||||
{
|
||||
_searchers = new List<ILibrarySearcher>
|
||||
{
|
||||
new NamguLibrarySearcher()
|
||||
// 나중에 다른 도서관 검색기를 여기에 추가할 수 있습니다
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<List<BookSearchResult>> SearchBooksAsync(string searchTerm)
|
||||
{
|
||||
var results = new List<BookSearchResult>();
|
||||
|
||||
foreach (var searcher in _searchers)
|
||||
{
|
||||
var result = await searcher.SearchAsync(searchTerm);
|
||||
results.Add(result);
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
public void AddSearcher(ILibrarySearcher searcher)
|
||||
{
|
||||
if (!_searchers.Any(s => s.SiteName == searcher.SiteName))
|
||||
{
|
||||
_searchers.Add(searcher);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveSearcher(string siteName)
|
||||
{
|
||||
var searcher = _searchers.FirstOrDefault(s => s.SiteName == siteName);
|
||||
if (searcher != null)
|
||||
{
|
||||
_searchers.Remove(searcher);
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> GetAvailableSites()
|
||||
{
|
||||
return _searchers.Select(s => s.SiteName).ToList();
|
||||
}
|
||||
|
||||
public void ClearSearchers()
|
||||
{
|
||||
_searchers.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user