Beispiel #1
0
        private ParsedArtistQuery ParseTextQuery(string query)
        {
            if (string.IsNullOrWhiteSpace(query))
            {
                return(new ParsedArtistQuery());
            }

            var trimmed = query.Trim();

            var term = SearchWord.GetTerm(trimmed, "id");

            if (term == null)
            {
                var trimmedLc = trimmed.ToLowerInvariant();

                // Optimization: check prefix, in most cases the user won't be searching by URL
                if (trimmedLc.StartsWith("/ar/") || trimmedLc.StartsWith("http"))
                {
                    var entryId = entryUrlParser.Parse(trimmed, allowRelative: true);

                    if (entryId.EntryType == EntryType.Artist)
                    {
                        return new ParsedArtistQuery {
                                   Id = entryId.Id
                        }
                    }
                    ;
                }

                if (trimmedLc.StartsWith("http") || trimmedLc.StartsWith("mylist/") || trimmedLc.StartsWith("user/"))
                {
                    var extUrl = new ArtistExternalUrlParser().GetExternalUrl(trimmed);

                    if (extUrl != null)
                    {
                        return new ParsedArtistQuery {
                                   ExternalLinkUrl = extUrl
                        }
                    }
                    ;
                }
            }
            else
            {
                switch (term.PropertyName)
                {
                case "id":
                    return(new ParsedArtistQuery {
                        Id = PrimitiveParseHelper.ParseIntOrDefault(term.Value, 0)
                    });
                }
            }

            return(new ParsedArtistQuery {
                Name = trimmed
            });
        }
Beispiel #2
0
        private ParsedArtistQuery FindExternalUrl(string trimmed, string trimmedLc)
        {
            if (trimmedLc.StartsWith("http") || trimmedLc.StartsWith("mylist/") || trimmedLc.StartsWith("user/") || trimmedLc.StartsWith("t/"))
            {
                var extUrl = new ArtistExternalUrlParser().GetExternalUrl(trimmed);

                if (extUrl != null)
                {
                    return new ParsedArtistQuery {
                               ExternalLinkUrl = extUrl
                    }
                }
                ;
            }
            return(null);
        }
        private void TestGetExternalUrl(string input, string expected)
        {
            var result = new ArtistExternalUrlParser().GetExternalUrl(input);

            result.Should().Be(expected, input);
        }
        private void TestGetExternalUrl(string input, string expected)
        {
            var result = new ArtistExternalUrlParser().GetExternalUrl(input);

            Assert.AreEqual(expected, result, input);
        }