Example #1
0
        public static MimeType[] Parse(string acceptHeader, MimeTypes mimes)
        {
            string[] splitHeaders = acceptHeader.Split(',');
            List<AcceptType> acceptTypes = new List<AcceptType>(splitHeaders.Length);

            for(int i = 0; i < splitHeaders.Length; i++)
            {
                string[] parms = splitHeaders[i].Split(';');
                AcceptType at = new AcceptType();
                at.Name = parms[0];
                at.Order = i;

                at.Q = parms.Length == 2 ? Convert.ToSingle(parms[1].Substring(2)) : 1;
                acceptTypes.Add(at);
            }

            AcceptType appXml = acceptTypes.Find(delegate(AcceptType at) { return at.Name == "application/xml"; });
            if (appXml != null)
            {
                Regex regEx = new Regex(@"\+xml$");

                int appXmlIndex;
                int idx = appXmlIndex = acceptTypes.IndexOf(appXml);

                while(idx < acceptTypes.Count)
                {
                    AcceptType at = acceptTypes[idx];
                    if (at.Q < appXml.Q)
                    {
                        break;
                    }

                    if (regEx.IsMatch(at.Name))
                    {
                        acceptTypes.Remove(at);
                        acceptTypes.Insert(appXmlIndex, at);
                        appXmlIndex++;
                    }
                    idx++;
                }
            }

            List<MimeType> returnTypes = new List<MimeType>();
            acceptTypes.Sort(new Comparison<AcceptType>(descendingAcceptTypes));
            foreach(AcceptType type in acceptTypes)
            {
//                returnTypes.AddRange(mimes.Where(m => m.MimeString == type.Name || m.Synonyms.Contains(type.Name)));                
                returnTypes.AddRange(mimes.FindAll(delegate(MimeType m)
                                                   {
                                                       return
                                                           m.MimeString == type.Name ||
                                                           m.Synonyms.Contains(type.Name);
                                                   }));
            }

            //return returnTypes.Distinct().ToArray();
			return returnTypes.ToArray();
        }
Example #2
0
        private void DoResponse(string format, IControllerBridge bridge)
        {
            Responder hander = new Responder(bridge, bridge.ControllerAction);
            hander.Format = format;
            _renderers[format](hander);

            MimeTypes types = new MimeTypes();
            types.RegisterBuiltinTypes();

//            MimeType usedType = types.Where(mime => mime.Symbol == format).First();
            MimeType usedType = types.FindAll(delegate(MimeType mime) { return mime.Symbol == format; })[0];
            bridge.SetResponseType(usedType);
        }
Example #3
0
        private void DoResponse(string format, IControllerBridge bridge)
        {
            Responder hander = new Responder(bridge, bridge.ControllerAction);

            hander.Format = format;
            _renderers[format](hander);

            MimeTypes types = new MimeTypes();

            types.RegisterBuiltinTypes();

//            MimeType usedType = types.Where(mime => mime.Symbol == format).First();
            MimeType usedType = types.FindAll(delegate(MimeType mime) { return(mime.Symbol == format); })[0];

            bridge.SetResponseType(usedType);
        }