示例#1
0
        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;
                }
            }
        }
示例#2
0
 public async Task <ISeriesData> SearchAsync(string series, SearchResultOutput outputType)
 {
     return(await Task.Run(() => Search(series, outputType)));
 }