Giter Site home page Giter Site logo

Set Proxy and Timeouts about consuldotnet HOT 5 CLOSED

playfab avatar playfab commented on August 16, 2024
Set Proxy and Timeouts

from consuldotnet.

Comments (5)

highlyunavailable avatar highlyunavailable commented on August 16, 2024

You know, I don't think there is a way. I'd be happy to add one, probably via a constructor that just lets you pass your own httpclient (not sure who would be responsible for disposing though), but I'm travelling this week so I can't do it quickly. I'd be happy to accept a PR or do it when I'm home again.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on August 16, 2024

I've added a constructor that takes an HttpClient, @robertmircea .

https://github.com/PlayFab/consuldotnet/blob/develop/Consul/Client.cs#L417-L444

Use it with something like:

            var hc = new HttpClient();
            hc.Timeout = TimeSpan.FromDays(10);
            using (var client = new ConsulClient(new ConsulClientConfiguration(), hc))
            {
                await client.KV.Put(new KVPair("kv/customhttpclient"));
            }

The ConsulClient will modify and will dispose of the HttpClient when the ConsulClient is disposed, though I'm not sure if this is the behavior you'd expect or not. Please let me know. You should be able to grab nuget packages from https://ci.appveyor.com/project/highlyunavailable/consuldotnet/build/0.6.3.211-develop/artifacts if you want to try this out.

from consuldotnet.

robertmircea avatar robertmircea commented on August 16, 2024

Thanks for making this available. I favor the pattern where external dependencies are not managed from lifecycle point of view by the components using them. So, in our case, if I pass in ConsulClient's class constructor a HttpClient object, I would like to be responsible for the moment when is the right time to dispose it. This prevents of unwanted and unexpected side effects.

I would appreciate, if you could remove the disposal step from library.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on August 16, 2024

Fair enough, will do. I've also removed any mutation of the passed HttpClient. You are responsible for creating one that accepts application/json and the constructor will throw an ArgumentException if an HttpClient that does not accept application/json is passed in. No validation of the Timeout parameter is done, either, but if the Timeout parameter is too low (under about 10 minutes) blocking queries will fail with timeout errors rather than return as expected. This also means you can make a single HttpClient and pass it around to multiple ConsulClients if you wish.

The pattern now looks like:

using (var hc = new HttpClient())
{
    hc.Timeout = TimeSpan.FromDays(10);
    hc.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    using (var client = new ConsulClient(new ConsulClientConfiguration(), hc))
    {
        await client.KV.Put(new KVPair("customhttpclient") { Value = System.Text.Encoding.UTF8.GetBytes("hello world") });
    }
}

I'll merge this in and release a build.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on August 16, 2024

And released: https://www.nuget.org/packages/Consul/0.6.3.4 Have fun!

from consuldotnet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.