Files
OpenQuery/Services/SearxngClient.cs
2026-03-18 09:28:14 +01:00

30 lines
883 B
C#

using System.Text.Json;
using OpenQuery.Models;
namespace OpenQuery.Services;
public class SearxngClient
{
private readonly HttpClient _httpClient;
private readonly string _baseUrl;
public SearxngClient(string baseUrl)
{
_baseUrl = baseUrl.TrimEnd('/');
_httpClient = new HttpClient();
}
public async Task<List<SearxngResult>> SearchAsync(string query, int limit = 10)
{
var encodedQuery = Uri.EscapeDataString(query);
var url = $"{_baseUrl}/search?q={encodedQuery}&format=json";
var response = await _httpClient.GetAsync(url);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
var results = JsonSerializer.Deserialize<SearxngRoot>(json, AppJsonContext.Default.SearxngRoot);
return results?.Results?.Take(limit).ToList() ?? [];
}
}