public override MobileBlockResponse HandleRequest(string request, Dictionary <string, string> Body)
        {
            if (request == "")
            {
                return(new MobileBlockResponse()
                {
                    Request = request,
                    Response = JsonConvert.SerializeObject(new ListViewResponse()),
                    TTL = GetAttributeValue("OutputCacheDuration").AsInteger()
                });
            }

            var start = request.AsInteger();
            List <ListElement> groups = GetGroupElements(start);

            var response = new ListViewResponse
            {
                Content = groups,
            };

            if (groups.Any())
            {
                response.NextRequest = (start + 1).ToString();
            }

            return(new MobileBlockResponse()
            {
                Request = request,
                Response = JsonConvert.SerializeObject(response),
                TTL = GetAttributeValue("OutputCacheDuration").AsInteger(),
            });
        }
示例#2
0
        private void MessageHandler_Response(object sender, MobileBlockResponse e)
        {
            var response = e.Response;

            if (_manualRefresh)
            {
                listViewComponent.ItemsSource.Clear();
                _manualRefresh = false;
            }
            try
            {
                ListViewResponse listViewResponse = JsonConvert.DeserializeObject <ListViewResponse>(response);
                if (listViewResponse?.Content == null || !listViewResponse.Content.Any())
                {
                    _endOfList = true;
                    listViewComponent.IsRefreshing = false;
                    return;
                }

                if (!string.IsNullOrWhiteSpace(listViewResponse.NextRequest))
                {
                    _nextRequest = listViewResponse.NextRequest;
                }
                else
                {
                    _nextRequest = null;
                }

                foreach (var listElement in listViewResponse.Content)
                {
                    try
                    {
                        AddElement(listElement);
                    }
                    catch
                    {
                    }
                }
                listViewComponent.IsRefreshing = false;
                listViewComponent.ItemsSource  = listViewComponent.ItemsSource.OrderBy(i => i.Order).ToList();
                listViewComponent.Draw();
            }
            catch (Exception ex)
            {
                _endOfList = true;
                listViewComponent.IsRefreshing = false;
            }
        }
        public MobileBlockResponse HandleRequest(string request, Dictionary <string, string> Body)
        {
            var page = request.AsInteger();

            var listElements = ShowView(page);

            var response = new ListViewResponse
            {
                Content     = listElements,
                NextRequest = (page + 1).ToString()
            };

            return(new MobileBlockResponse()
            {
                Request = request,
                Response = JsonConvert.SerializeObject(response),
                TTL = GetAttributeValue("OutputCacheDuration").AsInteger()
            });
        }
        public override MobileBlockResponse HandleRequest(string request, Dictionary <string, string> Body)
        {
            var splitRequest = request.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

            if (splitRequest.Length < 2)
            {
                return(new MobileBlockResponse() // send nothing if bad request
                {
                    Request = request,
                    Response = JsonConvert.SerializeObject(new List <ListViewResponse>()),
                    TTL = 0
                });
            }

            var parameter = splitRequest[0];
            var page      = splitRequest[1].AsInteger();

            var groupMembers = GetGroupMembers(parameter, page);

            if (groupMembers == null)
            {
                return(new MobileBlockResponse() // send nothing if no members
                {
                    Request = request,
                    Response = JsonConvert.SerializeObject(new List <ListViewResponse>()),
                    TTL = 0
                });
            }

            var response = new ListViewResponse
            {
                Content     = groupMembers,
                NextRequest = string.Format("{0}|{1}", parameter, (page + 1))
            };

            return(new MobileBlockResponse()
            {
                Request = request,
                Response = JsonConvert.SerializeObject(response),
                TTL = 0
            });
        }