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 }); }
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); }