Skip to content

Commit

Permalink
allow schema to be https if eureka tells it to be
Browse files Browse the repository at this point in the history
  • Loading branch information
g_couto@dell.com committed May 11, 2020
1 parent b4cb166 commit 3bdf257
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 23 deletions.
23 changes: 17 additions & 6 deletions feign-reactor-cloud/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,23 @@

<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-core</artifactId>
</dependency>

<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-loadbalancer</artifactId>
<artifactId>ribbon-core</artifactId>
</dependency>

<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-eureka</artifactId>
</dependency>

<dependency>
<groupId>com.netflix.eureka</groupId>
<artifactId>eureka-client</artifactId>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-loadbalancer</artifactId>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.reactive.LoadBalancerCommand;
import com.netflix.niws.loadbalancer.DiscoveryEnabledServer;
import org.reactivestreams.Publisher;
import org.springframework.web.util.UriComponentsBuilder;
import reactivefeign.client.ReactiveHttpRequest;
Expand All @@ -24,7 +25,7 @@
*/
public class RibbonPublisherClient implements PublisherHttpClient {

private final LazyInitialized<LoadBalancerCommand<Object>> loadBalancerCommand;
private final LazyInitialized<LoadBalancerCommand<Object>> loadBalancerCommand;
private final PublisherHttpClient publisherClient;
private final Type publisherType;

Expand All @@ -37,7 +38,7 @@ public RibbonPublisherClient(LoadBalancerCommandFactory loadBalancerCommandFacto
this.publisherType = publisherType;
}

@Override
@Override
public Publisher<Object> executeRequest(ReactiveHttpRequest request) {
LoadBalancerCommand<Object> loadBalancerCommand = this.loadBalancerCommand.get();
if (loadBalancerCommand != null) {
Expand All @@ -52,12 +53,12 @@ public Publisher<Object> executeRequest(ReactiveHttpRequest request) {
} else {
throw new IllegalArgumentException("Unknown publisherType: " + publisherType);
}
} else {
return publisherClient.executeRequest(request);
}
} else {
return publisherClient.executeRequest(request);
}
}

private Publisher<?> getLoadBalancedPublisher(
private Publisher<?> getLoadBalancedPublisher(
ReactiveHttpRequest request,
LoadBalancerCommand<Object> loadBalancerCommand,
Context context) {
Expand All @@ -66,17 +67,25 @@ private Publisher<?> getLoadBalancedPublisher(
ReactiveHttpRequest lbRequest = loadBalanceRequest(request, server);

Publisher<Object> publisher = publisherClient.executeRequest(lbRequest);
return RxReactiveStreams.toObservable(withContext(publisher, publisherType, context));
});
return RxReactiveStreams.toObservable(withContext(publisher, publisherType, context));
});

return RxReactiveStreams.toPublisher(observable);
}
return RxReactiveStreams.toPublisher(observable);
}

protected ReactiveHttpRequest loadBalanceRequest(ReactiveHttpRequest request, Server server) {
URI lbUrl = UriComponentsBuilder.fromUri(request.uri())
.host(server.getHost())
.port(server.getPort())
.build(true).toUri();
return new ReactiveHttpRequest(request, lbUrl);
}
protected ReactiveHttpRequest loadBalanceRequest(ReactiveHttpRequest request, Server server) {
String scheme = "http";
if (server instanceof DiscoveryEnabledServer
&& ((DiscoveryEnabledServer) server).getInstanceInfo() != null
&& server.getPort() == ((DiscoveryEnabledServer) server).getInstanceInfo().getSecurePort())
scheme = "https";
URI lbUrl =
UriComponentsBuilder.fromUri(request.uri())
.host(server.getHost())
.scheme(scheme)
.port(server.getPort())
.build(true)
.toUri();
return new ReactiveHttpRequest(request, lbUrl);
}
}

0 comments on commit 3bdf257

Please sign in to comment.