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 |