tus / tus-java-client

The tus client for Java.
https://tus.io
MIT License
213 stars 88 forks source link

Add a hook after connection is established #18

Open raja-baz opened 6 years ago

raja-baz commented 6 years ago

We encountered a problem using tus-java-client when server is behind the aws load balancer. For things to work correctly, we need to be able to read the set-cookie header and send it back on future requests.

This could be implemented directly in the client, but I wanted to make as few changes(and as low-impact as possible). So instead I opted to add a hook after connection is opened. In our usage code we subclass TusClient and override the newly added onConnectionOpened to retrieve the headers and prepareConnection to inject cookies later on.

PS: I think it would be worth making the connection setup and preparation more easily hookable on a more fundamental level so one could use their own custom HTTP stack(without having to resort to the horribly low-level and undiscoverable URLStreamHandler).

Acconut commented 6 years ago

For things to work correctly, we need to be able to read the set-cookie header and send it back on future requests.

Good catch! Since we do not require cookies for our servers/load balancing, we never came across this issue. However, I am thinking whether we should build proper Cookie support into tus-java-client to save other users the hassle figuring that out. I won't be available for the next few days, so my responses my take some time.

PS: I think it would be worth making the connection setup and preparation more easily hookable on a more fundamental level so one could use their own custom HTTP stack(without having to resort to the horribly low-level and undiscoverable URLStreamHandler).

We briefly talked about allowing different HTTP stacks in https://github.com/tus/tus-java-client/issues/14 but the benefits (from my rather limited experience) of doing so did not justify the amount of work required. However, I am always open to discuss this.