Tools

Estefan Civera

CRM Solutions

WSClient.java ver. 1.5 with doUpdate function

// Source File Name:   WSClient.java v. 1.5 with doUpdate function

package com.vtiger.vtwsclib;

import com.vtiger.vtwsclib.helpers.HTTP_Client;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class WSClient
{

    public WSClient(String url)
    {
        _servicebase = "webservice.php";
        _serviceurl = getWebServiceURL(url);
        _client = new HTTP_Client(_serviceurl);
    }

    public void reinitailize()
    {
        _client = new HTTP_Client(_serviceurl);
    }

    protected String getWebServiceURL(String url)
    {
        if(!url.endsWith("/"))
            url = (new StringBuilder(String.valueOf(url))).append("/").toString();
        return (new StringBuilder(String.valueOf(url))).append(_servicebase).toString();
    }

    public Object getId(String id)
    {
        String splits[] = id.split("x");
        return splits[1];
    }

    public boolean hasError(Object result)
    {
        boolean isError = false;
        try
        {
            if(result == null)
                isError = true;
            else
            if(result instanceof Exception)
            {
                _lasterror = ((Exception)result).getMessage();
                isError = true;
            } else
            if(result instanceof JSONObject)
            {
                JSONObject resultObject = (JSONObject)result;
                if(resultObject.get("success").toString() == "false")
                {
                    _lasterror = resultObject.get("error");
                    isError = true;
                }
            }
        }
        catch(Exception exception) { }
        return isError;
    }

    public Object lastError()
    {
        return _lasterror;
    }

    protected boolean __doChallenge(String username)
    {
        Map getdata = new HashMap();
        getdata.put("operation", "getchallenge");
        getdata.put("username", username);
        Object response = _client.doGet(getdata, true);
        if(hasError(response))
        {
            return false;
        } else
        {
            JSONObject result = (JSONObject)((JSONObject)response).get("result");
            _servertime = result.get("serverTime").toString();
            _expiretime = result.get("expireTime").toString();
            _servicetoken = result.get("token").toString();
            return true;
        }
    }

    protected void checkLogin()
    {
    }

    protected String md5Hex(String input)
        throws Exception
    {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte hash[] = md.digest(input.getBytes());
        return (new BigInteger(1, hash)).toString(16);
    }

    public Object toJSON(String input)
    {
        return _client.__jsondecode(input);
    }

    public String toJSONString(Object input)
    {
        return _client.__jsonencode(input);
    }

    public boolean doLogin(String username, String vtigerUserAccessKey)
    {
        if(!__doChallenge(username))
            return false;
        Object response;
        Map postdata = new HashMap();
        postdata.put("operation", "login");
        postdata.put("username", username);
        postdata.put("accessKey", md5Hex((new StringBuilder(String.valueOf(_servicetoken))).append(vtigerUserAccessKey).toString()));
        response = _client.doPost(postdata, true);
        if(hasError(response))
            return false;
        try
        {
            JSONObject result = (JSONObject)((JSONObject)response).get("result");
            _serviceuser = username;
            _servicekey = vtigerUserAccessKey;
            _sessionid = result.get("sessionName").toString();
            _userid = result.get("userId").toString();
        }
        catch(Exception ex)
        {
            hasError(ex);
            return false;
        }
        return true;
    }

    public JSONArray doQuery(String query)
    {
        checkLogin();
        if(!query.trim().endsWith(";"))
            query = (new StringBuilder(String.valueOf(query))).append(";").toString();
        Map getdata = new HashMap();
        getdata.put("operation", "query");
        getdata.put("sessionName", _sessionid);
        getdata.put("query", query);
        Object response = _client.doGet(getdata, true);
        if(hasError(response))
        {
            return null;
        } else
        {
            JSONArray result = (JSONArray)((JSONObject)response).get("result");
            return result;
        }
    }

    public List getResultColumns(JSONArray result)
    {
        List columns = new ArrayList();
        if(!result.isEmpty())
        {
            JSONObject row = (JSONObject)result.get(0);
            for(Iterator iterator = row.keySet().iterator(); iterator.hasNext(); columns.add(iterator.next().toString()));
        }
        return columns;
    }

    public Map doListTypes()
    {
        checkLogin();
        Map getdata = new HashMap();
        getdata.put("operation", "listtypes");
        getdata.put("sessionName", _sessionid);
        Object response = _client.doGet(getdata, true);
        if(hasError(response))
            return null;
        JSONObject result = (JSONObject)((JSONObject)response).get("result");
        JSONArray resultTypes = (JSONArray)result.get("types");
        Map returnvalue = new HashMap();
        Object value;
        Map returnpart;
        for(Iterator iterator = resultTypes.iterator(); iterator.hasNext(); returnvalue.put(value, returnpart))
        {
            value = iterator.next();
            returnpart = new HashMap();
            returnpart.put("name", value.toString());
        }

        return returnvalue;
    }

    public JSONObject doDescribe(String module)
    {
        checkLogin();
        Map getdata = new HashMap();
        getdata.put("operation", "describe");
        getdata.put("sessionName", _sessionid);
        getdata.put("elementType", module);
        Object response = _client.doGet(getdata, true);
        if(hasError(response))
        {
            return null;
        } else
        {
            JSONObject result = (JSONObject)((JSONObject)response).get("result");
            return result;
        }
    }

    public JSONObject doRetrieve(Object record)
    {
        checkLogin();
        Map getdata = new HashMap();
        getdata.put("operation", "retrieve");
        getdata.put("sessionName", _sessionid);
        getdata.put("id", record);
        Object response = _client.doGet(getdata, true);
        if(hasError(response))
        {
            return null;
        } else
        {
            JSONObject result = (JSONObject)((JSONObject)response).get("result");
            return result;
        }
    }

    public JSONObject doCreate(String module, Map valueMap)
    {
        checkLogin();
        if(!valueMap.containsKey("assigned_user_id"))
            valueMap.put("assigned_user_id", _userid);
        Map postdata = new HashMap();
        postdata.put("operation", "create");
        postdata.put("sessionName", _sessionid);
        postdata.put("elementType", module);
        postdata.put("element", toJSONString(valueMap));
        Object response = _client.doPost(postdata, true);
        if(hasError(response))
        {
            return null;
        } else
        {
            JSONObject result = (JSONObject)((JSONObject)response).get("result");
            return result;
        }
    }

public JSONObject doUpdate(String module, Map valueMap)
    {
        checkLogin();
        if(!valueMap.containsKey("assigned_user_id"))
            valueMap.put("assigned_user_id", _userid);
        Map postdata = new HashMap();
        postdata.put("operation", "update");
        postdata.put("sessionName", _sessionid);
        postdata.put("elementType", module);
        postdata.put("element", toJSONString(valueMap));
        Object response = _client.doPost(postdata, true);
        if(hasError(response))
        {
            return null;
        } else
        {
            JSONObject result = (JSONObject)((JSONObject)response).get("result");
            return result;
        }
    }


    public Object doInvoke(String method, Object params)
    {
        return doInvoke(method, params, "GET");
    }

    public Object doInvoke(String method, Object params, String type)
    {
        checkLogin();
        Map senddata = new HashMap();
        senddata.put("operation", method);
        senddata.put("sessionName", _sessionid);
        if(params != null)
        {
            Map valueMap = (Map)params;
            if(!valueMap.isEmpty())
            {
                for(Iterator iterator = valueMap.keySet().iterator(); iterator.hasNext();)
                {
                    Object key = iterator.next();
                    if(!senddata.containsKey(key))
                        senddata.put(key, valueMap.get(key));
                }

            }
        }
        Object response = null;
        if(type.toUpperCase() == "POST")
            response = _client.doPost(senddata, true);
        else
            response = _client.doGet(senddata, true);
        if(hasError(response))
        {
            return null;
        } else
        {
            Object result = ((JSONObject)response).get("result");
            return result;
        }
    }

    String _servicebase;
    HTTP_Client _client;
    String _serviceurl;
    String _serviceuser;
    String _servicekey;
    String _servertime;
    String _expiretime;
    String _servicetoken;
    String _sessionid;
    Object _userid;
    Object _lasterror;
}

Add comment


Security code


Refresh

Richiedi la Demo di Vtiger CRM

Vuoi una demo gratuita di VTiger CRM?

Non esitare a contarmi! Per info info@estefancivera.net - 3207728697 oppure visita la pagina della demo

joomla templates

INFORMATIVA CIRCA L'UTILIZZO DEI COOKIES
Questo sito utilizza cookie, anche di terze parti. Cliccando su "Ok" acconsenti all’uso dei cookie. Puoi prendere visione dell’informativa estesa sull’uso dei cookie cliccando QUI.

Accetto i cookies provenienti da questo sito.