78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Desktop::OtheraccountsController< ApplicationController
 | |
|   require 'open-uri'
 | |
|   require 'rexml/document'
 | |
|   require 'net/http' 
 | |
|   require 'net/https'
 | |
|  # require 'twitter'
 | |
|   include REXML
 | |
| 
 | |
|   def saveaccountinfo
 | |
|     @dowhat = params['dowhat']
 | |
|     @email = params['email']
 | |
|     @password = params['password']
 | |
|     @account = params['account']
 | |
|     case @dowhat
 | |
|     when "new"
 | |
|       OtherAccount.create(user_id: current_user.id, email: @email, encrypted_password: @password, type: @account)
 | |
|     when "edit"
 | |
|       @otheraccount = OtherAccount.where(:type.all => [@account],:user_id.all => [current_user.id]) rescue nil
 | |
|       @otheraccount.first.update_attributes(:email => @email, :encrypted_password => @password)
 | |
|     when "delete"
 | |
|       @otheraccount = OtherAccount.where(:type.all => [@account], :user_id.all => [current_user.id]) rescue nil
 | |
|       @otheraccount.destroy_all
 | |
|     end
 | |
|     a = Array.new
 | |
|     a << {"success"=>"true"}
 | |
|     render :json=>a.to_json
 | |
|   end
 | |
| 
 | |
|   def gmail
 | |
|     @gmailaccount = OtherAccount.where(:type.all => ["gmail"],:user_id.all => [current_user.id]) rescue nil
 | |
|     if @gmailaccount.first != nil
 | |
|       @decrypted_password = @gmailaccount.first.encrypted_password.decrypt 
 | |
|       @email = @gmailaccount.first.email
 | |
|       url = URI.parse("https://mail.google.com/mail/feed/atom")
 | |
|       #url = URI.parse("https://www.google.com/m8/feeds/contacts/default/full")
 | |
|       req = Net::HTTP::Get.new(url.path)
 | |
|       req.basic_auth @email, @decrypted_password
 | |
|       req.content_type = 'text/xml'
 | |
| 
 | |
|       http = Net::HTTP.new(url.host, url.port)
 | |
|       http.use_ssl = true
 | |
|       response = http.start { |http| http.request(req) }
 | |
| 
 | |
|       root = Document.new(response.read_body).root
 | |
|       render :text=>root
 | |
|     else
 | |
|       msg = "<HEAD><ERROR>true</ERROR><ERRORMSG>Account setting problem.</ERRORMSG></HEAD>"
 | |
|       respond_to do |m|
 | |
|         m.xml {render :xml=>msg}
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def twitter
 | |
|     # token = "Yh9qYe0lhWk27TZJamnhrA"
 | |
|     # secret = "iBgxJ5BrxfGFLkp7aB6pyCSzd0zcJiYDqJGFBK6Wdo"
 | |
|     # oauth = Twitter::OAuth.new(token,secret)
 | |
| 
 | |
|     # oauth_token = oauth.request_token.token
 | |
|     # oauth_secret = oauth.request_token.secret
 | |
|     #require File.dirname(__FILE__)+"/../lib/contacts"
 | |
|     @gmailaccount = OtherAccount.where(:type.all => ["gmail"],:user_id.all => [current_user.id]) rescue nil
 | |
|     if @gmailaccount.first != nil
 | |
|       login = @gmailaccount.first.encrypted_password.decrypt 
 | |
|       password = @gmailaccount.first.email
 | |
| 
 | |
|       @contacts =   Contacts::Gmail.new(login, password).contacts
 | |
| 
 | |
|       render :json => @contacts.to_json
 | |
|     end
 | |
| 
 | |
|   end
 | |
| 
 | |
|   def getaccounts
 | |
|     @accounts = OtherAccount.where(:user_id.all => [current_user.id]).without(:encrypted_password)
 | |
|     render :json => @accounts.to_json
 | |
|   end
 | |
| end |