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 |