public virtual IMedia <T> SelectMedia(CurrentMimeType mimeTypes) { foreach (var acceptType in mimeTypes.AcceptTypes) { var candidates = _media.Where(x => x.Mimetypes.Contains(acceptType)); if (candidates.Any()) { var writer = candidates.FirstOrDefault(x => x.MatchesRequest()); if (writer != null) { _logger.DebugMessage(() => new WriterChoice(acceptType, writer, writer.Condition)); return(writer); } _logger.DebugMessage(() => NoWritersMatch.For(acceptType, candidates)); } } if (mimeTypes.AcceptsAny()) { var media = _media.FirstOrDefault(x => x.MatchesRequest()); _logger.DebugMessage(() => new WriterChoice(MimeType.Any.Value, media, media.Condition)); return(media); } return(null); }
public static NoWritersMatch For <T>(string acceptType, IEnumerable <IMediaWriter <T> > candidates) { var match = new NoWritersMatch { WriterList = candidates.Select(writer => { return(Description.For(writer).Title); }).Join(", ") }; match.MimeType = acceptType; return(match); }
public static NoWritersMatch For <T>(string acceptType, IEnumerable <IMedia <T> > candidates) { var match = new NoWritersMatch { WriterList = candidates.Select(writer => { var title = Description.For(writer).Title; var condition = Description.For(writer.Condition).Title; return("{0} ({1})".ToFormat(title, condition)); }).Join(", ") }; match.MimeType = acceptType; return(match); }