79 lines
2.6 KiB
Ruby
79 lines
2.6 KiB
Ruby
|
class 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 = current_user.other_accounts.where(:type => @account).first rescue nil
|
||
|
@otheraccount.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 = current_user.other_accounts.where(:type => "gmail") 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><TITLE>Unauthorized</TITLE><H1>No account connected.</H1></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 = current_user.other_accounts.without(:encrypted_password)
|
||
|
render :json => @accounts.to_json
|
||
|
end
|
||
|
end
|