Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }