public GetIndexQueryUrl ( string operationUrl, string index, string operationName ) : string | ||
operationUrl | string | The operation URL. |
index | string | The index. |
operationName | string | Name of the operation. |
return | string |
public Task DeleteByIndexAsync(string indexName, IndexQuery queryToDelete, bool allowStale) { string path = queryToDelete.GetIndexQueryUrl(url, indexName, "bulk_docs") + "&allowStale=" + allowStale; var request = jsonRequestFactory.CreateHttpJsonRequest( new CreateHttpJsonRequestParams(this, path, "DELETE", credentials, convention) .AddOperationHeaders(OperationsHeaders)); return request.ExecuteRequestAsync() .ContinueWith(task => { var aggregateException = task.Exception; if (aggregateException == null) return task; var e = aggregateException.ExtractSingleInnerException() as WebException; if (e == null) return task; var httpWebResponse = e.Response as HttpWebResponse; if (httpWebResponse != null && httpWebResponse.StatusCode == HttpStatusCode.NotFound) throw new InvalidOperationException("There is no index named: " + indexName, e); return task; }).Unwrap(); }
/// <summary> /// Begins the async query. /// </summary> /// <param name="index">The index.</param> /// <param name="query">The query.</param> /// <param name="includes">The include paths</param> public Task<QueryResult> QueryAsync(string index, IndexQuery query, string[] includes) { EnsureIsNotNullOrEmpty(index, "index"); var path = query.GetIndexQueryUrl(url, index, "indexes"); if (includes != null && includes.Length > 0) { path += "&" + string.Join("&", includes.Select(x => "include=" + x).ToArray()); } var request = jsonRequestFactory.CreateHttpJsonRequest(new CreateHttpJsonRequestParams(this, path, "GET", credentials, convention)); return request.ReadResponseJsonAsync() .ContinueWith(task => { RavenJObject json; try { json = (RavenJObject) task.Result; } catch (AggregateException e) { var we = e.ExtractSingleInnerException() as WebException; if(we != null) { var httpWebResponse = we.Response as HttpWebResponse; if (httpWebResponse != null && httpWebResponse.StatusCode == HttpStatusCode.NotFound) { var text = new StreamReader(httpWebResponse.GetResponseStreamWithHttpDecompression()).ReadToEnd(); if (text.Contains("maxQueryString")) throw new InvalidOperationException(text, e); throw new InvalidOperationException("There is no index named: " + index); } } throw; } return new QueryResult { IsStale = Convert.ToBoolean(json["IsStale"].ToString()), IndexTimestamp = json.Value<DateTime>("IndexTimestamp"), IndexEtag = new Guid(request.ResponseHeaders["ETag"]), Results = ((RavenJArray)json["Results"]).Cast<RavenJObject>().ToList(), TotalResults = Convert.ToInt32(json["TotalResults"].ToString()), IndexName = json.Value<string>("IndexName"), SkippedResults = Convert.ToInt32(json["SkippedResults"].ToString()) }; }); }
/// <summary> /// Begins the async query. /// </summary> /// <param name="index">The index.</param> /// <param name="query">The query.</param> /// <param name="includes">The include paths</param> public Task<QueryResult> QueryAsync(string index, IndexQuery query, string[] includes) { EnsureIsNotNullOrEmpty(index, "index"); var path = query.GetIndexQueryUrl(url, index, "indexes"); if (includes != null && includes.Length > 0) { path += "&" + string.Join("&", includes.Select(x => "include=" + x).ToArray()); } var request = jsonRequestFactory.CreateHttpJsonRequest(this, path, "GET", credentials, convention); return request.ReadResponseStringAsync() .ContinueWith(task => { RavenJObject json; using (var reader = new JsonTextReader(new StringReader(task.Result))) json = (RavenJObject)RavenJToken.Load(reader); return new QueryResult { IsStale = Convert.ToBoolean(json["IsStale"].ToString()), IndexTimestamp = json.Value<DateTime>("IndexTimestamp"), IndexEtag = new Guid(request.ResponseHeaders["ETag"]), Results = ((RavenJArray)json["Results"]).Cast<RavenJObject>().ToList(), TotalResults = Convert.ToInt32(json["TotalResults"].ToString()), IndexName = json.Value<string>("IndexName"), SkippedResults = Convert.ToInt32(json["SkippedResults"].ToString()) }; }); }