mirror of https://github.com/MISP/misp-bump
edit upload procedure
parent
6a582f5ada
commit
125f0b8b9c
|
@ -213,11 +213,7 @@ public class QrSyncActivity extends AppCompatActivity implements View.OnClickLis
|
||||||
syncInformationReceivedDialog(new SyncInformationQr(cryptography.decrypt(qrData)));
|
syncInformationReceivedDialog(new SyncInformationQr(cryptography.decrypt(qrData)));
|
||||||
|
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
|
|
||||||
Log.e("MISP_LOG", "onReadQrCode: ", e);
|
|
||||||
|
|
||||||
notExpectedFormatDialog();
|
notExpectedFormatDialog();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -203,15 +203,15 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
|
|
||||||
boolean errorFound = false;
|
boolean errorFound = false;
|
||||||
|
|
||||||
for (int i = 0; i < uploadStates.length; i++) {
|
for(UploadState state : uploadStates) {
|
||||||
|
|
||||||
if (!errorFound && uploadStates[i].getCurrentState() == UploadState.State.ERROR) {
|
if (!errorFound && state.getCurrentState() == UploadState.State.ERROR) {
|
||||||
errorFound = true;
|
errorFound = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errorFound) {
|
if (errorFound) {
|
||||||
uploadStates[i].setFollowError();
|
state.setFollowError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -233,8 +233,13 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
partnerServer = partnerInformation.getServer();
|
partnerServer = partnerInformation.getServer();
|
||||||
partnerSyncUser = partnerInformation.getUser();
|
partnerSyncUser = partnerInformation.getUser();
|
||||||
|
|
||||||
state.setDone();
|
if (partnerOrganisation == null || partnerServer == null || partnerSyncUser == null) {
|
||||||
executeNextTask();
|
state.setError("Partners information format is incorrect");
|
||||||
|
setApplicationError(false);
|
||||||
|
} else {
|
||||||
|
state.setDone();
|
||||||
|
executeNextTask();
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
state.setError("Partners information format is incorrect");
|
state.setError("Partners information format is incorrect");
|
||||||
|
@ -260,6 +265,7 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createOrganisation(final UploadState state, boolean undo) {
|
private void createOrganisation(final UploadState state, boolean undo) {
|
||||||
|
|
||||||
state.setInProgress();
|
state.setInProgress();
|
||||||
|
|
||||||
if (!undo) {
|
if (!undo) {
|
||||||
|
@ -268,11 +274,7 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
public void onResult(JSONObject organisationInformation) {
|
public void onResult(JSONObject organisationInformation) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
int orgId = new Organisation(organisationInformation).getId();
|
partnerSyncUser.setOrgId(new Organisation(organisationInformation).getId());
|
||||||
|
|
||||||
partnerSyncUser.setOrgId(orgId);
|
|
||||||
partnerSyncUser.setAuthkey(TempAuth.TMP_AUTH_KEY);
|
|
||||||
partnerSyncUser.setRoleId(User.RoleId.SYNC_USER);
|
|
||||||
|
|
||||||
state.setDone();
|
state.setDone();
|
||||||
executeNextTask();
|
executeNextTask();
|
||||||
|
@ -290,12 +292,28 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
setApplicationError(true);
|
setApplicationError(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
mispRequest.removeOrganisation(partnerOrganisation.getId(), new MispRequest.DeleteCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
state.setDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(VolleyError volleyError) {
|
||||||
|
state.setError(ReadableError.toReadable(volleyError));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createSyncUser(final UploadState state, boolean undo) {
|
private void createSyncUser(final UploadState state, boolean undo) {
|
||||||
|
|
||||||
state.setInProgress();
|
state.setInProgress();
|
||||||
|
|
||||||
|
partnerSyncUser.setAuthkey(TempAuth.TMP_AUTH_KEY);
|
||||||
|
partnerSyncUser.setRoleId(User.RoleId.SYNC_USER);
|
||||||
|
|
||||||
if (!undo) {
|
if (!undo) {
|
||||||
mispRequest.addUser(partnerSyncUser, new MispRequest.UserCallback() {
|
mispRequest.addUser(partnerSyncUser, new MispRequest.UserCallback() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -310,6 +328,18 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
setApplicationError(true);
|
setApplicationError(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
mispRequest.removeUser(partnerSyncUser.getId(), new MispRequest.DeleteCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
state.setDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(VolleyError volleyError) {
|
||||||
|
state.setError(ReadableError.toReadable(volleyError));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,6 +380,18 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
setApplicationError(true);
|
setApplicationError(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
mispRequest.removeOrganisation(partnerOrganisation.getId(), new MispRequest.DeleteCallback() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
state.setDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(VolleyError volleyError) {
|
||||||
|
state.setError(ReadableError.toReadable(volleyError));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,6 +411,12 @@ public class SyncUploadActivity extends AppCompatActivity implements View.OnClic
|
||||||
state.setError(ReadableError.toReadable(volleyError));
|
state.setError(ReadableError.toReadable(volleyError));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addToSyncedList() {
|
||||||
|
// todo implementation
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,30 +24,30 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
public class MispRequest {
|
public class MispRequest {
|
||||||
|
|
||||||
private static MispRequest instance;
|
private static MispRequest instance;
|
||||||
|
|
||||||
private RequestQueue requestQueue;
|
private RequestQueue requestQueue;
|
||||||
private PreferenceManager preferenceManager;
|
private PreferenceManager preferenceManager;
|
||||||
private String serverUrl, automationKey;
|
private String serverUrl, automationKey;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param context for Volley and PreferenceManager
|
* @param context for Volley and PreferenceManager
|
||||||
*/
|
*/
|
||||||
private MispRequest(Context context, boolean loadSavedCredentials) {
|
private MispRequest(Context context, boolean loadSavedCredentials) {
|
||||||
requestQueue = Volley.newRequestQueue(context);
|
requestQueue = Volley.newRequestQueue(context);
|
||||||
|
|
||||||
if (loadSavedCredentials) {
|
if (loadSavedCredentials) {
|
||||||
preferenceManager = PreferenceManager.Instance(context);
|
preferenceManager = PreferenceManager.Instance(context);
|
||||||
loadSavedCredentials();
|
loadSavedCredentials();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadSavedCredentials() {
|
private void loadSavedCredentials() {
|
||||||
serverUrl = preferenceManager.getMyServerUrl();
|
serverUrl = preferenceManager.getMyServerUrl();
|
||||||
automationKey = preferenceManager.getMyServerAutomationKey();
|
automationKey = preferenceManager.getMyServerAutomationKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testConnection(final ConnectionCallback callback) {
|
public void testConnection(final ConnectionCallback callback) {
|
||||||
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(JSONObject response) {
|
public void onResponse(JSONObject response) {
|
||||||
|
@ -71,293 +71,362 @@ public class MispRequest {
|
||||||
requestQueue.add(r);
|
requestQueue.add(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void getOrganisations(final OrganisationsCallback callback) {
|
||||||
* @param orgId organisation ID on the MISP-Instance
|
Response.Listener<JSONArray> listener = new Response.Listener<JSONArray>() {
|
||||||
* @param callback returns a single Organisation-JSON
|
@Override
|
||||||
*/
|
public void onResponse(JSONArray response) {
|
||||||
public void getOrganisation(int orgId, final OrganisationCallback callback) {
|
|
||||||
|
|
||||||
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
JSONArray resultArray = new JSONArray();
|
||||||
@Override
|
|
||||||
public void onResponse(JSONObject response) {
|
|
||||||
try {
|
|
||||||
callback.onResult(response.getJSONObject(Organisation.ROOT_KEY));
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
int orgCount = response.length();
|
||||||
@Override
|
|
||||||
public void onErrorResponse(VolleyError error) {
|
|
||||||
callback.onError(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
for (int i = 0; i < orgCount; i++) {
|
||||||
|
try {
|
||||||
|
resultArray.put(response.getJSONObject(i).getJSONObject("Organisation"));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Request r = objectRequest(Request.Method.GET,
|
callback.onResult(resultArray);
|
||||||
serverUrl + "/organisations/view/" + orgId,
|
}
|
||||||
null,
|
};
|
||||||
listener,
|
|
||||||
errorListener);
|
|
||||||
|
|
||||||
requestQueue.add(r);
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
}
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
Request r = arrayRequestWithJsonObject(
|
||||||
* Typically used to get the organisation linked with this user
|
Request.Method.GET,
|
||||||
*
|
serverUrl + "/organisations/index",
|
||||||
* @param callback return user associated with this API-Key
|
null,
|
||||||
*/
|
listener,
|
||||||
public void getMyUser(final UserCallback callback) {
|
errorListener);
|
||||||
|
|
||||||
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
requestQueue.add(r);
|
||||||
@Override
|
|
||||||
public void onResponse(JSONObject response) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
callback.onResult(response.getJSONObject(User.ROOT_KEY));
|
|
||||||
return;
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
callback.onResult(response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
|
||||||
@Override
|
|
||||||
public void onErrorResponse(VolleyError error) {
|
|
||||||
callback.onError(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (serverUrl.isEmpty() || automationKey.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Request r = objectRequest(
|
|
||||||
Request.Method.GET,
|
|
||||||
serverUrl + "/users/view/me",
|
|
||||||
null,
|
|
||||||
listener,
|
|
||||||
errorListener);
|
|
||||||
|
|
||||||
requestQueue.add(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param organisation The organisation that will be added
|
|
||||||
* @param callback returns complete organisation JSON
|
|
||||||
*/
|
|
||||||
public void addOrganisation(Organisation organisation, final OrganisationCallback callback) {
|
|
||||||
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(JSONObject response) {
|
|
||||||
try {
|
|
||||||
callback.onResult(response.getJSONObject(Organisation.ROOT_KEY));
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
|
||||||
@Override
|
|
||||||
public void onErrorResponse(VolleyError error) {
|
|
||||||
callback.onError(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Request r = objectRequest(
|
|
||||||
Request.Method.POST,
|
|
||||||
serverUrl + "/admin/organisations/add",
|
|
||||||
organisation.toJSON(),
|
|
||||||
listener,
|
|
||||||
errorListener
|
|
||||||
);
|
|
||||||
|
|
||||||
requestQueue.add(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void getOrganisations(final OrganisationsCallback callback) {
|
|
||||||
Response.Listener<JSONArray> listener = new Response.Listener<JSONArray>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(JSONArray response) {
|
|
||||||
|
|
||||||
JSONArray resultArray = new JSONArray();
|
|
||||||
|
|
||||||
int orgCount = response.length();
|
|
||||||
|
|
||||||
for(int i = 0; i < orgCount; i++) {
|
|
||||||
try {
|
|
||||||
resultArray.put(response.getJSONObject(i).getJSONObject("Organisation"));
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
callback.onResult(resultArray);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
|
||||||
@Override
|
|
||||||
public void onErrorResponse(VolleyError error) {
|
|
||||||
callback.onError(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Request r = arrayRequestWithJsonObject(
|
|
||||||
Request.Method.GET,
|
|
||||||
serverUrl + "/organisations/index",
|
|
||||||
null,
|
|
||||||
listener,
|
|
||||||
errorListener);
|
|
||||||
|
|
||||||
requestQueue.add(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addUser(User user, final UserCallback callback) {
|
|
||||||
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(JSONObject response) {
|
|
||||||
try {
|
|
||||||
callback.onResult(response.getJSONObject(User.ROOT_KEY));
|
|
||||||
return;
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
callback.onResult(response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
|
||||||
@Override
|
|
||||||
public void onErrorResponse(VolleyError error) {
|
|
||||||
callback.onError(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Request r = objectRequest(
|
|
||||||
Request.Method.POST,
|
|
||||||
serverUrl + "/admin/users/add",
|
|
||||||
user.toJSON(),
|
|
||||||
listener,
|
|
||||||
errorListener
|
|
||||||
);
|
|
||||||
|
|
||||||
requestQueue.add(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addServer(Server server, final ServerCallback callback) {
|
|
||||||
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(JSONObject response) {
|
|
||||||
try {
|
|
||||||
callback.onResult(response.getJSONObject(Server.ROOT_KEY));
|
|
||||||
return;
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
callback.onResult(response);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
|
||||||
@Override
|
|
||||||
public void onErrorResponse(VolleyError error) {
|
|
||||||
callback.onError(error);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Request r = objectRequest(
|
|
||||||
Request.Method.POST,
|
|
||||||
serverUrl + "/servers/add",
|
|
||||||
server.toJSON(),
|
|
||||||
listener,
|
|
||||||
errorListener
|
|
||||||
);
|
|
||||||
|
|
||||||
requestQueue.add(r);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private JsonArrayRequestWithJsonObject arrayRequestWithJsonObject(int method, String url,
|
|
||||||
@Nullable JSONObject body,
|
|
||||||
Response.Listener<JSONArray> listener,
|
|
||||||
Response.ErrorListener errorListener) {
|
|
||||||
|
|
||||||
return new JsonArrayRequestWithJsonObject(method, url, body, listener, errorListener) {
|
|
||||||
@Override
|
|
||||||
public Map<String, String> getHeaders() {
|
|
||||||
Map<String, String> params = new HashMap<>();
|
|
||||||
|
|
||||||
params.put("Authorization", automationKey);
|
|
||||||
params.put("Accept", "application/json");
|
|
||||||
params.put("Content-Type", "application/json; utf-8");
|
|
||||||
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private JsonObjectRequest objectRequest(int method, String url,
|
|
||||||
@Nullable JSONObject body,
|
|
||||||
Response.Listener<JSONObject> listener,
|
|
||||||
Response.ErrorListener errorListener) {
|
|
||||||
|
|
||||||
return new JsonObjectRequest(method, url, body, listener, errorListener) {
|
|
||||||
@Override
|
|
||||||
public Map<String, String> getHeaders() {
|
|
||||||
Map<String, String> params = new HashMap<>();
|
|
||||||
|
|
||||||
params.put("Authorization", automationKey);
|
|
||||||
params.put("Accept", "application/json");
|
|
||||||
params.put("Content-Type", "application/json; utf-8");
|
|
||||||
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServerCredentials(String serverUrl, String automationKey) {
|
|
||||||
this.serverUrl = serverUrl;
|
|
||||||
this.automationKey = automationKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MispRequest Instance(Context context, boolean loadSavedCredentials) {
|
|
||||||
|
|
||||||
if (instance == null) {
|
|
||||||
instance = new MispRequest(context, loadSavedCredentials);
|
|
||||||
}
|
|
||||||
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public interface ConnectionCallback {
|
|
||||||
void onResult(boolean connected);
|
|
||||||
}
|
}
|
||||||
public interface OrganisationsCallback {
|
|
||||||
void onResult(JSONArray organisations);
|
|
||||||
void onError(VolleyError volleyError);
|
|
||||||
}
|
|
||||||
public interface OrganisationCallback {
|
|
||||||
void onResult(JSONObject organisationInformation);
|
|
||||||
void onError(VolleyError volleyError);
|
|
||||||
}
|
|
||||||
public interface UserCallback {
|
|
||||||
void onResult(JSONObject userInformation);
|
|
||||||
|
|
||||||
void onError(VolleyError volleyError);
|
/**
|
||||||
}
|
* @param orgId organisation ID on the MISP-Instance
|
||||||
public interface ServerCallback {
|
* @param callback returns a single Organisation-JSON
|
||||||
void onResult(JSONObject server);
|
*/
|
||||||
void onError(VolleyError volleyError);
|
public void getOrganisation(int orgId, final OrganisationCallback callback) {
|
||||||
}
|
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
try {
|
||||||
|
callback.onResult(response.getJSONObject(Organisation.ROOT_KEY));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Request r = objectRequest(Request.Method.GET,
|
||||||
|
serverUrl + "/organisations/view/" + orgId,
|
||||||
|
null,
|
||||||
|
listener,
|
||||||
|
errorListener);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Typically used to get the organisation linked with this user
|
||||||
|
*
|
||||||
|
* @param callback return user associated with this API-Key
|
||||||
|
*/
|
||||||
|
public void getMyUser(final UserCallback callback) {
|
||||||
|
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
callback.onResult(response.getJSONObject(User.ROOT_KEY));
|
||||||
|
return;
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.onResult(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (serverUrl.isEmpty() || automationKey.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Request r = objectRequest(
|
||||||
|
Request.Method.GET,
|
||||||
|
serverUrl + "/users/view/me",
|
||||||
|
null,
|
||||||
|
listener,
|
||||||
|
errorListener);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param organisation The organisation that will be added
|
||||||
|
* @param callback returns complete organisation JSON
|
||||||
|
*/
|
||||||
|
public void addOrganisation(Organisation organisation, final OrganisationCallback callback) {
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
try {
|
||||||
|
callback.onResult(response.getJSONObject(Organisation.ROOT_KEY));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Request r = objectRequest(
|
||||||
|
Request.Method.POST,
|
||||||
|
serverUrl + "/admin/organisations/add",
|
||||||
|
organisation.toJSON(),
|
||||||
|
listener,
|
||||||
|
errorListener
|
||||||
|
);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeOrganisation(int organisationID, final DeleteCallback callback) {
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
callback.onSuccess();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError volleyError) {
|
||||||
|
callback.onError(volleyError);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Request r = objectRequest(
|
||||||
|
Request.Method.POST,
|
||||||
|
serverUrl + "/admin/organisations/delete/" + organisationID,
|
||||||
|
null,
|
||||||
|
listener,
|
||||||
|
errorListener
|
||||||
|
);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addUser(User user, final UserCallback callback) {
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
try {
|
||||||
|
callback.onResult(response.getJSONObject(User.ROOT_KEY));
|
||||||
|
return;
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.onResult(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Request r = objectRequest(
|
||||||
|
Request.Method.POST,
|
||||||
|
serverUrl + "/admin/users/add",
|
||||||
|
user.toJSON(),
|
||||||
|
listener,
|
||||||
|
errorListener
|
||||||
|
);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeUser(int userID, final DeleteCallback callback) {
|
||||||
|
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
callback.onSuccess();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Request r = objectRequest(
|
||||||
|
Request.Method.POST,
|
||||||
|
serverUrl + "/admin/users/delete/" + userID,
|
||||||
|
null,
|
||||||
|
listener,
|
||||||
|
errorListener
|
||||||
|
);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addServer(Server server, final ServerCallback callback) {
|
||||||
|
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(JSONObject response) {
|
||||||
|
try {
|
||||||
|
callback.onResult(response.getJSONObject(Server.ROOT_KEY));
|
||||||
|
return;
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.onResult(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Response.ErrorListener errorListener = new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callback.onError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Request r = objectRequest(
|
||||||
|
Request.Method.POST,
|
||||||
|
serverUrl + "/servers/add",
|
||||||
|
server.toJSON(),
|
||||||
|
listener,
|
||||||
|
errorListener
|
||||||
|
);
|
||||||
|
|
||||||
|
requestQueue.add(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeServer(Server server, final DeleteCallback callback) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private JsonArrayRequestWithJsonObject arrayRequestWithJsonObject(int method, String url,
|
||||||
|
@Nullable JSONObject body,
|
||||||
|
Response.Listener<JSONArray> listener,
|
||||||
|
Response.ErrorListener errorListener) {
|
||||||
|
|
||||||
|
return new JsonArrayRequestWithJsonObject(method, url, body, listener, errorListener) {
|
||||||
|
@Override
|
||||||
|
public Map<String, String> getHeaders() {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
|
||||||
|
params.put("Authorization", automationKey);
|
||||||
|
params.put("Accept", "application/json");
|
||||||
|
params.put("Content-Type", "application/json; utf-8");
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private JsonObjectRequest objectRequest(int method, String url,
|
||||||
|
@Nullable JSONObject body,
|
||||||
|
Response.Listener<JSONObject> listener,
|
||||||
|
Response.ErrorListener errorListener) {
|
||||||
|
|
||||||
|
return new JsonObjectRequest(method, url, body, listener, errorListener) {
|
||||||
|
@Override
|
||||||
|
public Map<String, String> getHeaders() {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
|
||||||
|
params.put("Authorization", automationKey);
|
||||||
|
params.put("Accept", "application/json");
|
||||||
|
params.put("Content-Type", "application/json; utf-8");
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServerCredentials(String serverUrl, String automationKey) {
|
||||||
|
this.serverUrl = serverUrl;
|
||||||
|
this.automationKey = automationKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MispRequest Instance(Context context, boolean loadSavedCredentials) {
|
||||||
|
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new MispRequest(context, loadSavedCredentials);
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface DeleteCallback {
|
||||||
|
void onSuccess();
|
||||||
|
|
||||||
|
void onError(VolleyError volleyError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ConnectionCallback {
|
||||||
|
void onResult(boolean connected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OrganisationsCallback {
|
||||||
|
void onResult(JSONArray organisations);
|
||||||
|
|
||||||
|
void onError(VolleyError volleyError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OrganisationCallback {
|
||||||
|
void onResult(JSONObject organisationInformation);
|
||||||
|
|
||||||
|
void onError(VolleyError volleyError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface UserCallback {
|
||||||
|
void onResult(JSONObject userInformation);
|
||||||
|
|
||||||
|
void onError(VolleyError volleyError);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ServerCallback {
|
||||||
|
void onResult(JSONObject server);
|
||||||
|
|
||||||
|
void onError(VolleyError volleyError);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,36 +35,40 @@
|
||||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||||
</android.support.constraint.ConstraintLayout>
|
</android.support.constraint.ConstraintLayout>
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
<LinearLayout
|
||||||
android:id="@+id/fab_finish"
|
android:orientation="horizontal"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent" android:layout_height="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_gravity="bottom">
|
||||||
app:fabSize="normal"
|
|
||||||
android:tint="@color/colorWhite"
|
|
||||||
android:src="@drawable/icon_check"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_margin="16dp"/>
|
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
<View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1"/>
|
||||||
android:id="@+id/fab_retry"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:fabSize="normal"
|
|
||||||
android:tint="@color/colorWhite"
|
|
||||||
android:src="@drawable/icon_retry"
|
|
||||||
app:layout_anchor="@id/fab_finish"
|
|
||||||
app:layout_anchorGravity="start|center_vertical"
|
|
||||||
android:layout_gravity="start|center_vertical"
|
|
||||||
android:layout_margin="16dp"/>
|
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
<android.support.design.widget.FloatingActionButton
|
||||||
android:id="@+id/fab_start"
|
android:id="@+id/fab_finish"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:fabSize="normal"
|
app:fabSize="normal"
|
||||||
android:tint="@color/colorWhite"
|
android:tint="@color/colorWhite"
|
||||||
android:src="@drawable/icon_cloud_upload"
|
android:src="@drawable/icon_check"
|
||||||
android:layout_gravity="bottom|end"
|
android:layout_margin="16dp"/>
|
||||||
android:layout_margin="16dp"/>
|
|
||||||
|
<android.support.design.widget.FloatingActionButton
|
||||||
|
android:id="@+id/fab_retry"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:fabSize="normal"
|
||||||
|
android:tint="@color/colorWhite"
|
||||||
|
android:src="@drawable/icon_retry"
|
||||||
|
android:layout_margin="16dp"/>
|
||||||
|
|
||||||
|
<android.support.design.widget.FloatingActionButton
|
||||||
|
android:id="@+id/fab_start"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:fabSize="normal"
|
||||||
|
android:tint="@color/colorWhite"
|
||||||
|
android:src="@drawable/icon_cloud_upload"
|
||||||
|
android:layout_margin="16dp"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
Loading…
Reference in New Issue