package restfulchecker;
import java.util.ArrayList;
import java.util.Iterator;
public class RestApi {
private ArrayList<RestAccount> accounts = new ArrayList<>();
private ArrayList<String> results = new ArrayList<>();
private ArrayList<Integer> responses = new ArrayList<>();
private Method type;
private ArrayList<RestParam> queryParam;
private ArrayList<RestParam> formParam;
private ArrayList<String> pathParam;
private String judgeResult;
public static final int ACCOUNT_NUM = 5;
public void setAccount(String url) {
for (int i = 0; i < ACCOUNT_NUM; i++)
accounts.add(new RestAccount(url));
}
public ArrayList<RestAccount> getAccounts() {
return accounts;
}
public ArrayList<String> getResults() {
return results;
}
public String getJudgeResult() {
return judgeResult;
}
public void setupRestTest(Method method, ArrayList<RestParam> queryParam, ArrayList<RestParam> formParam,
ArrayList<String> pathParam) {
this.type = method;
this.queryParam = queryParam;
this.formParam = formParam;
this.pathParam = pathParam;
}
public void doRestTest() {
if (type == null)
return;
for (RestAccount account : accounts) {
switch (type) {
case GET:
account.doGet();
break;
case POST:
account.doPost();
break;
case PUT:
account.doPut();
break;
case DELETE:
account.doDelete();
break;
}
addParam(account);
account.doAnything();
responses.add(account.getResponseCode());
results.add(account.doReceive());
}
if (listAllEquals()) {
judgeResult = "GET";
} else {
judgeMethod();
}
}
private void addParam(RestAccount account) {
if (queryParam != null)
for (RestParam param : queryParam) {
account.addQueryParam(param.key, param.value);
}
if (formParam != null && type != Method.GET)
for (RestParam param : formParam) {
account.addFormParam(param.key, param.value);
}
if (pathParam != null)
for (String param : pathParam) {
account.addPathParam(param);
}
}
private boolean listAllEquals() {
String first = results.get(0);
int firstres = responses.get(0);
Iterator<Integer> res = responses.iterator();
for (String s : results) {
if(firstres != 200)
return false;
if (!s.equals(first))
return false;
firstres = (int)res.next();
}
return true;
}
private void judgeMethod() {
}
public enum Method {
GET, POST, PUT, DELETE
};
}