orbit-basic/app/controllers/facebook_controller.rb

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