public ISeriesData Search(string series, SearchResultOutput outputType) { byte[] response = null; string seriesSanitized = null; Serialization.IResults results = null; System.Collections.Specialized.NameValueCollection param = null; try { seriesSanitized = Helpers.Search.FormatParameters(series); param = new NameValueCollection(); param.Add("act", "series"); param.Add("stype", "title"); param.Add("session", string.Empty); param.Add("search", seriesSanitized); param.Add("x", "0"); param.Add("y", "0"); // Todo: Check, probably not best practice to convert an enum to string like this. param.Add("output", outputType.ToString().ToLower()); response = Helpers.Downloader.Instance.UploadValues(new Uri(Properties.Resources.SeriesSearchUri), param); if (response != null && response.Length > 0) { using (var serializeResults = new SerializeResults()) { results = serializeResults.Serialize(response); } // Todo: Do a proper word-boundary comparison. var item = results.Items.FirstOrDefault(i => string.Compare(i.Title, series, true) == 0); var info = FetchSeriesData(item.Id); return(info); } else { return(null); } } finally { response = null; seriesSanitized = null; // Todo: Implement IDisposable and dispose. results = null; if (param != null) { param.Clear(); param = null; } } }
public async Task <ISeriesData> SearchAsync(string series, SearchResultOutput outputType) { return(await Task.Run(() => Search(series, outputType))); }