예제 #1
0
 public string QueryStringValueType(IUrlParameter value)
 {
     if (value == null)
     {
         return(null);
     }
     return(value.GetString(this._settings));
 }
예제 #2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var request = (IMultiSearchTemplateRequest)value;

            if (request == null)
            {
                return;
            }
            var settings = serializer.GetConnectionSettings();
            var elasticsearchSerializer = settings.RequestResponseSerializer;

            if (elasticsearchSerializer == null)
            {
                return;
            }

            if (request.Operations == null)
            {
                return;
            }

            foreach (var operation in request.Operations.Values)
            {
                var p = operation.RequestParameters;
                string GetString(string key) => p.GetResolvedQueryStringValue(key, settings);

                IUrlParameter indices = request.Index == null || !request.Index.Equals(operation.Index)
                                        ? operation.Index
                                        : null;

                IUrlParameter types = request.Type == null || !request.Type.Equals(operation.Type)
                                        ? operation.Type
                                        : null;

                var searchType = GetString("search_type");
                if (searchType == "query_then_fetch")
                {
                    searchType = null;
                }

                var header = new
                {
                    index              = indices?.GetString(settings),
                    type               = types?.GetString(settings),
                    search_type        = searchType,
                    preference         = GetString("preference"),
                    routing            = GetString("routing"),
                    ignore_unavailable = GetString("ignore_unavailable")
                };

                var headerString = elasticsearchSerializer.SerializeToString(header, SerializationFormatting.None);
                writer.WriteRaw($"{headerString}\n");
                var bodyString = elasticsearchSerializer.SerializeToString(operation, SerializationFormatting.None);
                writer.WriteRaw($"{bodyString}\n");
            }
            ;
        }
예제 #3
0
        private RouteValues Route(string name, IUrlParameter routeValue, bool required = true)
        {
            if (routeValue == null)
            {
                if (this._routeValues.ContainsKey(name))
                {
                    this._routeValues.Remove(name);
                }
                return(this);
            }

            this._routeValues[name] = routeValue;
            return(this);
        }
		private static IEnumerable<AliasDefinition> AliasesPointingToIndex(IConnectionConfigurationValues settings, IUrlParameter indices, IGetAliasResponse aliasesResponse)
		{
			if (!aliasesResponse.IsValid || !aliasesResponse.Indices.HasAny())
				return Enumerable.Empty<AliasDefinition>();

			var indexNames = indices.GetString(settings).Split(',');

			var aliases = new List<AliasDefinition>();
			foreach (var indexName in indexNames)
				if (aliasesResponse.Indices.ContainsKey(indexName))
					aliases.AddRange(aliasesResponse.Indices[indexName]);

			return aliases;
		}
        public void Serialize(ref JsonWriter writer, IMultiSearchTemplateRequest value, IJsonFormatterResolver formatterResolver)
        {
            if (value?.Operations == null)
            {
                return;
            }

            var settings            = formatterResolver.GetConnectionSettings();
            var memoryStreamFactory = settings.MemoryStreamFactory;
            var serializer          = settings.RequestResponseSerializer;

            foreach (var operation in value.Operations.Values)
            {
                var p = operation.RequestParameters;

                string GetString(string key)
                {
                    return(p.GetResolvedQueryStringValue(key, settings));
                }

                IUrlParameter indices = value.Index == null || !value.Index.Equals(operation.Index)
                                        ? operation.Index
                                        : null;

                var searchType = GetString("search_type");
                if (searchType == "query_then_fetch")
                {
                    searchType = null;
                }

                var header = new
                {
                    index              = indices?.GetString(settings),
                    search_type        = searchType,
                    preference         = GetString("preference"),
                    routing            = GetString("routing"),
                    ignore_unavailable = GetString("ignore_unavailable")
                };

                var headerBytes = serializer.SerializeToBytes(header, memoryStreamFactory, SerializationFormatting.None);
                writer.WriteRaw(headerBytes);
                writer.WriteRaw(Newline);
                var bodyBytes = serializer.SerializeToBytes(operation, memoryStreamFactory, SerializationFormatting.None);
                writer.WriteRaw(bodyBytes);
                writer.WriteRaw(Newline);
            }
        }
예제 #6
0
 internal RouteValues Optional(string route, IUrlParameter value) => Route(route, value, false);
예제 #7
0
 internal RouteValues Required(string route, IUrlParameter value) => Route(route, value);
예제 #8
0
 public string Resolve(IUrlParameter urlParameter) => urlParameter.GetString(_connectionSettings);
예제 #9
0
        private static IReadOnlyCollection <string> IndicesPointingToAlias(IConnectionSettingsValues settings, IUrlParameter alias,
                                                                           GetAliasResponse aliasesResponse
                                                                           )
        {
            if (!aliasesResponse.IsValid ||
                !aliasesResponse.Indices.HasAny())
            {
                return(EmptyReadOnly <string> .Collection);
            }

            var aliases = alias.GetString(settings).Split(',');

            var indices = from i in aliasesResponse.Indices
                          where i.Value?.Aliases?.Keys?.Any(key => aliases.Contains(key)) ?? false
                          select settings.Inferrer.IndexName(i.Key);

            return(indices.ToList());
        }
예제 #10
0
 public static void ShouldBeTrue(this bool b, IUrlParameter p) =>
 b.Should().BeTrue(p?.GetString(TestClient.DefaultInMemoryClient.ConnectionSettings) ?? "NULL");
		public string QueryStringValueType(IUrlParameter value)
		{
			if (value == null) return null;
			return value.GetString(this._settings);
		}
예제 #12
0
 public static void ShouldBeTrue(this bool b, IUrlParameter p) =>
 b.Should().BeTrue(p?.GetString(TestClient.GlobalDefaultSettings) ?? "NULL");
예제 #13
0
        private static IEnumerable <AliasDefinition> AliasesPointingToIndex(IConnectionConfigurationValues settings, IUrlParameter indices, IGetAliasResponse aliasesResponse)
        {
            if (!aliasesResponse.IsValid || !aliasesResponse.Indices.HasAny())
            {
                return(Enumerable.Empty <AliasDefinition>());
            }

            var indexNames = indices.GetString(settings).Split(',');

            var aliases = new List <AliasDefinition>();

            foreach (var indexName in indexNames)
            {
                if (aliasesResponse.Indices.ContainsKey(indexName))
                {
                    aliases.AddRange(aliasesResponse.Indices[indexName]);
                }
            }

            return(aliases);
        }
예제 #14
0
 public string Resolve(IUrlParameter urlParameter) => urlParameter.GetString(_elasticsearchClientSettings);