mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
2. Manually replace "#" with "%23" to solve the similar issue in Explorer plugin 3. Add GetAsync method with Uri as argument 4. Remove unused encoding argument 5. Change exception type for WebSearch Plguin 6. Update Comment
56 lines
No EOL
1.8 KiB
C#
56 lines
No EOL
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using Flow.Launcher.Infrastructure.Http;
|
|
using Flow.Launcher.Infrastructure.Logger;
|
|
using System.Net.Http;
|
|
|
|
namespace Flow.Launcher.Plugin.WebSearch.SuggestionSources
|
|
{
|
|
public class Google : SuggestionSource
|
|
{
|
|
public override async Task<List<string>> Suggestions(string query)
|
|
{
|
|
string result;
|
|
try
|
|
{
|
|
const string api = "https://www.google.com/complete/search?output=chrome&q=";
|
|
result = await Http.GetAsync(api + Uri.EscapeUriString(query)).ConfigureAwait(false);
|
|
}
|
|
catch (HttpRequestException e)
|
|
{
|
|
Log.Exception("|Google.Suggestions|Can't get suggestion from google", e);
|
|
return new List<string>();
|
|
}
|
|
if (string.IsNullOrEmpty(result)) return new List<string>();
|
|
JContainer json;
|
|
try
|
|
{
|
|
json = JsonConvert.DeserializeObject(result) as JContainer;
|
|
}
|
|
catch (JsonSerializationException e)
|
|
{
|
|
Log.Exception("|Google.Suggestions|can't parse suggestions", e);
|
|
return new List<string>();
|
|
}
|
|
if (json != null)
|
|
{
|
|
var results = json[1] as JContainer;
|
|
if (results != null)
|
|
{
|
|
return results.OfType<JValue>().Select(o => o.Value).OfType<string>().ToList();
|
|
}
|
|
}
|
|
return new List<string>();
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return "Google";
|
|
}
|
|
}
|
|
} |