Class: GoogleVoice::Api
- Inherits:
-
Object
- Object
- GoogleVoice::Api
- Defined in:
- lib/googlevoice47.rb
Defined Under Namespace
Classes: InvalidLoginException, InvalidPhoneNumberException
Instance Attribute Summary collapse
-
#agent ⇒ Object
Returns the value of attribute agent.
-
#coder ⇒ Object
Returns the value of attribute coder.
-
#email ⇒ Object
Returns the value of attribute email.
-
#password ⇒ Object
Returns the value of attribute password.
-
#rnr_se ⇒ Object
Returns the value of attribute rnr_se.
Instance Method Summary collapse
- #call(remote_number, forwarding_number) ⇒ Object
- #cancel ⇒ Object
-
#initialize(email, password) ⇒ Api
constructor
A new instance of Api.
- #login ⇒ Object
-
#sms(remote_number, text_message) ⇒ Object
def logged_in? (@agent !=nil) && (@rnr_se != nil) end.
- #validate_number(phone_number) ⇒ Object
Constructor Details
#initialize(email, password) ⇒ Api
Returns a new instance of Api.
21 22 23 24 25 26 27 28 |
# File 'lib/googlevoice47.rb', line 21 def initialize(email, password) @agent = Mechanize.new @coder = HTMLEntities.new @email = email @password = password init_xml_methods() end |
Instance Attribute Details
#agent ⇒ Object
Returns the value of attribute agent.
16 17 18 |
# File 'lib/googlevoice47.rb', line 16 def agent @agent end |
#coder ⇒ Object
Returns the value of attribute coder.
16 17 18 |
# File 'lib/googlevoice47.rb', line 16 def coder @coder end |
#email ⇒ Object
Returns the value of attribute email.
16 17 18 |
# File 'lib/googlevoice47.rb', line 16 def email @email end |
#password ⇒ Object
Returns the value of attribute password.
16 17 18 |
# File 'lib/googlevoice47.rb', line 16 def password @password end |
#rnr_se ⇒ Object
Returns the value of attribute rnr_se.
16 17 18 |
# File 'lib/googlevoice47.rb', line 16 def rnr_se @rnr_se end |
Instance Method Details
#call(remote_number, forwarding_number) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/googlevoice47.rb', line 52 def call(remote_number, forwarding_number) #login unless logged_in? remote_number = validate_number(remote_number) forwarding_number = validate_number(forwarding_number) @agent.post('https://www.google.com/voice/call/connect/', :outgoingNumber => remote_number, :forwardingNumber => forwarding_number, :phoneType => 2, :subscriberNumber => 'undefined', :remember => '0', "_rnr_se" => @rnr_se) end |
#cancel ⇒ Object
59 60 61 62 |
# File 'lib/googlevoice47.rb', line 59 def cancel() #login unless logged_in? @agent.post('https://www.google.com/voice/call/cancel/', :outgoingNumber => 'undefined', :forwardingNumber => 'undefined', :cancelType => 'C2C', "_rnr_se" => @rnr_se) end |
#login ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/googlevoice47.rb', line 30 def login() login_page = @agent.get("https://www.google.com/accounts/ServiceLogin?service=grandcentral") login_page.forms.first.field_with(:name=>"Email").value = @email login_page.forms.first.field_with(:name=>"Passwd").value = @password agent.submit(login_page.forms.first) page = @agent.get('https://www.google.com/voice/') dialing_form = page.forms.find { |f| f.has_field?('_rnr_se') } raise InvalidLoginException, "Cannot login to Google Voice with #{@email}" unless dialing_form @rnr_se = dialing_form.field_with(:name => '_rnr_se').value end |
#sms(remote_number, text_message) ⇒ Object
def logged_in?
(@agent !=nil) && (@rnr_se != nil)
end
45 46 47 48 49 50 |
# File 'lib/googlevoice47.rb', line 45 def sms(remote_number, ) #login unless logged_in? remote_number = validate_number(remote_number) = @coder.encode() @agent.post('https://www.google.com/voice/sms/send/', :id => '', :phoneNumber => remote_number, :text => , "_rnr_se" => @rnr_se) end |
#validate_number(phone_number) ⇒ Object
64 65 66 67 68 |
# File 'lib/googlevoice47.rb', line 64 def validate_number(phone_number) phone_number = phone_number.gsub(/\D/,'') raise InvalidPhoneNumberException, "Invalid Phone Number #{phone_number}" if phone_number.length < 4 || phone_number.length > 15 return phone_number end |