Exemple #1
0
        public async Task <string> Format(HttpRequest request, IModel <string> tokenizer)
        {
            var parser = new HttpQueryParser(new QueryParser <string>(_sessionFactory, tokenizer, _log));
            var query  = await parser.ParseRequest(request);

            var dictionary = new Dictionary <string, object>();

            parser.ParseQuery(query, dictionary);

            return(JsonConvert.SerializeObject(dictionary, Formatting.Indented));
        }
Exemple #2
0
        public async Task <ResponseModel> Read(HttpRequest request, IStringModel model)
        {
            var timer = Stopwatch.StartNew();
            var take  = 100;
            var skip  = 0;

            if (request.Query.ContainsKey("take"))
            {
                take = int.Parse(request.Query["take"]);
            }

            if (request.Query.ContainsKey("skip"))
            {
                skip = int.Parse(request.Query["skip"]);
            }

            IQuery query = await _httpQueryParser.ParseRequest(request);

            if (query == null)
            {
                return(new ResponseModel {
                    MediaType = "application/json", Total = 0
                });
            }

#if DEBUG
            var debug = new Dictionary <string, object>();

            _httpQueryParser.ParseQuery(query, debug);

            _logger.LogInformation(JsonConvert.SerializeObject(debug));
#endif

            using (var readSession = _sessionFactory.CreateReadSession())
            {
                var result = readSession.Read(query, skip, take);

                using (var mem = new MemoryStream())
                {
                    Serialize(result.Docs, mem);

                    return(new ResponseModel
                    {
                        MediaType = "application/json",
                        Documents = result.Docs,
                        Total = result.Total,
                        Body = mem.ToArray()
                    });
                }
            }
        }