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