예제 #1
0
        public virtual async Task <SanityQueryResponse <TResult> > FetchAsync <TResult>(string query, object parameters = null, CancellationToken cancellationToken = default)
        {
            if (string.IsNullOrEmpty(query))
            {
                throw new ArgumentException("Query cannot be empty", nameof(query));
            }
            var oQuery = new SanityQuery
            {
                Query  = query,
                Params = parameters
            };
            HttpResponseMessage response = null;

            if (_options.UseCdn)
            {
                // CDN only supports GET requests
                var url = $"data/query/{WebUtility.UrlEncode(_options.Dataset)}?query={WebUtility.UrlEncode(query ?? "")}";
                if (parameters != null)
                {
                    //TODO: Add support for parameters
                }
                response = await _httpQueryClient.GetAsync(url, cancellationToken);
            }
            else
            {
                // Preferred method is POST
                var json = new StringContent(JsonConvert.SerializeObject(oQuery, Formatting.None, SerializerSettings), Encoding.UTF8, "application/json");
                response = await _httpQueryClient.PostAsync($"data/query/{WebUtility.UrlEncode(_options.Dataset)}", json, cancellationToken).ConfigureAwait(false);
            }

            return(await HandleHttpResponseAsync <SanityQueryResponse <TResult> >(response).ConfigureAwait(false));
        }
        public SanityDeleteByQueryMutation(string query)
        {
            if (string.IsNullOrEmpty(query))
            {
                throw new ArgumentException("Query cannot be null when creating a delete by query mutation.", nameof(query));
            }

            Delete = new SanityQuery {
                Query = query
            };
        }