private void DownloadTabByType(TabulatureType type)
        {
            var destination = Guid.NewGuid().ToString();

            var searcher = new UltimateGuitarTabSearcher();
            var mre      = new ManualResetEvent(false);

            searcher.SearchComplete += (sender, args) =>
            {
                var entry = searcher.Entries.First();

                var downloader = new UltimateGuitarFileDownloader(entry, destination);
                downloader.DownloadComplete += (o, eventArgs) => mre.Set();
                downloader.Download();
            };

            searcher.Run(SearchContext.DefaulGroupName, SearchContext.DefaultSongName, 0, type, ResultsSortOrder.Alphabetical);

            mre.WaitOne(SearchContext.SearchTimeout);

            using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var file = storage.OpenFile(destination, FileMode.Open))
                {
                    Assert.AreNotEqual(0, file.Length);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Handler for WebClient that parses xml data into specific objects
        ///     throws specific exceptions if error occurs
        /// </summary>
        public void Run(string group, string song, int pageNumber, TabulatureType type, ResultsSortOrder sortBy)
        {
            WebClient client = new WebClient();

            client.DownloadStringCompleted += (s, e) =>
            {
                try
                {
                    if (e.Error == null)
                    {
                        using (XmlReader reader = XmlReader.Create(new StringReader(e.Result)))
                        {
                            while (reader.Read())
                            {
                                if ((reader.Name == "results") && (reader.IsStartElement()))
                                {
                                    Summary = CreateResultSummary(reader);
                                }

                                if ((reader.Name == "result") && (reader.IsStartElement()))
                                {
                                    Entries.Add(CreateResultEntry(reader));
                                }
                            }
                        }
                    }
                }
                catch
                {
                }
                finally
                {
                    InvokeSearchComplete(e);
                }
            };
            Summary = new SearchTabResultSummary();
            Entries = new List <SearchTabResultEntry>();
            client.DownloadStringAsync(new Uri(String.Format(GetRequestTemplate(type, sortBy), group, song, pageNumber)));
        }
Ejemplo n.º 3
0
        private string GetRequestTemplate(TabulatureType tabType, ResultsSortOrder sortBy)
        {
            string requestTemplate;
            string alphabeticalSortParams = "&order_mode=ASC&order=title_srt";

            switch (tabType)
            {
            case TabulatureType.All:
                if (sortBy == ResultsSortOrder.Alphabetical)
                {
                    requestTemplate = RequestTemplateAll + alphabeticalSortParams;
                }
                else
                {
                    requestTemplate = RequestTemplateAll;
                }
                break;

            case TabulatureType.Guitar:
                if (sortBy == ResultsSortOrder.Alphabetical)
                {
                    requestTemplate = RequestTemplateGuitar + alphabeticalSortParams;
                }
                else
                {
                    requestTemplate = RequestTemplateAll;
                }
                break;

            case TabulatureType.Bass:
                if (sortBy == ResultsSortOrder.Alphabetical)
                {
                    requestTemplate = RequestTemplateBass + alphabeticalSortParams;
                }
                else
                {
                    requestTemplate = RequestTemplateAll;
                }
                break;

            case TabulatureType.Chords:
                if (sortBy == ResultsSortOrder.Alphabetical)
                {
                    requestTemplate = RequestTemplateChords + alphabeticalSortParams;
                }
                else
                {
                    requestTemplate = RequestTemplateAll;
                }
                break;

            case TabulatureType.Drum:
                if (sortBy == ResultsSortOrder.Alphabetical)
                {
                    requestTemplate = RequestTemplateDrum + alphabeticalSortParams;
                }
                else
                {
                    requestTemplate = RequestTemplateAll;
                }
                break;

            case TabulatureType.GuitarPro:
                if (sortBy == ResultsSortOrder.Alphabetical)
                {
                    requestTemplate = RequestTemplateGuitarPro + alphabeticalSortParams;
                }
                else
                {
                    requestTemplate = RequestTemplateAll;
                }
                break;

            default:
                requestTemplate = RequestTemplateAll;
                break;
            }

            return(requestTemplate);
        }