Skip to content

Instantly share code, notes, and snippets.

@navneetkumar
Last active December 5, 2016 12:06
Show Gist options
  • Save navneetkumar/d91f174a22522ff6a1ec477bed89c463 to your computer and use it in GitHub Desktop.
Save navneetkumar/d91f174a22522ff6a1ec477bed89c463 to your computer and use it in GitHub Desktop.
Lambda-Handler
public class Handler implements RequestStreamHandler {
static final Logger logger = Logger.getLogger(Handler.class);
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)
throws IOException {
try {
Properties props = new Properties();
props.load(Thread.currentThread().getContextClassLoader().getResource("lambda.properties").openStream());
String runnableClass = props.getProperty("deployment.lambdaRunnabe");
LambdaRunnable runnableInstance = (LambdaRunnable)Class.forName(runnableClass).getConstructor().newInstance();
JettyTestServer.ensureStarted(runnableInstance);
proxyRequest(inputStream, outputStream);
} catch (Exception e) {
logger.debug("Handling request failed = " + e.getLocalizedMessage());
e.printStackTrace();
}
}
public void proxyRequest(InputStream inputStream, OutputStream outputStream) throws Exception {
try {
HttpClient httpClient = new HttpClient();
httpClient.setFollowRedirects(false);
httpClient.start();
ObjectMapper mapper = new ObjectMapper();
APIRequest apiRequest = (APIRequest) mapper.readValue(inputStream, APIRequest.class);
Request jettyRequest = httpClient.newRequest(JettyTestServer.BASEURL);
Request newRequest = apiRequest.copyRequest(jettyRequest);
ContentResponse jettyResponse = newRequest.send();
APIResponse apiResponse = new APIResponse(jettyResponse);
logger.debug("http response = " + apiResponse.toString());
String jsonResponse = mapper.writeValueAsString(apiResponse);
System.out.println("Returned JSON response = " + apiResponse.toString());
outputStream.write(jsonResponse.getBytes(Charset.forName("UTF-8")));
} catch (Exception e) {
logger.debug("error occured during proxy = " + e.getLocalizedMessage());
e.printStackTrace();
APIResponse exceptionResponse = new APIResponse("Error In Proxy", 500);
String erroJsonResponse = new ObjectMapper().writeValueAsString(exceptionResponse);
logger.debug("returning exception message = " + exceptionResponse.toString());
outputStream.write(erroJsonResponse.getBytes(Charset.forName("UTF-8")));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment