package com.apigee.sdk.apm.android;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.Map;
import com.apigee.sdk.apm.android.model.ClientNetworkMetrics;
/**
* @y.exclude
*/
public class HttpUrlConnectionUtils {
public static Map<String,Object> captureHttpHeaders(HttpURLConnection connection) {
HashMap<String,Object> httpHeaders = null;
String serverResponseTime = connection.getHeaderField(ClientNetworkMetrics.HeaderResponseTime);
String serverReceiptTime = connection.getHeaderField(ClientNetworkMetrics.HeaderReceiptTime);
String serverProcessingTime = connection.getHeaderField(ClientNetworkMetrics.HeaderProcessingTime);
String serverId = connection.getHeaderField(ClientNetworkMetrics.HeaderServerId);
int contentLength = connection.getContentLength();
int httpStatusCode = -1;
try {
httpStatusCode = connection.getResponseCode();
} catch(IOException e) {
}
if( (contentLength > -1) ||
(httpStatusCode > -1) ||
(serverResponseTime != null) ||
(serverReceiptTime != null) ||
(serverProcessingTime != null) ||
(serverId != null) ) {
httpHeaders = new HashMap<String,Object>();
if( contentLength > -1 ) {
httpHeaders.put(ClientNetworkMetrics.HttpContentLength, new Long(contentLength));
}
if( httpStatusCode > -1) {
httpHeaders.put(ClientNetworkMetrics.HttpStatusCode, new Integer(httpStatusCode));
}
if( serverResponseTime != null ) {
//TODO: convert to Date object
//httpHeaders.put(ClientNetworkMetrics.HeaderResponseTime, serverResponseTime);
}
if( serverReceiptTime != null ) {
//TODO: convert to Date object
//httpHeaders.put(ClientNetworkMetrics.HeaderReceiptTime, serverReceiptTime);
}
if( serverProcessingTime != null) {
try {
Long processingTimeValue = Long.parseLong(serverProcessingTime);
httpHeaders.put(ClientNetworkMetrics.HeaderProcessingTime, processingTimeValue);
} catch (NumberFormatException e) {
}
}
if( serverId != null ) {
httpHeaders.put(ClientNetworkMetrics.HeaderServerId, serverId);
}
}
return httpHeaders;
}
}