Skip to content

Instantly share code, notes, and snippets.

@ajayk
Forked from rhart/Ratpack.groovy
Last active November 18, 2015 18:18
Show Gist options
  • Select an option

  • Save ajayk/b340b3ef92e29508adb9 to your computer and use it in GitHub Desktop.

Select an option

Save ajayk/b340b3ef92e29508adb9 to your computer and use it in GitHub Desktop.
Ratpack HTTP Proxy
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import ratpack.handling.Context
import ratpack.handling.Handler
import ratpack.http.client.HttpClient
import ratpack.http.client.StreamedResponse
import ratpack.http.MutableHeaders
import ratpack.http.client.RequestSpec
import static ratpack.groovy.Groovy.ratpack
final Logger log = LoggerFactory.getLogger(Ratpack.class);
class ApiKeyHandler implements Handler {
@Override
void handle(Context context) throws Exception {
if (//pseudo code to check redis for the keys )
{
}
context.next()
}
}
class OauthTokenHandler implements Handler {
@Override
void handle(Context context) throws Exception {
if (//pseudo code to Oauth token use offline )
{
}
context.next()
}
}
ratpack {
handlers {
handler new ApiKeyHandler()
handler new OauthTokenHandler()
handler { HttpClient httpClient ->
log.info("Proxy to: $request.rawUri")
httpClient.streamRequest(new URI(request.rawUri)) { RequestSpec spec ->
spec.headers.copy(request.headers)
} then { StreamedResponse responseStream ->
responseStream.send(response) { MutableHeaders headers ->
def server = 'APIP'
headers.set('Server', server)
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment