コード例 #1
0
 protected HeadResourceReducerBase(IWebClientWrapper webClientWrapper, IStore store, IMinifier minifier, IUriBuilder uriBuilder)
 {
     WebClientWrapper = webClientWrapper;
     this.uriBuilder  = uriBuilder;
     this.minifier    = minifier;
     this.store       = store;
 }
コード例 #2
0
        public string Request(IUriBuilder uriBuilder, HttpMethod method, Dictionary<string, object> parameters, byte[] body)
        {
            Func<int, string, string> buildExceptionMessage;
            var request = BuildRequest(uriBuilder, method, parameters, body, out buildExceptionMessage);

            return GetContent(request, buildExceptionMessage);
        }
コード例 #3
0
        public DbDiskCache(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder) : base(fileWrapper, configuration, uriBuilder, null)
        {
            RRTracer.Trace("Creating db disk cache");
            const int interval = 1000 * 60 * 5;

            timer = new Timer(PurgeOldFiles, null, 0, interval);
        }
コード例 #4
0
 public ReducedContentHandler(IRRConfiguration config, IHostingEnvironmentWrapper hostingEnvironment, IUriBuilder uriBuilder, IStore store)
 {
     this.config = config;
     this.hostingEnvironment = hostingEnvironment;
     this.uriBuilder = uriBuilder;
     this.store = store;
 }
コード例 #5
0
 public ReducedContentHandler(IRRConfiguration config, IHostingEnvironmentWrapper hostingEnvironment, IUriBuilder uriBuilder, IStore store)
 {
     this.config             = config;
     this.hostingEnvironment = hostingEnvironment;
     this.uriBuilder         = uriBuilder;
     this.store = store;
 }
