package com.tomclaw.mandarin.im.icq; import com.tomclaw.mandarin.core.GlobalProvider; import com.tomclaw.mandarin.core.QueryHelper; import com.tomclaw.mandarin.core.exceptions.BuddyNotFoundException; import com.tomclaw.mandarin.util.HttpParamsBuilder; import org.json.JSONException; import org.json.JSONObject; import static com.tomclaw.mandarin.im.icq.WimConstants.RESPONSE_OBJECT; import static com.tomclaw.mandarin.im.icq.WimConstants.STATUS_CODE; /** * Created by Solkin on 07.06.2014. */ public class BuddyRemoveRequest extends WimRequest { private String buddyId; private String groupName; public BuddyRemoveRequest() { } public BuddyRemoveRequest(String groupName, String buddyId) { this.buddyId = buddyId; this.groupName = groupName; } @Override protected int parseJson(JSONObject response) throws JSONException { JSONObject responseObject = response.getJSONObject(RESPONSE_OBJECT); int statusCode = responseObject.getInt(STATUS_CODE); // Searching for local buddy db id. int buddyDbId; try { buddyDbId = QueryHelper.getBuddyDbId(getAccountRoot().getContentResolver(), getAccountRoot().getAccountDbId(), groupName, buddyId); } catch (BuddyNotFoundException ignored) { // Wha-a-a-at?! No buddy found. Maybe, it was deleted or never exists? // Heh, delete request. return REQUEST_DELETE; } // Check for server reply. if (statusCode == WIM_OK) { // Buddy will be removed later when it became outdated in roster. return REQUEST_DELETE; } else if (statusCode == 601) { // Buddy not found in roster. QueryHelper.removeBuddy(getAccountRoot().getContentResolver(), buddyDbId); return REQUEST_DELETE; } else if (statusCode == 460 || statusCode == 462) { // No luck :( Return buddy. QueryHelper.modifyOperation(getAccountRoot().getContentResolver(), buddyDbId, GlobalProvider.ROSTER_BUDDY_OPERATION_NO); return REQUEST_DELETE; } // Maybe incorrect aim sid or other strange error we've not recognized. return REQUEST_SKIP; } @Override protected String getUrl() { return getAccountRoot().getWellKnownUrls().getWebApiBase() .concat("buddylist/removeBuddy"); } @Override protected HttpParamsBuilder getParams() { return new HttpParamsBuilder() .appendParam("aimsid", getAccountRoot().getAimSid()) .appendParam("autoResponse", "false") .appendParam("f", WimConstants.FORMAT_JSON) .appendParam("buddy", buddyId) .appendParam("group", groupName); } }