public virtual ILiaraFormatter GetResponseFormatter(Type inputObjectType, ILiaraContext context) { ILiaraFormatter[] formatterArray; if (context.Route != null && context.Route.PathExtension != null) { if (context.Engine.Configuration.Formatters.UrlMap.TryGetValue( context.Route.PathExtension.ToLower(), out formatterArray)) { foreach (var liaraFormatter in formatterArray) { if (liaraFormatter.CanWrite(inputObjectType, context)) { context.Response.Format.MediaType = liaraFormatter.GetDefaultMediaType(); return(liaraFormatter); } } } } foreach (var acceptedMediaType in context.Response.Format.AcceptedMediaTypes) { if (context.Engine.Configuration.Formatters.MediaMap.TryGetValue( MediaType.FromDerivedMediaType(acceptedMediaType).ToString().ToLower(), out formatterArray)) { foreach (var liaraFormatter in formatterArray) { if (liaraFormatter.CanWrite(inputObjectType, context)) { context.Response.Format.MediaType = acceptedMediaType; return(liaraFormatter); } } } } return (context.Engine.Configuration.Formatters.FirstOrDefault( formatter => formatter.CanWrite(inputObjectType, context))); }