/// <summary> /// /// https://msdn.microsoft.com/en-us/library/azure/dn783363.aspx /// </summary> /// <param name="queryString"></param> /// <param name="queryParameters"></param> /// <returns></returns> public async Task<DocDbRestQueryResult> QueryDeviceDbAsync( string queryString, Dictionary<string, Object> queryParams, int pageSize = -1, string continuationToken = null) { WebClient client = new WebClient(); BuildHeaders(client); client.Headers.Set("Content-Type", "application/query+json"); client.Headers.Add(AUTHORIZATION_HEADER_KEY, GetAuthorizationTokenForDeviceManagementCollectionQuery("POST")); client.Headers.Add("x-ms-documentdb-isquery", "true"); if (pageSize >= 0) { client.Headers.Add("x-ms-max-item-count", pageSize.ToString()); } if (continuationToken != null && continuationToken.Length > 0) { client.Headers.Add("x-ms-continuation", continuationToken); } JObject body = new JObject(); body.Add("query", queryString); if(queryParams != null && queryParams.Count > 0) { JArray paramsArray = new JArray(); foreach(string key in queryParams.Keys) { JObject param = new JObject(); param.Add("name", key); param.Add("value", JToken.FromObject(queryParams[key])); paramsArray.Add(param); } body.Add("parameters", paramsArray); } string endpoint = string.Format("{0}dbs/{1}/colls/{2}/docs", _docDbEndpoint, _dbId, _collectionId); DocDbRestQueryResult result = new DocDbRestQueryResult(); string response = await AzureRetryHelper.OperationWithBasicRetryAsync<string>(async() => await client.UploadStringTaskAsync(endpoint, "POST", body.ToString())); JObject responseJobj =JObject.Parse(response); JToken documents = responseJobj.GetValue("Documents"); if (documents != null) { result.Documents = (JArray)documents; } WebHeaderCollection responseHeaders = client.ResponseHeaders; string count = responseHeaders["x-ms-item-count"]; if(!string.IsNullOrEmpty(count)) { result.TotalDocuments = int.Parse(count); } result.ContinuationToken = responseHeaders["x-ms-continuation"]; return result; }
/// <summary> /// /// https://msdn.microsoft.com/en-us/library/azure/dn783363.aspx /// </summary> /// <param name="queryString"></param> /// <param name="queryParameters"></param> /// <returns></returns> public async Task <DocDbRestQueryResult> QueryDeviceDbAsync( string queryString, Dictionary <string, Object> queryParams, int pageSize = -1, string continuationToken = null) { WebClient client = new WebClient(); BuildHeaders(client); client.Headers.Set("Content-Type", "application/query+json"); client.Headers.Add(AUTHORIZATION_HEADER_KEY, GetAuthorizationTokenForDeviceManagementCollectionQuery("POST")); client.Headers.Add("x-ms-documentdb-isquery", "true"); if (pageSize >= 0) { client.Headers.Add("x-ms-max-item-count", pageSize.ToString()); } if (continuationToken != null && continuationToken.Length > 0) { client.Headers.Add("x-ms-continuation", continuationToken); } JObject body = new JObject(); body.Add("query", queryString); if (queryParams != null && queryParams.Count > 0) { JArray paramsArray = new JArray(); foreach (string key in queryParams.Keys) { JObject param = new JObject(); param.Add("name", key); param.Add("value", JToken.FromObject(queryParams[key])); paramsArray.Add(param); } body.Add("parameters", paramsArray); } string endpoint = string.Format("{0}dbs/{1}/colls/{2}/docs", _docDbEndpoint, _dbId, _collectionId); DocDbRestQueryResult result = new DocDbRestQueryResult(); string response = await AzureRetryHelper.OperationWithBasicRetryAsync <string>(async() => await client.UploadStringTaskAsync(endpoint, "POST", body.ToString())); JObject responseJobj = JObject.Parse(response); JToken documents = responseJobj.GetValue("Documents"); if (documents != null) { result.Documents = (JArray)documents; } WebHeaderCollection responseHeaders = client.ResponseHeaders; string count = responseHeaders["x-ms-item-count"]; if (!string.IsNullOrEmpty(count)) { result.TotalDocuments = int.Parse(count); } result.ContinuationToken = responseHeaders["x-ms-continuation"]; return(result); }