Advertisement
Guest User

Untitled

a guest
Oct 16th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.58 KB | None | 0 0
  1. /*
  2.  * Simple example makes call to Omniture API to get a companies report suites
  3.  *
  4.  * Requires the following libraries
  5.  *
  6.  *  jakarta commons-lang 2.4
  7.  *  jakarta commons-beanutils 1.7.0
  8.  *  jakarta commons-collections 3.2
  9.  *  jakarta commons-logging 1.1.1
  10.  *  ezmorph 1.0.6
  11.  *  json-lib-2.3-jdk13
  12.  *  
  13.  *
  14.  *  @author Lamont Crook
  15.  *  @email lamont@adobe.com
  16.  *
  17.  */
  18.  
  19. package com.omniture.security;
  20.  
  21. import java.io.BufferedReader;
  22. import java.io.IOException;
  23. import java.io.InputStream;
  24. import java.io.InputStreamReader;
  25. import java.io.OutputStreamWriter;
  26. import java.io.UnsupportedEncodingException;
  27. import java.net.URL;
  28. import java.net.URLConnection;
  29. import java.security.MessageDigest;
  30. import java.text.SimpleDateFormat;
  31. import java.util.Date;
  32. import java.util.HashMap;
  33. import java.util.Map;
  34.  
  35. import net.sf.json.JSONArray;
  36. import net.sf.json.JSONObject;
  37.  
  38. public class OMTR_REST {
  39.         private static String USERNAME = "[your username]";
  40.     private static String PASSWORD = "[your shared secret]";
  41.     private static String ENDPOINT = "https://api.omniture.com/admin/1.3/rest/"; //san jose endpoint, change for your company's datacenter
  42.  
  43.     private OMTR_REST() {}
  44.  
  45.     public static String callMethod(String method, String data) throws IOException {
  46.         URL url = new URL(ENDPOINT + "?method=" + method);
  47.         URLConnection connection = url.openConnection();
  48.         connection.addRequestProperty("X-WSSE", getHeader());
  49.  
  50.         connection.setDoOutput(true);
  51.         OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
  52.         wr.write(data);
  53.         wr.flush();
  54.  
  55.         InputStream in = connection.getInputStream();
  56.         BufferedReader res = new BufferedReader(new InputStreamReader(in, "UTF-8"));
  57.  
  58.         StringBuffer sBuffer = new StringBuffer();
  59.         String inputLine;
  60.         while ((inputLine = res.readLine()) != null)
  61.             sBuffer.append(inputLine);
  62.  
  63.         res.close();
  64.  
  65.         return sBuffer.toString();
  66.     }
  67.  
  68.     private static String getHeader() throws UnsupportedEncodingException {
  69.         byte[] nonceB = generateNonce();
  70.         String nonce = base64Encode(nonceB);
  71.         String created = generateTimestamp();
  72.         String password64 = getBase64Digest(nonceB, created.getBytes("UTF-8"), PASSWORD.getBytes("UTF-8"));
  73.         StringBuffer header = new StringBuffer("UsernameToken Username=\"");
  74.         header.append(USERNAME);
  75.         header.append("\", ");
  76.         header.append("PasswordDigest=\"");
  77.         header.append(password64.trim());
  78.         header.append("\", ");
  79.         header.append("Nonce=\"");
  80.         header.append(nonce.trim());
  81.         header.append("\", ");
  82.         header.append("Created=\"");
  83.         header.append(created);
  84.         header.append("\"");
  85.         return header.toString();
  86.     }
  87.  
  88.     private static byte[] generateNonce() {
  89.         String nonce = Long.toString(new Date().getTime());
  90.         return nonce.getBytes();
  91.     }
  92.  
  93.     private static String generateTimestamp() {
  94.         SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
  95.         return dateFormatter.format(new Date());
  96.     }
  97.  
  98.     private static synchronized String getBase64Digest(byte[] nonce, byte[] created, byte[] password) {
  99.       try {
  100.         MessageDigest messageDigester = MessageDigest.getInstance("SHA-1");
  101.         // SHA-1 ( nonce + created + password )
  102.         messageDigester.reset();
  103.         messageDigester.update(nonce);
  104.         messageDigester.update(created);
  105.         messageDigester.update(password);
  106.         return base64Encode(messageDigester.digest());
  107.       } catch (java.security.NoSuchAlgorithmException e) {
  108.         throw new RuntimeException(e);
  109.       }
  110.     }
  111.  
  112.     private static String base64Encode(byte[] bytes) {
  113.       return Base64Coder.encodeLines(bytes);
  114.     }
  115.  
  116.     public static void main(String[] args) throws IOException {
  117.         Map map = new HashMap();
  118.         map.put("rs_type", new String[]{"standard"});
  119.         map.put("sp", "");
  120.  
  121.         String response = OMTR_REST.callMethod("Company.GetReportSuites", JSONObject.fromObject(map).toString());
  122.         JSONObject jsonObj = JSONObject.fromObject(response);
  123.         JSONArray jsonArry = JSONArray.fromObject(jsonObj.get("report_suites"));
  124.  
  125.         for(int i = 0; i < jsonArry.size(); i++) {
  126.             System.out.println("Report Suite ID: " + JSONObject.fromObject(jsonArry.get(i)).get("rsid"));
  127.             System.out.println("Site Title: " + JSONObject.fromObject(jsonArry.get(i)).get("site_title"));
  128.             System.out.println();
  129.         }
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement