private async Task <Response> HandleDeleteDataAsync(dynamic args)
        {
            var dbRequest = (DynDatabaseRequest)CreateDatabaseRequest(args, DatabaseAction.Delete);

            if (dbRequest.State == PermissionState.Denied)
            {
                return(HttpStatusCode.Unauthorized);
            }
            if (!dbRequest.Valid)
            {
                return(HttpStatusCode.BadRequest);
            }
            var dynDbService = new DynamicDatabaseService(ServerContext.KeyValueDbService);
            await dynDbService.DeleteData(dbRequest);

            return(Response.FromJsonString(new JObject().ToString()));
        }
        private async Task <Response> HandlePutDataAsync(dynamic args)
        {
            var dbRequest = (DynDatabaseRequest)CreateDatabaseRequest(args, DatabaseAction.Put);

            if (dbRequest.State == PermissionState.Denied)
            {
                return(HttpStatusCode.Unauthorized);
            }
            if (!dbRequest.Valid)
            {
                return(HttpStatusCode.BadRequest);
            }
            var path = dbRequest.Path;
            // Deserialize data bundle
            JObject dataBundle;

            try
            {
                using (var sr = new StreamReader(Request.Body))
                {
                    var rawJsonData = await sr.ReadToEndAsync();

                    dataBundle = JObject.Parse(rawJsonData);
                }
            }
            catch (JsonSerializationException)
            {
                return(HttpStatusCode.BadRequest);
            }

            // Write data
            var dynDbService = new DynamicDatabaseService(ServerContext.KeyValueDbService);
            var placeResult  = await dynDbService.PlaceData(dataBundle, dbRequest, NodeDataOvewriteMode.Put);

            // Return data written
            return(Response.FromJsonString(placeResult));
        }
        private async Task <Response> HandleGetDataAsync(dynamic args)
        {
            var dbRequest = (DynDatabaseRequest)CreateDatabaseRequest(args, DatabaseAction.Retrieve);

            if (dbRequest.State == PermissionState.Denied)
            {
                return(HttpStatusCode.Unauthorized);
            }
            if (!dbRequest.Valid)
            {
                return(HttpStatusCode.BadRequest);
            }
            // Read query parameters
            var shallow      = (string)Request.Query.shallow == "1";
            var dynDbService = new DynamicDatabaseService(ServerContext.KeyValueDbService);
            var dataBundle   = await dynDbService.GetData(dbRequest, shallow);

            if (dataBundle == null)
            {
                return(Response.FromJsonString("{}"));
            }

            return(Response.FromJsonString(dataBundle.ToString()));
        }