Пример #1
0
        public static SolidHttpRequest ThrowsException(this SolidHttpRequest request, Func <HttpResponseMessage, bool> predicate)
        {
            request.OnResponse += async(sender, args) =>
            {
                if (predicate(args.Response))
                {
                    var options        = args.Services.GetService <IExceptionMappingSettingsProvider>();
                    var mappingOptions = options.GetMappingOptions();
                    if (mappingOptions.CustomDefaultMapper != null)
                    {
                        dynamic defaultCustomMapper = options.GetMappingOptions().CustomDefaultMapper;
                        var     cex = await defaultCustomMapper.MapException(args.Response, args.Services) as System.Exception;

                        throw cex;
                    }
                    if (mappingOptions.UseModelStateExceptionsAsDefault)
                    {
                        var modelMapper = args.Services.GetServices <IExceptionMapper>()
                                          .OfType <SolidHttpExceptionMapper <SolidHttpRequestModelException> >()
                                          .FirstOrDefault();
                        var mex = await modelMapper.MapException(args.Response, args.Services);

                        throw mex;
                    }
                    var defaultMapper = args.Services.GetServices <IExceptionMapper>()
                                        .OfType <SolidHttpExceptionMapper <SolidHttpRequestException> >()
                                        .FirstOrDefault();
                    var ex = await defaultMapper.MapException(args.Response, args.Services);

                    throw ex;
                }
            };
            return(request);
        }
Пример #2
0
        public static async Task <T> As <T>(this SolidHttpRequest request, SharpCompressOptions options)
        {
            var factory     = new SharpCompressResponseDeserializerFactory(options);
            var deserialize = factory.CreateDeserializer <T>();

            return(await request.As <T>());
        }
Пример #3
0
 public static SolidHttpRequest ThrowsException <T>(this SolidHttpRequest request) where T : System.Exception, new()
 {
     ThrowsException <T>(
         request,
         (r) => !r.IsSuccessStatusCode
         );
     return(request);
 }
Пример #4
0
 public static SolidHttpRequest ThrowsException(this SolidHttpRequest request)
 {
     ThrowsException(
         request,
         (r) => !r.IsSuccessStatusCode
         );
     return(request);
 }
Пример #5
0
        public void InvokeOnRequestCreated(object invoker, SolidHttpRequest request)
        {
            var args = CreateArgs(request);

            foreach (var handler in _events.GetOnRequestCreatedEventHandlers())
            {
                handler(invoker, args);
            }
        }
Пример #6
0
        public static SolidHttpRequest ThrowsException <T>(this SolidHttpRequest request, Func <HttpResponseMessage, bool> predicate) where T : System.Exception, new()
        {
            request.OnResponse += async(sender, args) =>
            {
                if (predicate(args.Response))
                {
                    var exMapper = args.Services.GetServices <IExceptionMapper>()
                                   .OfType <SolidHttpExceptionMapper <T> >()
                                   .FirstOrDefault();
                    var ex = await exMapper.MapException(args.Response, args.Services);

                    throw ex;
                }
            };
            return(request);
        }
Пример #7
0
 public static JsonSerializerSettings GetJsonSerializerSettings(this SolidHttpRequest request)
 {
     return(request.BaseRequest.Properties["JsonSerializerSettings"] as JsonSerializerSettings);
 }
Пример #8
0
 public SolidHttpRequestCreatedEventArgs CreateArgs(SolidHttpRequest request)
 {
     return(new SolidHttpRequestCreatedEventArgs {
         Request = request, Services = _scope
     });
 }
Пример #9
0
 public static DataContractSerializerSettings GetXmlSerializerSettings(this SolidHttpRequest request)
 {
     return(request.BaseRequest.Properties["XmlSerializerSettings"] as DataContractSerializerSettings);
 }