コード例 #6
0
        private static WebRequest BuildRequest(IUriBuilder uriBuilder, HttpMethod method, Dictionary <string, object> parameters, byte[] body, string accessToken, out Func <int, string, string> buildExceptionMessage)
        {
            var uri     = uriBuilder.AddQueryParameters(parameters).Build();
            var request = WebRequest.Create(uri);

            request.Method = method.GetParameterName();

            request.ContentType = "application/json";

            body = body ?? new byte[0];
            if (method == HttpMethod.Post && body.Length > 0)
            {
                request.ContentLength = body.Length;
                using (var requestStream = request.GetRequestStream())
                {
                    requestStream.Write(body, 0, body.Length);
                    requestStream.Flush();
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.Headers.Add("Authorization", "OAuth " + accessToken);

            buildExceptionMessage = (statusCode, content) =>
                                    string.Format("WebRequest exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uri.AbsoluteUri, method, statusCode, content);
            return(request);
        }
コード例 #7
0
        public string Request(IUriBuilder uriBuilder, HttpMethod method, Dictionary <string, object> parameters, byte[] body, string accessToken)
        {
            Func <int, string, string> buildExceptionMessage;
            var request = BuildRequest(uriBuilder, method, parameters, body, accessToken, out buildExceptionMessage);

            return(GetContent(request, buildExceptionMessage));
        }
コード例 #8
0
 public GoogleReaderClientLogin(string username, string password, IHttpService httpService, IUriBuilder urlBuilder)
 {
     Username = username;
     Password = password;
     _httpService = httpService;
     _urlBuilder = urlBuilder;
 }
コード例 #9
0
ファイル: DbDiskCache.cs プロジェクト: ybhatti/RequestReduce
 public DbDiskCache(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder) : base(fileWrapper, configuration, uriBuilder, null)
 {
     RRTracer.Trace("Creating db disk cache");
     const int interval = 1000*60*5;
     timer = new Timer(PurgeOldFiles, null, 0, interval);
     _cacheLock = new ReaderWriterLockSlim();
 }
コード例 #10
0
 public SpriteManager(IWebClientWrapper webClientWrapper, IRRConfiguration config, IUriBuilder uriBuilder, IStore store)
 {
     this.webClientWrapper = webClientWrapper;
     this.uriBuilder = uriBuilder;
     this.store = store;
     this.config = config;
     SpriteContainer = new SpriteContainer(webClientWrapper);
 }
コード例 #11
0
 public DashboardHandler(IRRConfiguration config, IIpFilter ipFilter, IReducingQueue queue, IReductionRepository repo, IUriBuilder uriBuilder)
 {
     this.config     = config;
     this.ipFilter   = ipFilter;
     this.queue      = queue;
     this.repo       = repo;
     this.uriBuilder = uriBuilder;
 }
コード例 #12
0
 public DashboardHandler(IRRConfiguration config, IIpFilter ipFilter, IReducingQueue queue, IReductionRepository repo, IUriBuilder uriBuilder)
 {
     this.config = config;
     this.ipFilter = ipFilter;
     this.queue = queue;
     this.repo = repo;
     this.uriBuilder = uriBuilder;
 }
コード例 #13
0
 public ResponseTransformer(IReductionRepository reductionRepository, IReducingQueue reducingQueue, HttpContextBase context, IRRConfiguration config, IUriBuilder uriBuilder)
 {
     this.reductionRepository = reductionRepository;
     this.reducingQueue       = reducingQueue;
     this.context             = context;
     this.config     = config;
     this.uriBuilder = uriBuilder;
 }
コード例 #14
0
 public SqlServerStore(IUriBuilder uriBuilder, IFileRepository repository, IStore fileStore, IReductionRepository reductionRepository)
 {
     RRTracer.Trace("Sql Server Store Created.");
     this.uriBuilder = uriBuilder;
     this.repository = repository;
     this.fileStore = fileStore;
     this.reductionRepository = reductionRepository;
 }
コード例 #15
0
        public Stream RequestStream(IUriBuilder uriBuilder, HttpMethod method, Dictionary<string, object> parameters, byte[] body)
        {
            Func<int, string, string> buildExceptionMessage;
            var request = BuildRequest(uriBuilder, method, parameters, body, out buildExceptionMessage);

            var response = GetResponse(request, (statusCode, content) => string.Format("RequestStream exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uriBuilder.Build(), method, statusCode, content));
            return response.GetResponseStream();
        }
コード例 #16
0
 public SqlServerStore(IUriBuilder uriBuilder, IFileRepository repository, LocalDiskStore fileStore, IReductionRepository reductionRepository)
 {
     RRTracer.Trace("Sql Server Store Created.");
     this.uriBuilder          = uriBuilder;
     this.repository          = repository;
     FileStore                = fileStore;
     this.reductionRepository = reductionRepository;
 }
        public HateoasLinksBuilder(IUriBuilder uriBuilder)
        {
            Transformations = new Dictionary <string, Func <TResource, TEntity, HateoasLink> >();
            Lambdas         = new Dictionary <string, Func <TResource, HateoasLink> >();
            Links           = new Dictionary <string, HateoasLink>();

            UriBuilder = uriBuilder;
        }
コード例 #18
0
 public LocalDiskStore(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder)
 {
     this.fileWrapper = fileWrapper;
     this.configuration = configuration;
     configuration.PhysicalPathChange += SetupWatcher;
     this.uriBuilder = uriBuilder;
     SetupWatcher();
 }
コード例 #19
0
 public FlushHandler(IRRConfiguration configuration, IHostingEnvironmentWrapper hostingEnvironment, IIpFilter ipFilter, IReducingQueue queue, IUriBuilder uriBuilder, IStore store)
 {
     this.configuration = configuration;
     this.hostingEnvironment = hostingEnvironment;
     this.ipFilter = ipFilter;
     this.queue = queue;
     this.uriBuilder = uriBuilder;
     this.store = store;
 }
コード例 #20
0
ファイル: Reducer.cs プロジェクト: colintho/RequestReduce
 public Reducer(IWebClientWrapper webClientWrapper, IStore store, IMinifier minifier, ISpriteManager spriteManager, ICssImageTransformer cssImageTransformer, IUriBuilder uriBuilder)
 {
     this.webClientWrapper = webClientWrapper;
     this.cssImageTransformer = cssImageTransformer;
     this.uriBuilder = uriBuilder;
     this.spriteManager = spriteManager;
     this.minifier = minifier;
     this.store = store;
 }
コード例 #21
0
        public Stream RequestStream(IUriBuilder uriBuilder, HttpMethod method, Dictionary <string, object> parameters, byte[] body, string accessToken)
        {
            Func <int, string, string> buildExceptionMessage;
            var request = BuildRequest(uriBuilder, method, parameters, body, accessToken, out buildExceptionMessage);

            var response = GetResponse(request, (statusCode, content) => string.Format("RequestStream exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uriBuilder.Build(), method, statusCode, content));

            return(response.GetResponseStream());
        }
コード例 #22
0
 public FlushHandler(IRRConfiguration configuration, IHostingEnvironmentWrapper hostingEnvironment, IIpFilter ipFilter, IReducingQueue queue, IUriBuilder uriBuilder, IStore store)
 {
     this.configuration      = configuration;
     this.hostingEnvironment = hostingEnvironment;
     this.ipFilter           = ipFilter;
     this.queue      = queue;
     this.uriBuilder = uriBuilder;
     this.store      = store;
 }
コード例 #23
0
ファイル: RestClient.cs プロジェクト: garethbaumgart/YnabApi
 public RestClient(HttpClient httpClient,
                   IUriBuilder uriBuilder,
                   string apiToken)
 {
     _httpClient = httpClient;
     _uriBuilder = uriBuilder;
     _apiToken   = apiToken;
     SetupHttpClient();
 }
コード例 #24
0
 public SpriteManager(IWebClientWrapper webClientWrapper, IRRConfiguration config, IUriBuilder uriBuilder, IStore store, IPngOptimizer pngOptimizer)
 {
     this.webClientWrapper = webClientWrapper;
     this.uriBuilder       = uriBuilder;
     this.store            = store;
     this.pngOptimizer     = pngOptimizer;
     this.config           = config;
     SpriteContainer       = new SpriteContainer(webClientWrapper, config);
 }
コード例 #25
0
 public LocalDiskStore(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder, IReductionRepository reductionRepository)
 {
     this.fileWrapper = fileWrapper;
     this.configuration = configuration;
     configuration.PhysicalPathChange += SetupWatcher;
     this.uriBuilder = uriBuilder;
     this.reductionRepository = reductionRepository;
     if(configuration.IsFullTrust)
         SetupWatcher();
 }
コード例 #26
0
 public HttpRequestBuilder(
     IUriBuilder uriBuilder,
     IClock clock,
     ISignatureBuilder signatureBuilder,
     IAllHttpHeadersBuilder allHttpHeadersBuilder)
 {
     _uriBuilder            = uriBuilder;
     _clock                 = clock;
     _signatureBuilder      = signatureBuilder;
     _allHttpHeadersBuilder = allHttpHeadersBuilder;
 }
コード例 #27
0
 public HttpRequestBuilder(
     IUriBuilder uriBuilder,
     IClock clock,
     ISignatureBuilder signatureBuilder,
     IAllHttpHeadersBuilder allHttpHeadersBuilder)
 {
     _uriBuilder = uriBuilder;
     _clock = clock;
     _signatureBuilder = signatureBuilder;
     _allHttpHeadersBuilder = allHttpHeadersBuilder;
 }
コード例 #28
0
 public LocalDiskStore(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder, IReductionRepository reductionRepository)
 {
     FileWrapper        = fileWrapper;
     this.configuration = configuration;
     configuration.PhysicalPathChange += SetupWatcher;
     this.uriBuilder     = uriBuilder;
     ReductionRepository = reductionRepository;
     if (configuration.IsFullTrust)
     {
         SetupWatcher();
     }
 }
コード例 #29
0
 public RestRequestAdapter(IUriBuilder uriBuilder, IHttpClientRequest httpClientRequest)
 {
     if (uriBuilder == null)
     {
         throw new ArgumentNullException("uriBuilder");
     }
     if (httpClientRequest == null)
     {
         throw new ArgumentNullException("httpClientRequest");
     }
     _uriBuilder        = uriBuilder;
     _httpClientRequest = httpClientRequest;
 }
コード例 #30
0
        public void SetUp()
        {
            _request = new Request
            {
                Arguments     = new List <KeyValuePair <string, string> >(),
                UriPath       = "uri/path",
                StartsAtIndex = 0
            };

            _mockedConfiguration = new Mock <IConfigurationWrapper>();
            _mockedConfiguration
            .Setup(it => it.ValueFor(It.IsAny <string>()))
            .Returns("base-uri");

            _mockedUriQueryBuilder = new Mock <IUriQueryBuilder>();
            _mockedUriQueryBuilder
            .Setup(it => it.Build(It.IsAny <IEnumerable <KeyValuePair <string, string> > >()))
            .Returns("query-built");

            _builder = new UriBuilder(_mockedConfiguration.Object, _mockedUriQueryBuilder.Object);
        }
コード例 #31
0
        public void SetUp()
        {
            _request = new Request
                                 {
                                     Arguments = new List<KeyValuePair<string, string>>(),
                                     UriPath = "uri/path",
                                     StartsAtIndex = 0
                                 };

            _mockedConfiguration = new Mock<IConfigurationWrapper>();
            _mockedConfiguration
                .Setup(it => it.ValueFor(It.IsAny<string>()))
                .Returns("base-uri");

            _mockedUriQueryBuilder = new Mock<IUriQueryBuilder>();
            _mockedUriQueryBuilder
                .Setup(it => it.Build(It.IsAny<IEnumerable<KeyValuePair<string, string>>>()))
                .Returns("query-built");

            _builder = new UriBuilder(_mockedConfiguration.Object, _mockedUriQueryBuilder.Object);
        }
コード例 #32
0
        private static WebRequest BuildRequest(IUriBuilder uriBuilder, HttpMethod method, Dictionary <string, object> parameters, byte[] body, out Func <int, string, string> buildExceptionMessage)
        {
            var uri     = method != HttpMethod.Put ? uriBuilder.AddQueryParameters(parameters).Build() : uriBuilder.Build();
            var request = WebRequest.Create(uri);

            request.Method = method.GetParameterName();

            request.ContentType = "application/json";

            body = body ?? new byte[0];
            if (method == HttpMethod.Put)
            {
                var serializer = new SoundCloud.API.Client.Internal.Infrastructure.Serialization.JsonSerializer();
                var serialized = serializer.Serialize(parameters);
                body = Encoding.UTF8.GetBytes(serialized);
            }
            if ((method == HttpMethod.Post || method == HttpMethod.Put) && body.Length > 0)
            {
                request.ContentLength = body.Length;
                using (var requestStream = request.GetRequestStream())
                {
                    requestStream.Write(body, 0, body.Length);
                    requestStream.Flush();
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");

            buildExceptionMessage = (statusCode, content) =>
                                    string.Format("WebRequest exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uri.AbsoluteUri, method, statusCode, content);
            return(request);
        }
コード例 #33
0
ファイル: Navigator.cs プロジェクト: 01-Feli/openmod-plugins
 public Navigator(NavigationManager navigationManager, IQueryParser queryParser, IUriBuilder uriBuilder)
 {
     _navigationManager = navigationManager;
     _queryParser       = queryParser;
     _uriBuilder        = uriBuilder;
 }
コード例 #34
0
 public UriBuilderDirector(IUriBuilder uriBuilder)
 {
     _uriBuilder = uriBuilder;
 }
コード例 #35
0
 public SqlServerStore(IUriBuilder uriBuilder, IFileRepository repository, IStore fileStore)
 {
     this.uriBuilder = uriBuilder;
     this.repository = repository;
     this.fileStore = fileStore;
 }
コード例 #36
0
 public JavaScriptReducer(IWebClientWrapper webClientWrapper, IStore store, IMinifier minifier, IUriBuilder uriBuilder, IRRConfiguration config, IResponseDecoder responseDecoder) : base(webClientWrapper, store, minifier, uriBuilder)
 {
     this.config          = config;
     this.responseDecoder = responseDecoder;
 }
コード例 #37
0
ファイル: DbDiskCache.cs プロジェクト: colintho/RequestReduce
 public DbDiskCache(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder)
     : base(fileWrapper, configuration, uriBuilder)
 {
     const int interval = 1000*60*5;
     timer = new Timer(PurgeOldFiles, null, 0, interval);
 }
コード例 #38
0
 public RestRequestAdapter GetXmlRestRequest(IUriBuilder uriBuilder)
 {
     var xmlRequest = new RestRequest(new XmlSerializer());
     return new RestRequestAdapter(uriBuilder, xmlRequest);
 }
コード例 #39
0
 public FakeLocalDiskStore(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder, IReductionRepository reductionRepository)
     : base(fileWrapper, configuration, uriBuilder, reductionRepository)
 {
 }
コード例 #40
0
ファイル: HandlerFactory.cs プロジェクト: arp51/RequestReduce
 public HandlerFactory(IRRConfiguration config, IUriBuilder uriBuilder)
 {
     this.config = config;
     this.uriBuilder = uriBuilder;
     AddHandlerMap(DefaultMap);
 }
コード例 #41
0
 public RestRequestAdapter(IUriBuilder uriBuilder)
     : this(uriBuilder, new HttpClientRequest())
 {
 }
コード例 #42
0
        public string Upload(IUriBuilder uriBuilder, Dictionary<string, object> parameters, params File[] files)
        {
            var uri = uriBuilder.Build();
            var mimeParts = new List<MimePart>();

            try
            {
                var request = WebRequest.Create(uri);

                foreach (var key in parameters.Keys)
                {
                    var part = new StringMimePart();

                    part.Headers["Content-Disposition"] = "form-data; name=\"" + key + "\"";
                    part.StringData = parameters[key].ToString();

                    mimeParts.Add(part);
                }

                var nameIndex = 0;

                foreach (var file in files)
                {
                    var part = new StreamMimePart();

                    if (string.IsNullOrEmpty(file.FieldName))
                        file.FieldName = "file" + nameIndex++;

                    part.Headers["Content-Disposition"] = "form-data; name=\"" + file.FieldName + "\"; filename=\"" + file.Path + "\"";
                    part.Headers["Content-Type"] = File.ContentType;

                    part.SetStream(file.Data);

                    mimeParts.Add(part);
                }

                var boundary = "----------" + DateTime.Now.Ticks.ToString("x");

                request.ContentType = "multipart/form-data; boundary=" + boundary;
                request.Method = "POST";

                var footer = Encoding.UTF8.GetBytes("--" + boundary + "--\r\n");

                var contentLength = mimeParts.Sum(part => part.GenerateHeaderFooterData(boundary));

                request.ContentLength = contentLength + footer.Length;

                var buffer = new byte[8192];
                var afterFile = Encoding.UTF8.GetBytes("\r\n");

                using (var s = request.GetRequestStream())
                {
                    foreach (var part in mimeParts)
                    {
                        s.Write(part.Header, 0, part.Header.Length);

                        int read;
                        while ((read = part.Data.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            s.Write(buffer, 0, read);
                        }

                        part.Data.Dispose();

                        s.Write(afterFile, 0, afterFile.Length);
                    }

                    s.Write(footer, 0, footer.Length);
                }

                return GetContent(request, (statusCode, content) =>
                                            string.Format("Upload failed. Parameters: uri = {0}. Files: {1}. Response: {2} - {3}",
                                                uri.AbsoluteUri,
                                                string.Join(";", files.Select(x => x.Path)),
                                                statusCode,
                                                content));
            }
            finally
            {
                foreach (var mimePart in mimeParts.Where(part => part.Data != null))
                {
                    mimePart.Data.Dispose();
                }
            }
        }
コード例 #43
0
 public string GetFullUri(IUriBuilder uriBuilder)
 {
     return(this.SiteUrl + "/" + uriBuilder.GetUri());
 }
コード例 #44
0
 public ReaderService(IUriBuilder builder, IHttpService httpService)
     : base(builder, httpService)
 {
 }
コード例 #45
0
 public HandlerFactory(IRRConfiguration config, IUriBuilder uriBuilder)
 {
     this.config     = config;
     this.uriBuilder = uriBuilder;
     AddHandlerMap(DefaultMap);
 }
コード例 #46
0
        private static WebRequest BuildRequest(IUriBuilder uriBuilder, HttpMethod method, Dictionary<string, object> parameters, byte[] body, string acessToken, out Func<int, string, string> buildExceptionMessage)
        {
            var uri = uriBuilder.AddQueryParameters(parameters).Build();
            var request = WebRequest.Create(uri);

            request.Method = method.GetParameterName();

            request.ContentType = "application/json";

            body = body ?? new byte[0];
            if (method == HttpMethod.Post && body.Length > 0)
            {
                request.ContentLength = body.Length;
                using (var requestStream = request.GetRequestStream())
                {
                    requestStream.Write(body, 0, body.Length);
                    requestStream.Flush();
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            request.Headers.Add("Authorization", "OAuth " + acessToken);

            buildExceptionMessage = (statusCode, content) =>
                string.Format("WebRequest exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uri.AbsoluteUri, method, statusCode, content);
            return request;
        }
コード例 #47
0
 public SpriteManagerToTest(IWebClientWrapper webClientWrapper, IRRConfiguration config, IUriBuilder uriBuilder, IStore store, IPngOptimizer pngOptimizer) : base(webClientWrapper, config, uriBuilder, store, pngOptimizer)
 {
     MockSpriteContainer = new Mock <ISpriteContainer>();
     MockSpriteContainer.Setup(x => x.GetEnumerator()).Returns(new List <SpritedImage>().GetEnumerator());
     MockSpriteContainer.Setup(x => x.Width).Returns(1);
     MockSpriteContainer.Setup(x => x.Height).Returns(1);
     MockSpriteContainer.Setup(x => x.AddImage(It.IsAny <BackgroundImageClass>())).
     Returns((BackgroundImageClass c) => new SpritedImage(1, c, null));
     base.SpriteContainer = MockSpriteContainer.Object;
     SpritedCssKey        = Guid.NewGuid();
 }
コード例 #48
0
 public CssReducer(IWebClientWrapper webClientWrapper, IStore store, IMinifier minifier, ISpriteManager spriteManager, ICssImageTransformer cssImageTransformer, IUriBuilder uriBuilder, IRRConfiguration configuration)
     : base(webClientWrapper, store, minifier, uriBuilder)
 {
     this.cssImageTransformer = cssImageTransformer;
     this.configuration       = configuration;
     this.spriteManager       = spriteManager;
 }
コード例 #49
0
        private static WebRequest BuildRequest(IUriBuilder uriBuilder, HttpMethod method, Dictionary<string, object> parameters, byte[] body, out Func<int, string, string> buildExceptionMessage)
        {
            var uri = method != HttpMethod.Put ? uriBuilder.AddQueryParameters(parameters).Build() : uriBuilder.Build();
            var request = WebRequest.Create(uri);

            request.Method = method.GetParameterName();

            request.ContentType = "application/json";

            body = body ?? new byte[0];
            if (method == HttpMethod.Put)
            {
                var serializer = new SoundCloud.API.Client.Internal.Infrastructure.Serialization.JsonSerializer();
                var serialized = serializer.Serialize(parameters);
                body = Encoding.UTF8.GetBytes(serialized);

            }
            if ((method == HttpMethod.Post || method == HttpMethod.Put) && body.Length > 0)
            {
                request.ContentLength = body.Length;
                using (var requestStream = request.GetRequestStream())
                {
                    requestStream.Write(body, 0, body.Length);
                    requestStream.Flush();
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");

            buildExceptionMessage = (statusCode, content) =>
                string.Format("WebRequest exception. Parameters: method = {1}, uri = {0}. Response: {2} - {3}.", uri.AbsoluteUri, method, statusCode, content);
            return request;
        }
コード例 #50
0
 public FakeDbDiskCache(IFileWrapper fileWrapper, IRRConfiguration configuration, IUriBuilder uriBuilder)
     : base(fileWrapper, configuration, uriBuilder)
 {
     timer.Dispose();
 }
コード例 #51
0
 public RestRequestAdapter GetJsonRestRequest(IUriBuilder uriBuilder)
 {
     var jsonRequest = new RestRequest(new JsonSerializer());
     return new RestRequestAdapter(uriBuilder, jsonRequest);
 }
コード例 #52
0
        public string Upload(IUriBuilder uriBuilder, Dictionary <string, object> parameters, params File[] files)
        {
            var uri       = uriBuilder.Build();
            var mimeParts = new List <MimePart>();

            try
            {
                var request = WebRequest.Create(uri);

                foreach (var key in parameters.Keys)
                {
                    var part = new StringMimePart();

                    part.Headers["Content-Disposition"] = "form-data; name=\"" + key + "\"";
                    part.StringData = parameters[key].ToString();

                    mimeParts.Add(part);
                }

                var nameIndex = 0;

                foreach (var file in files)
                {
                    var part = new StreamMimePart();

                    if (string.IsNullOrEmpty(file.FieldName))
                    {
                        file.FieldName = "file" + nameIndex++;
                    }

                    part.Headers["Content-Disposition"] = "form-data; name=\"" + file.FieldName + "\"; filename=\"" + file.Path + "\"";
                    part.Headers["Content-Type"]        = File.ContentType;

                    part.SetStream(file.Data);

                    mimeParts.Add(part);
                }

                var boundary = "----------" + DateTime.Now.Ticks.ToString("x");

                request.ContentType = "multipart/form-data; boundary=" + boundary;
                request.Method      = "POST";

                var footer = Encoding.UTF8.GetBytes("--" + boundary + "--\r\n");

                var contentLength = mimeParts.Sum(part => part.GenerateHeaderFooterData(boundary));

                request.ContentLength = contentLength + footer.Length;

                var buffer    = new byte[8192];
                var afterFile = Encoding.UTF8.GetBytes("\r\n");

                using (var s = request.GetRequestStream())
                {
                    foreach (var part in mimeParts)
                    {
                        s.Write(part.Header, 0, part.Header.Length);

                        int read;
                        while ((read = part.Data.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            s.Write(buffer, 0, read);
                        }

                        part.Data.Dispose();

                        s.Write(afterFile, 0, afterFile.Length);
                    }

                    s.Write(footer, 0, footer.Length);
                }

                return(GetContent(request, (statusCode, content) =>
                                  string.Format("Upload failed. Parameters: uri = {0}. Files: {1}. Response: {2} - {3}",
                                                uri.AbsoluteUri,
                                                string.Join(";", files.Select(x => x.Path)),
                                                statusCode,
                                                content)));
            }
            finally
            {
                foreach (var mimePart in mimeParts.Where(part => part.Data != null))
                {
                    mimePart.Data.Dispose();
                }
            }
        }
コード例 #53
0
 public string GetRelativeUri(IUriBuilder uriBuilder)
 {
     return(uriBuilder.GetUri());
 }