public static async Task <IList <string> > ProcessAsync(IOwinContext context, WebMediaType mediaType, string filterField, string op, int?limit, WebSortOrder?order)
        {
            switch (mediaType)
            {
            case WebMediaType.Drive:
                return(AutoSuggestion.GetValuesForField(filterField, await GetFileSystemDrives.ProcessAsync(context, null, order), op, limit).ToList());

            case WebMediaType.Movie:
                return(AutoSuggestion.GetValuesForField(filterField, await GetMoviesDetailed.ProcessAsync(context, null, null, order), op, limit).ToList());

            case WebMediaType.MusicAlbum:
                return(AutoSuggestion.GetValuesForField(filterField, await GetMusicAlbumsBasic.ProcessAsync(context, null, null, order), op, limit).ToList());

            case WebMediaType.MusicArtist:
                return(AutoSuggestion.GetValuesForField(filterField, await GetMusicArtistsDetailed.ProcessAsync(context, null, null, order), op, limit).ToList());

            case WebMediaType.MusicTrack:
                return(AutoSuggestion.GetValuesForField(filterField, await GetMusicTracksDetailed.ProcessAsync(context, null, null, order), op, limit).ToList());

            case WebMediaType.Picture:
                return(AutoSuggestion.GetValuesForField(filterField, await GetPicturesDetailed.ProcessAsync(context, null, null, null), op, limit).ToList());

            case WebMediaType.Playlist:
                return(AutoSuggestion.GetValuesForField(filterField, await GetPlaylists.ProcessAsync(context), op, limit).ToList());

            case WebMediaType.TVEpisode:
                return(AutoSuggestion.GetValuesForField(filterField, await GetTVEpisodesDetailed.ProcessAsync(context, null, null, order), op, limit).ToList());

            case WebMediaType.TVShow:
                return(AutoSuggestion.GetValuesForField(filterField, await GetTVShowsDetailed.ProcessAsync(context, null, null, order), op, limit).ToList());

            default:
                throw new BadRequestException(string.Format("GetFilterValues() called with unsupported mediaType='{0}' filterField='{1}' op='{2}' limit='{3}'", mediaType, filterField, op, limit));
            }
        }