コード例 #1
0
 public static void ITEMS_GET <TId, TItem>(this HTTPServer HTTPServer,
                                           HTTPPath UriTemplate,
                                           Dictionary <TId, TItem> Dictionary,
                                           ItemFilterDelegate <TItem> Filter,
                                           ItemsToJSONDelegate <TItem> ToJSONDelegate)
 {
     GET_ITEMS(HTTPServer,
               UriTemplate,
               Dictionary.Select(kvp => kvp.Value),
               Filter,
               ToJSONDelegate);
 }
コード例 #2
0
        public static void GET_ITEMS <TItem>(this HTTPServer HTTPServer,
                                             HTTPPath UriTemplate,
                                             IEnumerable <TItem> Enumeration,
                                             ItemFilterDelegate <TItem> Filter,
                                             ItemsToJSONDelegate <TItem> ToJSONDelegate)
        {
            HTTPServer.AddMethodCallback(HTTPHostname.Any,
                                         HTTPMethod.GET,
                                         UriTemplate,
                                         HTTPContentType.JSON_UTF8,
                                         HTTPDelegate: async Request => {
                var skip = Request.QueryString.GetUInt32("skip");
                var take = Request.QueryString.GetUInt32("take");

                var AllItems = Enumeration.
                               Skip(skip.HasValue ? skip.Value : 0).
                               Where(item => Filter(item));

                if (take.HasValue)
                {
                    AllItems = AllItems.
                               Take(take.Value);
                }

                return(new HTTPResponse.Builder(Request)
                {
                    HTTPStatusCode = HTTPStatusCode.OK,
                    Server = HTTPServer.DefaultServerName,
                    ContentType = HTTPContentType.JSON_UTF8,
                    Content = ToJSONDelegate(AllItems).ToUTF8Bytes(),
                    ETag = "1",
                    CacheControl = "public",
                    //Expires         = "Mon, 25 Jun 2015 21:31:12 GMT",
                    Connection = "close"
                });
            });
        }