diaspora/spec/support/chubbies/app.rb

75 lines
1.5 KiB
Ruby

require 'rubygems'
require 'bundler/setup'
require 'sinatra'
require 'haml'
require 'httparty'
def resource_host
url = "http://localhost:"
if ENV["DIASPORA_PORT"]
url << ENV["DIASPORA_PORT"]
else
url << "3000"
end
url
end
CLIENT_ID = 'abcdefgh12345678'
CLIENT_SECRET = 'secret'
RESOURCE_HOST = resource_host
enable :sessions
helpers do
def redirect_uri
"http://" + request.host_with_port + "/callback"
end
def access_token
session[:access_token]
end
def get_with_access_token(path)
HTTParty.get(RESOURCE_HOST + path, :query => {:oauth_token => access_token})
end
def authorize_url
RESOURCE_HOST + "/oauth/authorize?client_id=#{CLIENT_ID}&client_secret=#{CLIENT_SECRET}&redirect_uri=#{redirect_uri}"
end
def access_token_url
RESOURCE_HOST + "/oauth/access_token"
end
end
get '/' do
haml :home
end
get '/callback' do
unless params["error"]
response = HTTParty.post(access_token_url, :body => {
:client_id => CLIENT_ID,
:client_secret => CLIENT_SECRET,
:redirect_uri => redirect_uri,
:code => params["code"],
:grant_type => 'authorization_code'}
)
session[:access_token] = response["access_token"]
redirect '/account'
else
"What is your major malfunction?"
end
end
get '/account' do
if access_token
@resource_server = RESOURCE_HOST
@url = "/api/v0/me.json"
@resource_response = get_with_access_token(@url)
haml :response
else
redirect authorize_url
end
end