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); }
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" }); }); }