package in.srain.cube.request.sender;
import in.srain.cube.request.FailData;
import in.srain.cube.request.IRequest;
import in.srain.cube.request.RequestData;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class RequestSenderFactory {
public static <T> BaseRequestSender create(IRequest<T> request) {
BaseRequestSender sender = null;
try {
RequestData requestData = request.getRequestData();
URL url = new URL(requestData.getRequestUrl());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
if (!requestData.shouldPost()) {
sender = new GetRequestSender(request, urlConnection);
} else {
if (requestData.isMultiPart()) {
sender = new MultiPartRequestSender(request, urlConnection);
} else {
sender = new PostRequestSender(request, urlConnection);
}
}
sender.setup();
} catch (MalformedURLException e) {
request.setFailData(FailData.inputError(request));
} catch (IOException e) {
request.setFailData(FailData.networkError(request));
}
return sender;
}
}