F Twitter REST APIs

Twitter REST APIs are supported by OWSM.

The REST APIs provide programmatic access to read and write Twitter data, author a new Tweet, read author profile and follower data etc. The REST API identifies Twitter applications and users using OAuth, responses are available in JSON. Two APIs (one POST and one GET) which are tested are listed below:

  • Twitter REST Client sample code for POST request

  • Twitter REST Client sample code for GET request

F.1 Twitter REST Client sample code for POST request

REST API identify Twitter applications and users, using OAuth. The responses are available in JSON. The following is a REST Client sample code for POST request.

package sample.rest.client;

  

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Date; 

import java.util.Set; 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.ws.rs.client.Client;

import javax.ws.rs.client.ClientBuilder;

import javax.ws.rs.client.Entity;

import javax.ws.rs.client.Invocation.Builder;

import javax.ws.rs.client.WebTarget;

import javax.ws.rs.core.MediaType;

import javax.ws.rs.core.Response;

import javax.ws.rs.core.MultivaluedMap;

import javax.ws.rs.core.MultivaluedHashMap;

 

import org.glassfish.jersey.client.ClientConfig;

import oracle.wsm.metadata.feature.PolicyReferenceFeature; 

import oracle.wsm.metadata.feature.AbstractPolicyFeature; 

import oracle.wsm.metadata.feature.PolicySetFeature; 

import oracle.wsm.metadata.feature.PropertyFeature;

import oracle.wsm.security.util.SecurityConstants;

  

public class TwitterTestClientPost extends HttpServlet {

    @Override

    protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse)

    throws ServletException, IOException {

        httpResponse.setContentType("text/plain;charset=UTF-8");

        PrintWriter out = httpResponse.getWriter();

        try {   

            System.setProperty("https.proxyHost", "www-proxy.us.example.com");

            System.setProperty("https.proxyPort", "80");

            String BASE_URI = "https://api.twitter.com/1.1/statuses/update.json";

  

            PropertyFeature clientCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_CLIENT_CSF_KEY, "basic.client.oauth1.credentials");

            PropertyFeature accessTokenCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_ACCESS_TOKEN_CSF_KEY, "basic.token.oauth1.credentials");            

            PolicyReferenceFeature clientPRF = new PolicyReferenceFeature("oracle/http_oauth1_token_client_policy", clientCsfKey, accessTokenCsfKey);

            ClientConfig cc = new ClientConfig();

            cc.property(AbstractPolicyFeature.ABSTRACT_POLICY_FEATURE, new PolicySetFeature(clientPRF));

            Client client = ClientBuilder.newClient(cc);

            WebTarget webTarget = client.target(BASE_URI);

          

            Builder request = webTarget.request(MediaType.APPLICATION_JSON_TYPE);

            MultivaluedMap<String, String> formData = new MultivaluedHasMap<String, String>();

            String tweet = "Testing POST_Status at " + new Date();

            formData.add("status", tweet);

            Response response = request.post(Entity.form(formData));

                                                                                   

            String textEntity = response.readEntity(String.class);

            out.println("Response status :" + response.getStatus());

            out.println("Response :" + textEntity);

                                                MultivaluedMap<String,Object> map = response.getHeaders();

                                                Set<String> headerkeys = map.keySet();

            for (String key : headerKeys) {

               out.println("Header Name :" + key);

               out.println("Header Value :" + map.get(key));

            }

        } catch (Exception e) {

            out.println("exception message :" + e);        

        }

    }                                           

F.2 Twitter REST Client sample code for GET request

REST API identify Twitter applications and users using OAuth. The responses are available in JSON. The following is a REST Client sample code for GET request.

package sample.rest.client; 

   

import java.io.IOException; 

import java.io.PrintWriter; 

import java.util.Date;  

import java.util.Set;  

import javax.servlet.ServletException; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

import javax.ws.rs.client.Client; 

import javax.ws.rs.client.ClientBuilder; 

import javax.ws.rs.client.Entity; 

import javax.ws.rs.client.Invocation.Builder; 

import javax.ws.rs.client.WebTarget; 

import javax.ws.rs.core.MediaType; 

import javax.ws.rs.core.Response;

import javax.ws.rs.core.MultivaluedMap; 

import javax.ws.rs.core.MultivaluedHashMap;

import org.glassfish.jersey.client.ClientConfig; 

import oracle.wsm.metadata.feature.PolicyReferenceFeature;  

import oracle.wsm.metadata.feature.AbstractPolicyFeature; 

import oracle.wsm.metadata.feature.PolicySetFeature;  

import oracle.wsm.metadata.feature.PropertyFeature; 

import oracle.wsm.security.util.SecurityConstants;

  

public class TwitterTestClientGet extends HttpServlet {    

    @Override

    protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse)

    throws ServletException, IOException {

        httpResponse.setContentType("text/plain;charset=UTF-8");

        PrintWriter out = httpResponse.getWriter();

        try {

            System.setProperty("https.proxyHost", "www-proxy.us.example.com");

            System.setProperty("https.proxyPort", "80");

            String BASE_URI = "https://api.twitter.com/1.1/followers/list.json?screen_name=TwiiterapiT";

            PropertyFeature clientCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_CLIENT_CSF_KEY, "basic.client.oauth1.credentials");

            PropertyFeature accessTokenCsfKey = new PropertyFeature(SecurityConstants.ConfigOverride.CO_OAUTH1_ACCESS_TOKEN_CSF_KEY, "basic.token.oauth1.credentials");

            PolicyReferenceFeature clientPRF = new PolicyReferenceFeature("oracle/http_oauth1_token_client_policy", clientCsfKey, accessTokenCsfKey);

            ClientConfig cc = new ClientConfig();

            cc.property(AbstractPolicyFeature.ABSTRACT_POLICY_FEATURE, new PolicySetFeature(clientPRF));

            Client client = ClientBuilder.newClient(cc);

            WebTarget webTarget = client.target(BASE_URI);

            Builder request = webTarget.request(MediaType.APPLICATION_JSON_TYPE);

            Response response = request.get(Response.class);

 

            String textEntity = response.readEntity(String.class);

            out.println("Response status :" + response.getStatus());

            out.println("Response :" + textEntity);

            MultivaluedMap <String,object> map = response.getHeaders();   
                                
                                                Set<String> headerkeys = map.kerySet();

                                                for (String key : headerkeys) {

                                                                out.println("Header Name :" + key);

                out.println("Header Value :" + map.get(key));

            }

        } catch (Exception e) {

            out.println("exception message :" + e);

        }

    }

}