Skip to content

Instantly share code, notes, and snippets.

@asachs
Created January 27, 2012 08:30
Show Gist options
  • Save asachs/1687783 to your computer and use it in GitHub Desktop.
Save asachs/1687783 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'bundler/setup'
require 'typhoeus'
require 'json'
require 'uri'
class User
class << self; attr_accessor :base_uri end
def self.find_by_name(name)
name = URI.escape(name)
response = Typhoeus::Request.get("#{base_uri}/api/v1/users/#{name}")
if response.code == 200
JSON.parse(response.body)["user"]
elsif response.code == 404
nil
else
raise response.body
end
end
def self.create(attributes = {})
response = Typhoeus::Request.post("#{base_uri}/api/v1/users", :body => attributes.to_json)
if response.success?
JSON.parse(response.body)["user"]
else
raise response.body
end
end
def self.update(name, attributes)
name = URI.escape(name)
response = Typhoeus::Request.put("#{base_uri}/api/v1/users/#{name}", :body => attributes.to_json)
if response.success?
JSON.parse(response.body)["user"]
else
raise response.body
end
end
def self.destroy(name)
name = URI.escape(name)
response = Typhoeus::Request.delete("#{base_uri}/api/v1/users/#{name}")
response.success?
end
def self.login(name, password)
name = URI.escape(name)
response = Typhoeus::Request.post("#{base_uri}/api/v1/users/#{name}/sessions", :body => {:password => password}.to_json)
if response.success?
JSON.parse(response.body)["user"]
elsif response.code == 400
nil
else
raise response.body
end
end
end
#User.base_uri = "http://localhost:3000"
User.base_uri = "http://userservice.heroku.com"
begin
t = Time.now
puts "Creating new user"
puts "User.create :name => 'andre sachs', :email => '[email protected]', :password => 'sillypassword', :bio => 'stinky'"
puts User.create :name => 'andre sachs', :email => '[email protected]', :password => 'sillypassword', :bio => 'stinky'
puts
puts "Finding the just created user"
puts "u = User.find_by_name 'andre sachs'"
u = User.find_by_name 'andre sachs'
puts u.inspect
puts
puts "Modifying the Bio"
puts "u['bio'] = 'moo moo moo moo'"
puts "u = User.update u['name'], u'"
u['bio'] = 'moo moo moo moo'
du = User.update u['name'], u
puts u
puts
puts "Calling Login for the user"
puts "User.login 'andre sachs', 'sillypassword'"
puts User.login 'andre sachs', 'sillypassword'
puts
puts "Destroying the user"
puts "User.destroy 'andre sachs'"
puts User.destroy 'andre sachs'
puts
puts "Time elapsed #{Time.now - t}s"
rescue Exception => e
puts e.message
puts e.backtrace.inspect
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment