package com.adsdk.sdk.video;
import static com.adsdk.sdk.Const.RESPONSE_ENCODING;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.util.HashMap;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpProtocolParams;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import com.adsdk.sdk.AdRequest;
import com.adsdk.sdk.Const;
import com.adsdk.sdk.RequestException;
public class RequestVideoList {
public RequestVideoList() {
}
public HashMap<String, Long> sendRequest(AdRequest request)
throws RequestException {
String url = request.toString() + "&listads=1";
DefaultHttpClient client = new DefaultHttpClient();
HttpConnectionParams.setSoTimeout(client.getParams(),
Const.SOCKET_TIMEOUT);
HttpConnectionParams.setConnectionTimeout(client.getParams(),
Const.CONNECTION_TIMEOUT);
HttpProtocolParams.setUserAgent(client.getParams(),
request.getUserAgent());
HttpGet get = new HttpGet(url);
HttpResponse response;
try {
response = client.execute(get);
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
return parse(response.getEntity().getContent());
} else {
throw new RequestException("Server Error. Response code:"
+ responseCode);
}
} catch (RequestException e) {
throw e;
} catch (ClientProtocolException e) {
throw new RequestException("Error in HTTP request", e);
} catch (IOException e) {
throw new RequestException("Error in HTTP request", e);
} catch (Throwable t) {
throw new RequestException("Error in HTTP request", t);
}
}
private HashMap<String, Long> parse(InputStream inputStream)
throws RequestException {
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
ResponseHandler myHandler = new ResponseHandler();
xr.setContentHandler(myHandler);
InputSource src = new InputSource(inputStream);
src.setEncoding(RESPONSE_ENCODING);
xr.parse(src);
return myHandler.videoList;
} catch (Exception e) {
throw new RequestException("Cannot parse Response:"
+ e.getMessage(), e);
}
}
}