public static QuestionMin[] Search(string title, IEnumerable<string> tags = null)
{
if (quota <= 0) return null;
var url = $"{apiUrl}similar?pagesize=100&order=desc&sort=relevance&site=stackoverflow";
if (!string.IsNullOrWhiteSpace(Configuration.SeApiKey))
{
url += $"&key={Configuration.SeApiKey}";
}
url += $"&filter={searchFilter}";
url += "&title=" + WebUtility.UrlEncode(title);
if (tags != null)
{
url += "&tagged=";
foreach (var tag in tags)
{
url += WebUtility.UrlEncode(tag) + ";";
}
}
var json = SendReq(url);
var data = JsonSerializer.DeserializeFromString<Dictionary<string, object>>(json);
int.TryParse((string)data["quota_remaining"], out quota);
var qsData = JsonSerializer.DeserializeFromString<Dictionary<string, Dictionary<string, object>[]>>(json);
var qs = new List<QuestionMin>();
foreach (var q in qsData["items"])
{
var qTagsStr = (string)q["tags"];
qTagsStr = qTagsStr.Remove(0, 1);
qTagsStr = qTagsStr.Substring(0, qTagsStr.Length - 1);
qs.Add(new QuestionMin
{
ID = uint.Parse((string)q["question_id"]),
Title = (string)q["title"],
Body = (string)q["body"],
Tags = qTagsStr.Split(','),
Score = int.Parse((string)q["score"]),
AnswerCount = ushort.Parse((string)q["answer_count"])
});
}
return qs.ToArray();
}