//------------------------------------------------------------------------------
// Copyright (c) 2012 Microsoft Corporation. All rights reserved.
//
// Description: See the class level JavaDoc comments.
//------------------------------------------------------------------------------
package com.microsoft.live;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.util.EntityUtils;
/**
* InputStreamResponseHandler returns an InputStream from an HttpResponse.
* Singleton--use INSTANCE.
*/
enum InputStreamResponseHandler implements ResponseHandler<InputStream> {
INSTANCE;
@Override
public InputStream handleResponse(HttpResponse response) throws ClientProtocolException,
IOException {
HttpEntity entity = response.getEntity();
StatusLine statusLine = response.getStatusLine();
boolean successfulResponse = (statusLine.getStatusCode() / 100) == 2;
if (!successfulResponse) {
// If it was not a successful response, the response body contains a
// JSON error message body. Unfortunately, I have to adhere to the interface
// and I am throwing an IOException in this case.
String responseBody = EntityUtils.toString(entity);
throw new IOException(responseBody);
}
return entity.getContent();
}
}