コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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);
        }