Skip to content

Instantly share code, notes, and snippets.

@gomasy
Last active August 29, 2015 14:11
Show Gist options
  • Save gomasy/150c4b4fd87972085710 to your computer and use it in GitHub Desktop.
Save gomasy/150c4b4fd87972085710 to your computer and use it in GitHub Desktop.
statuses/update.json
require "net/https"
require "securerandom"
require "openssl"
require "base64"
require "uri"
require "erb"
include ERB::Util
http_method = "POST"
url = URI("https://api.twitter.com/1.1/statuses/update.json")
body = "status=#{url_encode(ARGV[0])}"
consumer_key = ""
consumer_secret = ""
access_token = ""
access_token_secret = ""
oauth_nonce = SecureRandom.hex
oauth_timestamp = Time.now.to_i
oauth_version = "1.0"
oauth_signature_method = "HMAC-SHA1"
oauth_signature_base =
"#{http_method}&" \
"#{url_encode(url)}&" \
"#{url_encode(
"oauth_consumer_key=#{consumer_key}&" \
"oauth_nonce=#{oauth_nonce}&" \
"oauth_signature_method=#{oauth_signature_method}&" \
"oauth_timestamp=#{oauth_timestamp}&" \
"oauth_token=#{access_token}&" \
"oauth_version=#{oauth_version}&" \
"#{body}"
)}"
puts "OAuth Signature Base: #{oauth_signature_base}"
sign_key = "#{consumer_secret}&#{access_token_secret}"
oauth_signature = Base64.encode64(OpenSSL::HMAC.digest("sha1", sign_key, oauth_signature_base))
puts "OAuth Signature: #{oauth_signature}"
header = {
"Authorization" =>
"OAuth " \
"oauth_consumer_key=\"#{consumer_key}\", " \
"oauth_nonce=\"#{oauth_nonce}\", " \
"oauth_signature=\"#{url_encode(oauth_signature)}\", " \
"oauth_signature_method=\"#{oauth_signature_method}\", " \
"oauth_timestamp=\"#{oauth_timestamp}\", " \
"oauth_token=\"#{access_token}\", " \
"oauth_version=\"#{oauth_version}\""
}
puts "OAuth Header: #{header["Authorization"]}"
req = Net::HTTP.new(url.host, url.port)
req.use_ssl = true
puts req.post(url.path, body, header).body
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment