99 lines
3.0 KiB
Ruby
99 lines
3.0 KiB
Ruby
require "net/http"
|
|
require "uri"
|
|
require 'json'
|
|
|
|
class FacebookController< ApplicationController
|
|
|
|
@@facebook_server = "http://fb.tp.rulingcom.com"
|
|
|
|
def register_fb
|
|
user = User.find(params[:user])
|
|
if !user.facebook
|
|
user.build_facebook(fb_identifier: params[:identifier],connected: true)
|
|
user.save!
|
|
end
|
|
render :json=>{"success"=>true,"user"=>user.facebook.fb_identifier}.to_json
|
|
# respond_to do |format|
|
|
# format.js
|
|
# end
|
|
end
|
|
|
|
def get_friends
|
|
fb = current_user.facebook rescue nil
|
|
if fb
|
|
@url = "#{@@facebook_server}/get_friends?identifier=" + current_user.facebook.fb_identifier
|
|
uri = URI.parse(@url)
|
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
request = Net::HTTP::Get.new(uri.request_uri)
|
|
response = http.request(request)
|
|
friends = response.body
|
|
friends = JSON.parse(friends)
|
|
output = Array.new
|
|
friends.each do |friend|
|
|
output << {"name"=>friend['name'],"identifier"=>friend['identifier']}
|
|
end
|
|
render :json=>{"success"=>true,"count"=>friends.count,"friends"=>output}.to_json
|
|
else
|
|
render :json=>{"success"=>false,"message"=>"User is not connected to facebook."}.to_json
|
|
end
|
|
end
|
|
|
|
def disconnect
|
|
user_fb = current_user.facebook
|
|
if user_fb
|
|
user_fb.destroy
|
|
end
|
|
render :json=>{"success"=>true}.to_json
|
|
end
|
|
|
|
def profile_import
|
|
temp_user = User.find(params[:user_id])
|
|
fb = temp_user.facebook rescue nil
|
|
if fb
|
|
@url = "#{@@facebook_server}/profile_import?identifier=" + fb.fb_identifier
|
|
uri = URI.parse(@url)
|
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
request = Net::HTTP::Get.new(uri.request_uri)
|
|
response = http.request(request)
|
|
friends = response.body
|
|
data = JSON.parse(friends)
|
|
if data["success"]
|
|
user = JSON.parse(data["user"])
|
|
u = User.find(current_user.id)
|
|
firstname = {}
|
|
lastname = {}
|
|
@site_valid_locales.each do |locale|
|
|
firstname[locale] = user["first_name"]
|
|
lastname[locale] = user["last_name"]
|
|
end
|
|
u.first_name_translations = firstname
|
|
u.last_name_translations = lastname
|
|
u.office_tel = user["phone"]
|
|
u.email = user["email"]
|
|
# u.email = "xyz@zyx.com"
|
|
u.sex = user["gender"] || "unknown"
|
|
u.remote_avatar_url = user["picture"] if user["picture"]
|
|
if u.save
|
|
render :json=>{"success"=>true,"user"=>user}.to_json
|
|
else
|
|
render :json=>{"success"=>false,"message"=>"Email already occupied."}.to_json
|
|
end
|
|
|
|
else
|
|
render :json=>{"success"=>false,"message"=>data["message"]}.to_json
|
|
end
|
|
|
|
else
|
|
render :json=>{"success"=>false,"message"=>"User is not connected to facebook."}.to_json
|
|
end
|
|
end
|
|
|
|
def server_redirect
|
|
@url = "#{@@facebook_server}/login?callback=#{request.protocol}#{request.host_with_port}/facebook/register_fb?user="+current_user.id.to_s rescue nil
|
|
if !@url.nil?
|
|
redirect_to @url
|
|
else
|
|
render :layout=> "devise"
|
|
end
|
|
end
|
|
end |