var require = __meteor_bootstrap__.require;
var OAuth= require('oauth').OAuth;
var oauth = new OAuth(
  'https://api.twitter.com/oauth/request_token',
  'https://api.twitter.com/oauth/access_token',
  'yourToken',
  'yourTokenSecret',
  '1.0',
  'http://localhost:3000/authCallback',
  'HMAC-SHA1'
);

Meteor.methods({
  auth: function() {
    this.unblock();

    var fut = new Future;
    callback = function(error, oauth_token, oauth_token_secret, results) {
      fut.ret({
        error: error,
        oauth_token: oauth_token,
        oauth_token_secret: oauth_token_secret,
        results: results
      });
    };
    callback = _.once(callback);

    oauth.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results) {
      callback(error, oauth_token, oauth_token_secret, results)
    });

    if(fut) {
      return fut.wait();
    }
  },

  authCallback: function(oauth_token, oauth_verifier) {
    this.unblock();

    var fut = new Future;
    callback = function(error, oauth_access_token, oauth_access_token_secret, results) {
      fut.ret({
        error: error,
        oauth_access_token: oauth_access_token,
        oauth_access_token_secret: oauth_access_token_secret,
        results: results
      });
    };
    callback = _.once(callback);

    oauth.getOAuthAccessToken(
      oauth_token,
      null,
      oauth_verifier, 
      function(error, oauth_access_token, oauth_access_token_secret, results) {
        callback(error, oauth_access_token, oauth_access_token_secret, results);
      }
    );

    if(fut) {
      return fut.wait();
    }    
  }

});