Thursday 1 March 2012

Add post and comment to Chatter

Add post and comment to Chatter
This task use java to add post and comment to Chatter
Add post and comment to Chatter
  1. Create Chatter class as following
  2. Call postUserFeed() method and postComment() method as following
Call postUserFeed() method and postComment() method
String username = "";
String password = "";
     
ConnectorConfig cc = new ConnectorConfig();
cc.setAuthEndpoint("https://login.salesforce.com/services/Soap/u/19.0");
cc.setServiceEndpoint("https://login.salesforce.com/services/Soap/u/19.0");
cc.setManualLogin(true);
PartnerConnection conn = Connector.newConnection(cc);
   
LoginResult loginResult = conn.login(username, password);
conn.setSessionHeader(loginResult.getSessionId());
String serverUrl = loginResult.getServerUrl();
cc.setServiceEndpoint(serverUrl);
      
Chatter chatter = new Chatter(loginResult);
Map<String, String> data = null;
   
String postBody = "This is post!";
data = new HashMap<String, String>();
data.put("text", postBody);
String feedItemId = chatter.postUserFeed(data);
logger.info("Feed Item Id: " + feedItemId);

String commentBody = "This is comment!";
data = new HashMap<String, String>();
data.put("text", commentBody);
String commentId = chatter.postComment(feedItemId, data);
logger.info("Comment Id: " + commentId);
    
Chatter class
public class Chatter {

    private static Logger logger = Logger.getLogger(Chatter.class);
 
    private String token = "";
    private String instance = "";
    
    public Chatter(String token, String instance) {
        this.token = token;
        this.instance = instance;
    }
    
    public Chatter(LoginResult loginResult) {
        this.token = getToken(loginResult);
        this.instance = getInstance(loginResult);
    }
    
    public String postUserFeed(Map<String, String> data) throws Exception {
        String feedItemId = "";
        String html = request(token, "post", data, "https://" + instance + ".salesforce.com/services/data/v24.0/chatter/feeds/news/me/feed-items");
        JSONObject json = (JSONObject)JSONSerializer.toJSON(html);
        feedItemId = json.getString("id");
        return feedItemId;
    }

    public String postRecordFeed(String recordId, Map<String, String> data) throws Exception {
        String feedItemId = "";
        String html = request(token, "post", data, "https://" + instance + ".salesforce.com/services/data/v24.0/chatter/feeds/record/" + recordId + "/feed-items");
        JSONObject json = (JSONObject)JSONSerializer.toJSON(html);
        feedItemId = json.getString("id");
        return feedItemId;
    }

    public String postComment(String feedItemId, Map<String, String> data) throws Exception {
        String commentId = "";
        String html = request(token, "post", data, "https://" + instance + ".salesforce.com/services/data/v24.0/chatter/feed-items/" + feedItemId + "/comments");
        JSONObject json = (JSONObject)JSONSerializer.toJSON(html);
        commentId = json.getString("id");
        return commentId;
    }
    
    public static String getToken(LoginResult loginResult) {
        return loginResult.getSessionId();
    }
    
    public static String getInstance(LoginResult loginResult) {
        String url = loginResult.getServerUrl();
        String pat1 = "https://";
        String pat2 = "-api.salesforce.com";
        int pos1 = url.indexOf(pat1);
        int pos2 = url.indexOf(pat2);
        String instance = "ap1";
        if (pos1 >= 0 && pos2 >= 0 && pos1 + pat1.length() < pos2) {
            instance = url.substring(pos1 + pat1.length(), pos2);
        }
        return instance;
    }
    
    public static String request(String token, String method, Map<String, String> data, String link) throws Exception {
        URL url = new URL(link);
        URLConnection conn = url.openConnection();
        HttpURLConnection http = (HttpURLConnection)conn;
        http.setRequestMethod(method.toUpperCase());
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestProperty("Authorization", "OAuth " + token);
  
        String output = "";
        for (String key : data.keySet()) {
            if (output.length() > 0) output += "&";
                output += key + "=" + URLEncoder.encode(data.get(key), "UTF-8");
        }
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
        out.write(output);
        out.close();

        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String response = "";
        String line = null;
        while ((line = in.readLine()) != null) {
            if (response.length() > 0) {
                response += "\r\n";
            }
            response += line;
        }
        in.close();

        return response;
    }
    
}
    

  Protected by Copyscape Online Copyright Protection

No comments:

Post a Comment