public void BarCommandDoesReturnBarQueue() { var command = new BarCommandV1("Test Command"); var baseUri = new Uri(string.Format("{0}://{1}", "scheme", "host")); var endpointUri = EndpointMapping.GetEndpointUri(baseUri, command); var expectedUri = new Uri(string.Format("{0}/bar_queue", baseUri)); Assert.AreEqual(expectedUri, endpointUri); }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="AspenRequest" />. /// </summary> /// <param name="scope">Alcance de la aplicación que solicita la información.</param> /// <param name="mappingInfo">Valor de la enumeración de donde se extraen la Url y el método.</param> /// <param name="body">Los datos para el cuerpo de la solicitud.</param> /// <param name="endpointParameters">La colección de parámetros para el endpoint.</param> /// <param name="accept">Texto que se envía en la cabecera Accept de la solicitud.</param> /// <param name="contentType">Texto que se envía en la cabecera Content-Type de la solicitud.</param> /// <param name="dataFormat">Formato de los datos que se envian con la solicitud.</param> internal AspenRequest( Scope scope, EndpointMapping mappingInfo, object body = null, EndpointParameters endpointParameters = null, string accept = "application/json", string contentType = "application/json; charset=utf-8", DataFormat dataFormat = DataFormat.Json) : this( new PlaceholderFormatter(mappingInfo.GetEndPointMappingInfo(scope).Resource, endpointParameters).ToString(), mappingInfo.GetEndPointMappingInfo(scope).Method, body, accept, contentType, dataFormat) { }
/// <summary> /// Obtiene la información de mapeo a donde se debe enviar una solicitud al servicio Aspen. /// </summary> /// <param name="mapping">Campo en donde se busca la información de mapeo.</param> /// <param name="scope">Alcance de la aplicación que solicita la información.</param> /// <returns>Tupla donde <c>Resource</c> representa el endpoint de la solicitud y <c>Method</c> el método HTTP esperado por la solicitud.</returns> internal static (string Resource, Method Method) GetEndPointMappingInfo(this EndpointMapping mapping, Scope scope) { string keyName = $"GetEndPointMappingInfo.{scope}.{mapping}"; if (AppDomain.CurrentDomain.GetData(keyName) is KeyValuePair <string, Method> currentValue) { return(currentValue.Key, currentValue.Value); } EndPointMappingInfoAttribute attribute = typeof(EndpointMapping).GetField(mapping.ToString()).GetCustomAttribute <EndPointMappingInfoAttribute>(); if (attribute == null) { throw new InvalidOperationException($"Missing endpoint mapping attribute for: '{mapping}'"); } string prefix = string.Empty; switch (scope) { case Scope.Autonomous: prefix = "/app"; break; case Scope.Delegated: prefix = "/me"; break; case Scope.Anonymous: break; default: throw new ArgumentOutOfRangeException($"The application scope type: '{scope}' unavailable for validation."); } string resource = $"{prefix}/{attribute.Url.TrimStart('/').TrimEnd('/')}"; Method method = attribute.Method; KeyValuePair <string, Method> endpointMappingInfo = new KeyValuePair <string, Method>(resource, method); AppDomain.CurrentDomain.SetData(keyName, endpointMappingInfo); return(resource, method); }
private static void ConfigureMappings() { EndpointMapping.AddMapping("MassTransit.EndpointMapping.Test.Foo.Contract.V1.Commands", "foo_queue"); EndpointMapping.AddMapping("MassTransit.EndpointMapping.Test.Bar.Contract.V1.Commands", "bar_queue"); }
public void Init() { EndpointMapping.AddMapping("MassTransit.EndpointMapping.Test.Foo.Contract.V1.Commands", "foo_queue"); EndpointMapping.AddMapping("MassTransit.EndpointMapping.Test.Bar.Contract.V1.Commands", "bar_queue"); }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="AspenRequest"/> /// </summary> /// <param name="scope">Alcance de la aplicación que solicita la información.</param> /// <param name="mappingInfo">Valor de la enumeración de donde se extraen la Url y el método.</param> /// <param name="endpointParameters">La colección de parámetros para el endpoint.</param> internal AspenRequest(Scope scope, EndpointMapping mappingInfo, EndpointParameters endpointParameters) : this( new PlaceholderFormatter(mappingInfo.GetEndPointMappingInfo(scope).Resource, endpointParameters).ToString(), mappingInfo.GetEndPointMappingInfo(scope).Method) { }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="AspenRequest"/> /// </summary> /// <param name="scope">Alcance de la aplicación que solicita la información.</param> /// <param name="mappingInfo">Valor de la enumeración de donde se extraen la Url y el método.</param> internal AspenRequest(Scope scope, EndpointMapping mappingInfo) : this( mappingInfo.GetEndPointMappingInfo(scope).Resource, mappingInfo.GetEndPointMappingInfo(scope).Method) { }