XDomainRequest Transport

XDomainRequest, with jQuery transport.

HTML

<script src="http://oauth.googlecode.com/svn/code/javascript/sha1.js"></script>
<script src="http://oauth.googlecode.com/svn/code/javascript/oauth.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.1/jquery.xdomainrequest.min.js"></script>
<div id="output"></div>

JavaScript

var $output = $('#output');

var getAuthorizationHeader = function(url, key, secret) {
  var message = {
     method     : 'GET'
    ,action     : url
    ,parameters : { oauth_nonce: OAuth.nonce(32) }
  };

  // Timestamp gets set wrong in IE>9, so set up a test
  var currentDate = +(new Date);
  // Fill the message object with the necessary fields (timestamp, signature, etc.)
  OAuth.completeRequest(message, {
     consumerKey    : ''+key
    ,consumerSecret : ''+secret
  });

  return OAuth.getAuthorizationHeader('', message.parameters);
};

// Many browsers and users don't have correct time, so get a stable offset to adjust it by
var correctTime = function(callback) {
  return callback(null);
  $.ajax({
    url: 'http://192.237.222.223:1999/time.json?key=6oWsI1rwqw5ccvlcbrxgkLAqOts=',
    type: 'GET',
    dataType: 'json',
    success: function(time){
      OAuth.correctTimestamp(parseInt(time.unix));
      callback(null);
    },
    error: function(jqXHR, textStatus){
      callback(textStatus);
    }
  });
};

var getNARCData = function(key, secret, callback) {
  $.ajax({
    url: 'http://192.237.222.223:1999/get_data',
    type: 'GET',
    data: {
      auth:
        getAuthorizationHeader('http://192.237.222.223:1999/get_data', key, secret)
    },
    success: function(data){
      callback(null, data);
    },
    error: function(jqXHR, textStatus, thrownError){
      console.log(JSON.stringify(jqXHR));
      console.log(JSON.stringify(textStatus));
      console.log(JSON.stringify(thrownError));
      callback(textStatus);
    }
  });
};

/*
 * Init function here
*/

$output.text('Loading...');

// First make sure we're sending correct timestamps
correctTime(function(error){
  if (error) {
    if (window.console) {
      console.log("Couldn't get correct time; continuing anyway.");
    } else {
      alert("Couldn't get correct time; continuing anyway.");
    }
  }

  // Then get the NARC data
  getNARCData(99999999, '5a905fc3', function(error, data) {
 ...