#pragma warning disable CS1591
using System ;
using System.Text.RegularExpressions ;
namespace MediaBrowser.Model.Dlna
{
public partial class SearchCriteria
{
public SearchCriteria ( string search )
{
ArgumentException . ThrowIfNullOrEmpty ( search ) ;
SearchType = SearchType . Unknown ;
string [ ] factors = AndOrRegex ( ) . Split ( search ) ;
foreach ( string factor in factors )
{
string [ ] subFactors = WhiteSpaceRegex ( ) . Split ( factor . Trim ( ) . Trim ( '(' ) . Trim ( ')' ) . Trim ( ) , 3 ) ;
if ( subFactors . Length = = 3 )
{
if ( string . Equals ( "upnp:class" , subFactors [ 0 ] , StringComparison . OrdinalIgnoreCase )
& & ( string . Equals ( "=" , subFactors [ 1 ] , StringComparison . Ordinal ) | | string . Equals ( "derivedfrom" , subFactors [ 1 ] , StringComparison . OrdinalIgnoreCase ) ) )
{
if ( string . Equals ( "\"object.item.imageItem\"" , subFactors [ 2 ] , StringComparison . Ordinal ) | | string . Equals ( "\"object.item.imageItem.photo\"" , subFactors [ 2 ] , StringComparison . OrdinalIgnoreCase ) )
{
SearchType = SearchType . Image ;
}
else if ( string . Equals ( "\"object.item.videoItem\"" , subFactors [ 2 ] , StringComparison . OrdinalIgnoreCase ) )
{
SearchType = SearchType . Video ;
}
else if ( string . Equals ( "\"object.container.playlistContainer\"" , subFactors [ 2 ] , StringComparison . OrdinalIgnoreCase ) )
{
SearchType = SearchType . Playlist ;
}
else if ( string . Equals ( "\"object.container.album.musicAlbum\"" , subFactors [ 2 ] , StringComparison . OrdinalIgnoreCase ) )
{
SearchType = SearchType . MusicAlbum ;
}
}
}
}
}
public SearchType SearchType { get ; set ; }
[GeneratedRegex("\\s")]
private static partial Regex WhiteSpaceRegex ( ) ;
[GeneratedRegex("(and|or)", RegexOptions.IgnoreCase)]
private static partial Regex AndOrRegex ( ) ;
}
}