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 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