Skip to content

Instantly share code, notes, and snippets.

@Sutto
Created December 29, 2009 11:20
Show Gist options
  • Save Sutto/265261 to your computer and use it in GitHub Desktop.
Save Sutto/265261 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'em-http'
require 'oauth'
# At a minimum, require 'oauth/request_proxy/em_http_request'
# for this example, we'll use Net::HTTP like support.
require 'oauth/client/em_http'
# You need two things: an oauth consumer and an access token.
# You need to generate an access token, I suggest looking elsewhere how to do that or wait for a full tutorial.
# For a consumer key / consumer secret, signup for an app at:
# http://twitter.com/apps/new
# Edit in your details.
CONSUMER_KEY = ""
CONSUMER_SECRET = ""
ACCESS_TOKEN = ""
ACCESS_TOKEN_SECRET = ""
def twitter_oauth_consumer
@twitter_oauth_consumer ||= OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site => "http://twitter.com")
end
def twitter_oauth_access_token
@twitter_oauth_access_token ||= OAuth::AccessToken.new(twitter_oauth_consumer, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
end
EM.run do
request = EventMachine::HttpRequest.new('http://twitter.com/statuses/update.json')
http = request.post(:body => {'status' => 'Hello Twitter from em-http-request with OAuth'}, :head => {"Content-Type" => "application/x-www-form-urlencoded"}) do |client|
twitter_oauth_consumer.sign!(client, twitter_oauth_access_token)
end
http.callback do
puts "Response: #{http.response} (Code: #{http.response_header.status})"
EM.stop_event_loop
end
http.errback do
puts "Failed to post"
EM.stop_event_loop
end
end

Edit in your details and run - it should post your glorious tweets to twitter!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment