google-voice 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -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)
@@ -28,4 +28,4 @@ module Google
28
28
  end
29
29
  end
30
30
  end
31
- end
31
+ end
@@ -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
- version: 0.1.0
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: 2009-11-11 00:00:00 -08:00
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
- type: :development
18
- version_requirement:
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
- version:
30
+ type: :development
31
+ version_requirements: *id001
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: curb
27
- type: :runtime
28
- version_requirement:
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
- version:
42
+ type: :runtime
43
+ version_requirements: *id002
35
44
  - !ruby/object:Gem::Dependency
36
45
  name: nokogiri
37
- type: :runtime
38
- version_requirement:
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
- version:
54
+ type: :runtime
55
+ version_requirements: *id003
45
56
  - !ruby/object:Gem::Dependency
46
57
  name: json
47
- type: :runtime
48
- version_requirement:
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
- version:
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.4
112
+ rubygems_version: 1.3.6
98
113
  signing_key:
99
114
  specification_version: 3
100
115
  summary: Google Voice Library