src/ZKEACMS.SpiderLog/Service/SearchEngineService.cs
(完整代码) 1KB/* http://www.zkea.net/
* Copyright (c) ZKEASOFT. All rights reserved.
* http://www.zkea.net/licenses */
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using ZKEACMS.SpiderLog.Models;
namespace ZKEACMS.SpiderLog.Service
{
public class SearchEngineService : ISearchEngineService
{
private IEnumerable<SearchEngine> searchEngines;
private readonly ConcurrentDictionary<string, SearchEngine> _searchEnginesDic;
public SearchEngineService()
{
_searchEnginesDic = new ConcurrentDictionary<string, SearchEngine>(StringComparer.OrdinalIgnoreCase);
}
public IEnumerable<SearchEngine> Get()
{
if (searchEngines != null) return searchEngines;
string filePath = Path.Combine(PluginBase.GetPath<SpiderLogPlug>(), "SearchEngines.json");
string json = File.ReadAllText(filePath, Encoding.UTF8);
return searchEngines = JsonSerializer.Deserialize<List<SearchEngine>>(json);
}
public SearchEngine Get(string name)
{
try
{
return _searchEnginesDic.GetOrAdd(name, GetByName);
}
catch
{
return null;
}
}
private SearchEngine GetByName(string name)
{
var engine = Get().FirstOrDefault(m => m.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
if (engine == null) throw new Exception($"{name} does not exist.");
return engine;
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。