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)
 {
 }
Esempio n. 3
0
        /// <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)
 {
 }