google-voice 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/google/voice/base.rb +12 -0
- data/lib/google/voice/missed.rb +1 -1
- data/lib/google/voice/sms.rb +42 -2
- metadata +36 -21
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/google/voice/base.rb
CHANGED
@@ -28,6 +28,18 @@ module Google
|
|
28
28
|
@curb.perform
|
29
29
|
@curb.response_code
|
30
30
|
end
|
31
|
+
|
32
|
+
def archive(ids)
|
33
|
+
ids = Array(ids)
|
34
|
+
fields = [
|
35
|
+
Curl::PostField.content('_rnr_se', @_rnr_se),
|
36
|
+
Curl::PostField.content('archive', '1')]
|
37
|
+
ids.each{|id| fields << Curl::PostField.content('messages', id)}
|
38
|
+
@curb.http_post(fields)
|
39
|
+
@curb.url = "https://www.google.com/voice/inbox/archiveMessages/"
|
40
|
+
@curb.perform
|
41
|
+
@curb.response_code
|
42
|
+
end
|
31
43
|
|
32
44
|
def mark(ids, read = true)
|
33
45
|
ids = Array(ids)
|
data/lib/google/voice/missed.rb
CHANGED
data/lib/google/voice/sms.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
require File.join(File.expand_path(File.dirname(__FILE__)), 'base')
|
3
3
|
|
4
|
+
GOOGLE_VOICE_SMS_TYPE = 11
|
5
|
+
|
4
6
|
module Google
|
5
|
-
module Voice
|
6
|
-
class Sms < Base
|
7
|
+
module Voice
|
8
|
+
class Sms < Base
|
7
9
|
def sms(number, text)
|
8
10
|
@curb.http_post([
|
9
11
|
Curl::PostField.content('phoneNumber', number),
|
@@ -14,6 +16,44 @@ module Google
|
|
14
16
|
@curb.perform
|
15
17
|
@curb.response_code
|
16
18
|
end
|
19
|
+
|
20
|
+
def recent
|
21
|
+
@curb.url = "https://www.google.com/voice/inbox/recent/"
|
22
|
+
@curb.http_get
|
23
|
+
sms = []
|
24
|
+
doc = Nokogiri::XML::Document.parse(@curb.body_str)
|
25
|
+
data = doc.xpath('/response/json').first.text
|
26
|
+
html = Nokogiri::HTML::DocumentFragment.parse(doc.to_html)
|
27
|
+
json = JSON.parse(data)
|
28
|
+
# Format for messages is [id, {attributes}]
|
29
|
+
json['messages'].each do |message|
|
30
|
+
if message[1]['type'].to_i != GOOGLE_VOICE_SMS_TYPE
|
31
|
+
next
|
32
|
+
else
|
33
|
+
messages = []
|
34
|
+
html.css('div.gc-message-sms-row').each do |row|
|
35
|
+
if row.css('span.gc-message-sms-from').inner_html.strip! =~ /Me:/
|
36
|
+
next
|
37
|
+
elsif row.css('span.gc-message-sms-time').inner_html =~ Regexp.new(txt_obj.display_start_time)
|
38
|
+
messages << {
|
39
|
+
:to => 'Me',
|
40
|
+
:from => row.css('span.gc-message-sms-from').inner_html.strip!.gsub!(':', ''),
|
41
|
+
:text => row.css('span.gc-message-sms-text').inner_html,
|
42
|
+
:time => row.css('span.gc-message-sms-time').inner_html
|
43
|
+
}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
# Google is using milliseconds since epoch for time
|
47
|
+
sms << {
|
48
|
+
:id => message[0],
|
49
|
+
:phone_number => message[1]['phoneNumber'],
|
50
|
+
:start_time => Time.at(message[1]['startTime'].to_i / 1000),
|
51
|
+
:messages => messages}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
sms
|
55
|
+
end
|
56
|
+
|
17
57
|
end
|
18
58
|
end
|
19
59
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-voice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Jeff Rafter
|
@@ -9,49 +14,57 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-03-28 00:00:00 -07:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: shoulda
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
23
29
|
version: "0"
|
24
|
-
|
30
|
+
type: :development
|
31
|
+
version_requirements: *id001
|
25
32
|
- !ruby/object:Gem::Dependency
|
26
33
|
name: curb
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
39
|
+
segments:
|
40
|
+
- 0
|
33
41
|
version: "0"
|
34
|
-
|
42
|
+
type: :runtime
|
43
|
+
version_requirements: *id002
|
35
44
|
- !ruby/object:Gem::Dependency
|
36
45
|
name: nokogiri
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
prerelease: false
|
47
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
48
|
requirements:
|
41
49
|
- - ">="
|
42
50
|
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
43
53
|
version: "0"
|
44
|
-
|
54
|
+
type: :runtime
|
55
|
+
version_requirements: *id003
|
45
56
|
- !ruby/object:Gem::Dependency
|
46
57
|
name: json
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
prerelease: false
|
59
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
60
|
requirements:
|
51
61
|
- - ">="
|
52
62
|
- !ruby/object:Gem::Version
|
63
|
+
segments:
|
64
|
+
- 0
|
53
65
|
version: "0"
|
54
|
-
|
66
|
+
type: :runtime
|
67
|
+
version_requirements: *id004
|
55
68
|
description: "Google Voice does not have an API. This library gets around that limitation. "
|
56
69
|
email: jeff@socialrange.org
|
57
70
|
executables: []
|
@@ -83,18 +96,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
83
96
|
requirements:
|
84
97
|
- - ">="
|
85
98
|
- !ruby/object:Gem::Version
|
99
|
+
segments:
|
100
|
+
- 0
|
86
101
|
version: "0"
|
87
|
-
version:
|
88
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
103
|
requirements:
|
90
104
|
- - ">="
|
91
105
|
- !ruby/object:Gem::Version
|
106
|
+
segments:
|
107
|
+
- 0
|
92
108
|
version: "0"
|
93
|
-
version:
|
94
109
|
requirements: []
|
95
110
|
|
96
111
|
rubyforge_project:
|
97
|
-
rubygems_version: 1.3.
|
112
|
+
rubygems_version: 1.3.6
|
98
113
|
signing_key:
|
99
114
|
specification_version: 3
|
100
115
|
summary: Google Voice Library
|