Skip to content

Instantly share code, notes, and snippets.

View fitzoh's full-sized avatar

Andrew Fitzgerald fitzoh

View GitHub Profile
@fitzoh
fitzoh / RouteIdTaggingGlobalFilter.java
Created November 1, 2018 00:37
spring cloud gateway span tagger
package com.cardinalhealth.connectgateway;
import brave.Span;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.cloud.sleuth.instrument.web.TraceWebFilter;
import org.springframework.stereotype.Component;
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder,
SimpleLoggingFilter loggingFilter,
RouteServiceForwardingFilter forwardingFilter) {
return builder.routes()
.route(r ->
r.header(FORWARDED_URL, ".*")
.and()
.header(PROXY_METADATA, ".*")
.and()
@Component
public class RouteServiceForwardingFilter implements GatewayFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
try {
String forwardUrl = exchange.getRequest().getHeaders().get(FORWARDED_URL).get(0);
exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, new URI(forwardUrl));
return chain.filter(exchange);
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder, SimpleLoggingFilter loggingFilter) {
return builder.routes()
.route(r ->
r.header(FORWARDED_URL, ".*")
.and()
.header(PROXY_METADATA, ".*")
.and()
.header(PROXY_SIGNATURE, ".*")
.filters(f -> f.add(loggingFilter))
@Component
public class SimpleLoggingFilter implements GatewayFilter {
private static final Logger log = LoggerFactory.getLogger(SimpleLoggingFilter.class);
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
log.info("Method:{} Host:{} Path:{} QueryParams:{}",
exchange.getRequest().getMethod(),
exchange.getRequest().getURI().getHost(),
@fitzoh
fitzoh / RoutesWithLoggingFilter.java
Last active February 10, 2018 21:10
simple-gateway-route-service
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder, SimpleLoggingFilter loggingFilter) {
return builder.routes()
.route(r ->
r.header(FORWARDED_URL, ".*")
.and()
.header(PROXY_METADATA, ".*")
.and()
.header(PROXY_SIGNATURE, ".*")
.filters(f -> f.add(loggingFilter))
@fitzoh
fitzoh / SpringCloudGatewayApplication.java
Created September 7, 2017 01:24
Canary deploys with spring-cloud-gateway (2.0.0-M1)
@EnableGateway
@SpringBootApplication
public class SpringCloudGatewayApplication {
private final String cookieName = "beta_active";
private final String headerName = "X-Beta-active";
private final String betaActiveValue = "true";
/**
* They're in the beta if they have a cookie or request header set
{
"provider": {
"name": "Provider"
},
"consumer": {
"name": "Consumer"
},
"interactions": [
{
"description": "A fraudulent fraud check request",
@RunWith(PactRunner.class)
@Provider("some-provider")
@PactFolder("/some/path/pact")
@WebIntegrationTest("server.port=8080")
@SpringApplicationConfiguration(SomeSpringBootApplication.class)
public class ProviderPactTest {
private static TestContextManager testContextManager;
@TestTarget
public final HttpTarget target = new HttpTarget(8080);
@ConfigurationProperties("*.config")??
public class Config {
private String foo;
private String bar;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {