コード例 #1
0
        public FileContentMessage(int statusCode, string path) : base(statusCode)
        {
            var fc = new FileContent(path);

            this.Content = fc;

            this.Headers.SetHeader("Content-Type", fc.GetMime());
        }
コード例 #2
0
        private MethodInfo GetBodyAction(string name, ControllerData data, MemoryContentBase content, Method method)
        {
            var candidates = data.Methods.Where(m => m.Name.ToLower() == name.ToLower());

            if (method != Method.GET)
            {
                candidates = candidates.Where(t =>
                {
                    var att = t.GetCustomAttribute <FromMethod>();
                    if (att == null)
                    {
                        return(false);
                    }
                    return(att.Method == method);
                });
            }

            MethodInfo noParam = null;

            foreach (var candidate in candidates)
            {
                var parameters = candidate.GetParameters();
                if (parameters.Length <= 0)
                {
                    noParam = candidate;
                }

                if (parameters.Length > 1)
                {
                    continue;
                }

                var attribute = candidate.GetCustomAttribute <FromJson>();
                if (content is JsonContent && attribute != null)
                {
                    return(candidate);
                }

                if (content is StringContent && parameters[0].ParameterType == typeof(string))
                {
                    return(candidate);
                }

                if (content is FormContent && parameters[0].ParameterType == typeof(FormContent))
                {
                    return(candidate);
                }
            }

            if (noParam != null)
            {
                return(noParam);
            }

            return(null);
        }
コード例 #3
0
        public override ResponseMessage Fire(MemoryContentBase body = null)
        {
            if (this.Action == null)
            {
                return(null);
            }

            // wrap to return response message
            return(this.Action(body));
        }
コード例 #4
0
        public override ResponseMessage Fire(MemoryContentBase content)
        {
            if (!(content is StringContent))
            {
                return(ResponseMessage.Error);
            }

            var stringContent = content as StringContent;

            if (this.Action != null)
            {
                return(this.Action(stringContent.Value));
            }

            return(ResponseMessage.Error);
        }
コード例 #5
0
        public override ResponseMessage Fire(MemoryContentBase content)
        {
            if (!(content is JsonContent))
            {
                return(ResponseMessage.Error);
            }

            var jsonContent = content as JsonContent;

            if (this.Action != null)
            {
                return(this.Action(jsonContent.GetObject <T>()));
            }

            return(ResponseMessage.Error);
        }
コード例 #6
0
 public StringResponseMessage(int statusCode, string message) : base(statusCode)
 {
     this.Headers.SetHeader("Content-Type", "text/html; charset=utf-8");
     this.Content = new StringContent(message);
 }
コード例 #7
0
 public abstract ResponseMessage Fire(MemoryContentBase content);
コード例 #8
0
 public ContentResponseMessage(int statusCode, MemoryContentBase content) : base(statusCode)
 {
     this.Content = content;
 }