Example #1
0
 /// <summary>
 /// Gets the specified service Pipeline
 /// </summary>
 /// <param name="globalFeignClientPipeline"></param>
 /// <param name="serviceId"></param>
 /// <returns></returns>
 public static IFeignClientPipeline <object> Service(this IGlobalFeignClientPipeline globalFeignClientPipeline, string serviceId)
 {
     if (string.IsNullOrWhiteSpace(serviceId))
     {
         throw new ArgumentException(nameof(serviceId));
     }
     return(globalFeignClientPipeline.GetOrAddServicePipeline(serviceId));
 }
Example #2
0
        public static void ReceivingQueryResult(this IGlobalFeignClientPipeline globalFeignClient)
        {
            globalFeignClient.ReceivingResponse += (sender, e) =>
            {
                if (!typeof(QueryResult).IsAssignableFrom(e.ResultType))
                {
                    return;
                }
                if (e.ResultType == typeof(QueryResult))
                {
                    e.Result = new QueryResult()
                    {
                        StatusCode = e.ResponseMessage.StatusCode
                    };
                    return;
                }

                if (e.ResultType.IsGenericType && e.ResultType.GetGenericTypeDefinition() == typeof(QueryResult <>))
                {
                    QueryResult queryResult;
                    if (e.ResponseMessage.IsSuccessStatusCode)
                    {
                        string json = e.ResponseMessage.Content.ReadAsStringAsync().Result;
                        object data = Newtonsoft.Json.JsonConvert.DeserializeObject(json, e.ResultType.GetGenericArguments()[0]);
                        if (data == null)
                        {
                            queryResult = InvokeQueryResultConstructor(e.ResultType.GetGenericArguments()[0]);
                        }
                        else
                        {
                            queryResult = InvokeQueryResultConstructor(data.GetType(), data);
                        }
                    }
                    else
                    {
                        queryResult = InvokeQueryResultConstructor(e.ResultType.GetGenericArguments()[0]);
                    }
                    queryResult.StatusCode = e.ResponseMessage.StatusCode;
                    e.Result = queryResult;
                }
            };
        }
Example #3
0
 /// <summary>
 /// Gets the specified service Pipeline
 /// </summary>
 /// <param name="globalFeignClientPipeline"></param>
 /// <returns></returns>
 public static IFeignClientPipeline <TService> Service <TService>(this IGlobalFeignClientPipeline globalFeignClientPipeline)
 {
     return(globalFeignClientPipeline.GetOrAddServicePipeline <TService>());
 }