google_contacts_api 0.2.7 → 0.3.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/Gemfile CHANGED
@@ -10,8 +10,9 @@ gem "hashie"
10
10
  # Include everything needed to run rake, tests, features, etc.
11
11
  group :development do
12
12
  gem "shoulda"
13
- gem "bundler", "~> 1.0.0"
14
- gem "jeweler", "~> 1.5.2"
15
- gem "rcov"
13
+ gem "bundler"
14
+ gem "jeweler"
15
+ gem "simplecov"
16
16
  gem "rspec"
17
+ gem "rdoc"
17
18
  end
data/LICENSE.txt CHANGED
@@ -1,20 +1,13 @@
1
1
  Copyright (c) 2011 Alvin Liang
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
10
6
 
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
7
+ http://www.apache.org/licenses/LICENSE-2.0
13
8
 
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.markdown CHANGED
@@ -10,7 +10,7 @@ Then you can instantiate a GoogleContactsApi::Api object for direct posting and
10
10
  GoogleContactsApi::User object for easier stuff.
11
11
 
12
12
  ```ruby
13
- google_contacts_user = GoogleContactsApi::User(oauth_access_token_for_user)
13
+ google_contacts_user = GoogleContactsApi::User.new(oauth_access_token_for_user)
14
14
  contacts = google_contacts_user.contacts
15
15
  groups = google_contacts_user.groups
16
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7
1
+ 0.3.0
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{google_contacts_api}
8
- s.version = "0.2.7"
7
+ s.name = "google_contacts_api"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alvin Liang"]
12
- s.date = %q{2011-08-12}
13
- s.description = %q{Lets you read from the Google Contacts API. Posting to come later. Tests to come later.}
14
- s.email = %q{ayliang@gmail.com}
12
+ s.date = "2013-01-11"
13
+ s.description = "Lets you read from the Google Contacts API. Posting to come later. Tests to come later."
14
+ s.email = "ayliang@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.markdown"
@@ -35,19 +35,16 @@ Gem::Specification.new do |s|
35
35
  "lib/google_contacts_api/result_set.rb",
36
36
  "lib/google_contacts_api/user.rb",
37
37
  "spec/contact_set.json",
38
+ "spec/empty_contact_set.json",
38
39
  "spec/google_contacts_api_spec.rb",
39
40
  "spec/group_set.json",
40
41
  "spec/spec_helper.rb"
41
42
  ]
42
- s.homepage = %q{http://github.com/aliang/google_contacts_api}
43
+ s.homepage = "http://github.com/aliang/google_contacts_api"
43
44
  s.licenses = ["MIT"]
44
45
  s.require_paths = ["lib"]
45
- s.rubygems_version = %q{1.6.2}
46
- s.summary = %q{Lets you read from the Google Contacts API}
47
- s.test_files = [
48
- "spec/google_contacts_api_spec.rb",
49
- "spec/spec_helper.rb"
50
- ]
46
+ s.rubygems_version = "1.8.24"
47
+ s.summary = "Lets you read from the Google Contacts API"
51
48
 
52
49
  if s.respond_to? :specification_version then
53
50
  s.specification_version = 3
@@ -58,20 +55,22 @@ Gem::Specification.new do |s|
58
55
  s.add_runtime_dependency(%q<json>, [">= 0"])
59
56
  s.add_runtime_dependency(%q<hashie>, [">= 0"])
60
57
  s.add_development_dependency(%q<shoulda>, [">= 0"])
61
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
62
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
63
- s.add_development_dependency(%q<rcov>, [">= 0"])
58
+ s.add_development_dependency(%q<bundler>, [">= 0"])
59
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
60
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
64
61
  s.add_development_dependency(%q<rspec>, [">= 0"])
62
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
65
63
  else
66
64
  s.add_dependency(%q<activesupport>, [">= 0"])
67
65
  s.add_dependency(%q<i18n>, [">= 0"])
68
66
  s.add_dependency(%q<json>, [">= 0"])
69
67
  s.add_dependency(%q<hashie>, [">= 0"])
70
68
  s.add_dependency(%q<shoulda>, [">= 0"])
71
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
73
- s.add_dependency(%q<rcov>, [">= 0"])
69
+ s.add_dependency(%q<bundler>, [">= 0"])
70
+ s.add_dependency(%q<jeweler>, [">= 0"])
71
+ s.add_dependency(%q<simplecov>, [">= 0"])
74
72
  s.add_dependency(%q<rspec>, [">= 0"])
73
+ s.add_dependency(%q<rdoc>, [">= 0"])
75
74
  end
76
75
  else
77
76
  s.add_dependency(%q<activesupport>, [">= 0"])
@@ -79,10 +78,11 @@ Gem::Specification.new do |s|
79
78
  s.add_dependency(%q<json>, [">= 0"])
80
79
  s.add_dependency(%q<hashie>, [">= 0"])
81
80
  s.add_dependency(%q<shoulda>, [">= 0"])
82
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
83
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
84
- s.add_dependency(%q<rcov>, [">= 0"])
81
+ s.add_dependency(%q<bundler>, [">= 0"])
82
+ s.add_dependency(%q<jeweler>, [">= 0"])
83
+ s.add_dependency(%q<simplecov>, [">= 0"])
85
84
  s.add_dependency(%q<rspec>, [">= 0"])
85
+ s.add_dependency(%q<rdoc>, [">= 0"])
86
86
  end
87
87
  end
88
88
 
@@ -52,5 +52,11 @@ module GoogleContactsApi
52
52
  params["alt"] = "json"
53
53
  @oauth.delete("#{BASE_URL}#{link}?#{params.to_query}", headers)
54
54
  end
55
+
56
+ # Parse the response code
57
+ # Needed because of difference between oauth and oauth2 gems
58
+ def self.parse_response_code(response)
59
+ (defined?(response.code) ? response.code : response.status).to_i
60
+ end
55
61
  end
56
62
  end
@@ -34,7 +34,7 @@ module GoogleContactsApi
34
34
  return nil unless @api && photo_link
35
35
  response = @api.oauth.get(photo_link)
36
36
 
37
- case response.code
37
+ case GoogleContactsApi::Api.parse_response_code(response)
38
38
  # maybe return a placeholder instead of nil
39
39
  when 400; return nil
40
40
  when 401; return nil
@@ -57,6 +57,11 @@ module GoogleContactsApi
57
57
  _link = self["link"].find { |l| l.rel == "edit" }
58
58
  _link ? _link.href : nil
59
59
  end
60
+
61
+ # Returns all phone numbers for the contact
62
+ def phone_numbers
63
+ self["gd$phoneNumber"] ? self["gd$phoneNumber"].map { |e| e['$t'] } : []
64
+ end
60
65
 
61
66
  # Returns all email addresses for the contact
62
67
  def emails
@@ -3,7 +3,11 @@ module GoogleContactsApi
3
3
  # Populate from a response that contains contacts
4
4
  def initialize(response_body, api = nil)
5
5
  super
6
- @results = @parsed.feed.entry.map { |e| GoogleContactsApi::Contact.new(e, nil, api) }
6
+ if @parsed.nil? || @parsed.feed.nil? || @parsed.feed.entry.nil?
7
+ @results = []
8
+ else
9
+ @results = @parsed.feed.entry.map { |e| GoogleContactsApi::Contact.new(e, nil, api) }
10
+ end
7
11
  end
8
12
  end
9
13
  end
@@ -15,7 +15,7 @@ module GoogleContactsApi
15
15
  response = @api.get(url, params)
16
16
 
17
17
  # TODO: Define some fancy exceptions
18
- case response.code
18
+ case GoogleContactsApi::Api.parse_response_code(response)
19
19
  when 401; raise
20
20
  when 403; raise
21
21
  when 404; raise
@@ -22,7 +22,7 @@ module GoogleContactsApi
22
22
  # response = @api.get(url, params)
23
23
  response = @api.get(url, params, {"GData-Version" => "2"})
24
24
 
25
- case response.code
25
+ case GoogleContactsApi::Api.parse_response_code(response)
26
26
  when 401; raise
27
27
  when 403; raise
28
28
  when 404; raise
@@ -113,11 +113,11 @@
113
113
  "address": "contact1@example.com",
114
114
  "primary": "true"
115
115
  }],
116
- "gd$im": [{
117
- "address": "contact1@example.com",
118
- "protocol": "http://schemas.google.com/g/2005#GOOGLE_TAL",
119
- "rel": "http://schemas.google.com/g/2005#other"
120
- }]
116
+ "gd$im": [{
117
+ "address": "contact1@example.com",
118
+ "protocol": "http://schemas.google.com/g/2005#GOOGLE_TAL",
119
+ "rel": "http://schemas.google.com/g/2005#other"
120
+ }]
121
121
  },
122
122
  {
123
123
  "gd$etag": "\"QX8_ejVSLip7ImA9WB5UF0QCQAQ.\"",
@@ -0,0 +1,77 @@
1
+ {
2
+ "version": "1.0",
3
+ "encoding": "UTF-8",
4
+ "feed": {
5
+ "xmlns": "http://www.w3.org/2005/Atom",
6
+ "xmlns$openSearch": "http://a9.com/-/spec/opensearch/1.1/",
7
+ "xmlns$gContact": "http://schemas.google.com/contact/2008",
8
+ "xmlns$batch": "http://schemas.google.com/gdata/batch",
9
+ "xmlns$gd": "http://schemas.google.com/g/2005",
10
+ "gd$etag": "W/\"C0QAQ3k8eCp7ImA9WhdTEkw.\"",
11
+ "id": {
12
+ "$t": "example@gmail.com"
13
+ },
14
+ "updated": {
15
+ "$t": "2012-07-09T11:35:42.770Z"
16
+ },
17
+ "category": [{
18
+ "scheme": "http://schemas.google.com/g/2005#kind",
19
+ "term": "http://schemas.google.com/contact/2008#contact"
20
+ }],
21
+ "title": {
22
+ "$t": "Example User's Contacts"
23
+ },
24
+ "link": [{
25
+ "rel": "alternate",
26
+ "type": "text/html",
27
+ "href": "http://www.google.com/"
28
+ },
29
+ {
30
+ "rel": "http://schemas.google.com/g/2005#feed",
31
+ "type": "application/atom+xml",
32
+ "href": "https://www.google.com/m8/feeds/contacts/example%40gmail.com/full"
33
+ },
34
+ {
35
+ "rel": "http://schemas.google.com/g/2005#post",
36
+ "type": "application/atom+xml",
37
+ "href": "https://www.google.com/m8/feeds/contacts/example%40gmail.com/full"
38
+ },
39
+ {
40
+ "rel": "http://schemas.google.com/g/2005#batch",
41
+ "type": "application/atom+xml",
42
+ "href": "https://www.google.com/m8/feeds/contacts/example%40gmail.com/full/batch"
43
+ },
44
+ {
45
+ "rel": "self",
46
+ "type": "application/atom+xml",
47
+ "href": "https://www.google.com/m8/feeds/contacts/example%40gmail.com/full?alt\u003djson\u0026max-results\u003d25"
48
+ },
49
+ {
50
+ "rel": "next",
51
+ "type": "application/atom+xml",
52
+ "href": "https://www.google.com/m8/feeds/contacts/example%40gmail.com/full?alt\u003djson\u0026start-index\u003d26\u0026max-results\u003d25"
53
+ }],
54
+ "author": [{
55
+ "name": {
56
+ "$t": "Example User"
57
+ },
58
+ "email": {
59
+ "$t": "example@gmail.com"
60
+ }
61
+ }],
62
+ "generator": {
63
+ "version": "1.0",
64
+ "uri": "http://www.google.com/m8/feeds",
65
+ "$t": "Contacts"
66
+ },
67
+ "openSearch$totalResults": {
68
+ "$t": "0"
69
+ },
70
+ "openSearch$startIndex": {
71
+ "$t": "1"
72
+ },
73
+ "openSearch$itemsPerPage": {
74
+ "$t": "25"
75
+ }
76
+ }
77
+ }
@@ -41,6 +41,18 @@ describe "GoogleContactsApi" do
41
41
  {"param" => "param"},
42
42
  {"header" => "header"}) }.should raise_error(GoogleContactsApi::UnauthorizedError)
43
43
  end
44
+
45
+ describe "parsing response code" do
46
+ it "should parse something that looks like an oauth gem response" do
47
+ Response = Struct.new(:code)
48
+ GoogleContactsApi::Api.parse_response_code(Response.new("401")).should == 401
49
+ end
50
+
51
+ it "should parse something that looks like an oauth2 gem response" do
52
+ Response = Struct.new(:status)
53
+ GoogleContactsApi::Api.parse_response_code(Response.new("401")).should == 401
54
+ end
55
+ end
44
56
  end
45
57
 
46
58
  describe "User" do
@@ -70,27 +82,35 @@ describe "GoogleContactsApi" do
70
82
  end
71
83
 
72
84
  describe "ContactSet" do
73
- before(:all) do
74
- @contact_set_json = contact_set_json
75
- @contact_set = GoogleContactsApi::ContactSet.new(@contact_set_json)
76
- end
85
+ describe "with entries" do
86
+ before(:all) do
87
+ @contact_set_json = contact_set_json
88
+ @contact_set = GoogleContactsApi::ContactSet.new(@contact_set_json)
89
+ end
77
90
 
78
- it "should return the right starting index" do
79
- @contact_set.start_index.should == 1
80
- end
81
- it "should return the right number of results per page" do
82
- @contact_set.items_per_page.should == 25
83
- end
84
- it "should return the right number of total results" do
85
- @contact_set.total_results.should == 500
86
- end
87
- it "should tell me if there are more results" do
88
- # yeah this is an awkward assertion and matcher
89
- @contact_set.should be_has_more
90
- @contact_set.has_more?.should == true
91
- end
92
- it "should parse results into Contacts" do
93
- @contact_set.to_a.first.should be_instance_of(GoogleContactsApi::Contact)
91
+ it "should return the right starting index" do
92
+ @contact_set.start_index.should == 1
93
+ end
94
+ it "should return the right number of results per page" do
95
+ @contact_set.items_per_page.should == 25
96
+ end
97
+ it "should return the right number of total results" do
98
+ @contact_set.total_results.should == 500
99
+ end
100
+ it "should tell me if there are more results" do
101
+ # yeah this is an awkward assertion and matcher
102
+ @contact_set.should be_has_more
103
+ @contact_set.has_more?.should == true
104
+ end
105
+ it "should parse results into Contacts" do
106
+ @contact_set.to_a.first.should be_instance_of(GoogleContactsApi::Contact)
107
+ end
108
+ end
109
+ it "should parse nil results into an empty array" do
110
+ @empty_contact_set_json = empty_contact_set_json
111
+ @empty_contact_set = GoogleContactsApi::ContactSet.new(@empty_contact_set_json)
112
+ @empty_contact_set.total_results.should == 0
113
+ @empty_contact_set.instance_variable_get("@results").should == []
94
114
  end
95
115
  end
96
116
 
@@ -169,6 +189,8 @@ describe "GoogleContactsApi" do
169
189
  @oauth.should_receive("get").with(@contact.photo_link)
170
190
  @contact.photo
171
191
  end
192
+ # TODO: there isn't any phone number in here
193
+ pending "should return all phone numbers"
172
194
  it "should return all e-mail addresses" do
173
195
  @contact.emails.should == ["contact1@example.com"]
174
196
  end
data/spec/spec_helper.rb CHANGED
@@ -16,18 +16,23 @@ RSpec.configure do |config|
16
16
  config.mock_framework = :rspec
17
17
  end
18
18
 
19
- def contact_set_json
20
- f = File.open("#{File.dirname(__FILE__)}/contact_set.json")
19
+ def contact_set_json_from_file(filename)
20
+ f = File.open(File.join(File.dirname(__FILE__), filename))
21
21
  json = f.read
22
22
  f.close
23
23
  json
24
24
  end
25
25
 
26
+ def contact_set_json
27
+ contact_set_json_from_file("contact_set.json")
28
+ end
29
+
26
30
  def group_set_json
27
- f = File.open("#{File.dirname(__FILE__)}/group_set.json")
28
- json = f.read
29
- f.close
30
- json
31
+ contact_set_json_from_file("group_set.json")
32
+ end
33
+
34
+ def empty_contact_set_json
35
+ contact_set_json_from_file("empty_contact_set.json")
31
36
  end
32
37
 
33
38
  def contact_json_hash
metadata CHANGED
@@ -1,127 +1,185 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: google_contacts_api
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
4
5
  prerelease:
5
- version: 0.2.7
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Alvin Liang
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-08-12 00:00:00 -04:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: activesupport
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
28
31
  name: i18n
29
- requirement: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
35
38
  type: :runtime
36
39
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
39
47
  name: json
40
- requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
41
49
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
46
54
  type: :runtime
47
55
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
50
63
  name: hashie
51
- requirement: &id004 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
52
65
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
57
70
  type: :runtime
58
71
  prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
61
79
  name: shoulda
62
- requirement: &id005 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
63
81
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
68
86
  type: :development
69
87
  prerelease: false
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
72
95
  name: bundler
73
- requirement: &id006 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
74
97
  none: false
75
- requirements:
76
- - - ~>
77
- - !ruby/object:Gem::Version
78
- version: 1.0.0
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
79
102
  type: :development
80
103
  prerelease: false
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
83
111
  name: jeweler
84
- requirement: &id007 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
85
113
  none: false
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: 1.5.2
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
90
118
  type: :development
91
119
  prerelease: false
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
94
- name: rcov
95
- requirement: &id008 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: simplecov
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
101
134
  type: :development
102
135
  prerelease: false
103
- version_requirements: *id008
104
- - !ruby/object:Gem::Dependency
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
105
143
  name: rspec
106
- requirement: &id009 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
107
153
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "0"
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: rdoc
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
112
166
  type: :development
113
167
  prerelease: false
114
- version_requirements: *id009
115
- description: Lets you read from the Google Contacts API. Posting to come later. Tests to come later.
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ description: Lets you read from the Google Contacts API. Posting to come later. Tests
175
+ to come later.
116
176
  email: ayliang@gmail.com
117
177
  executables: []
118
-
119
178
  extensions: []
120
-
121
- extra_rdoc_files:
179
+ extra_rdoc_files:
122
180
  - LICENSE.txt
123
181
  - README.markdown
124
- files:
182
+ files:
125
183
  - .document
126
184
  - Gemfile
127
185
  - LICENSE.txt
@@ -140,40 +198,36 @@ files:
140
198
  - lib/google_contacts_api/result_set.rb
141
199
  - lib/google_contacts_api/user.rb
142
200
  - spec/contact_set.json
201
+ - spec/empty_contact_set.json
143
202
  - spec/google_contacts_api_spec.rb
144
203
  - spec/group_set.json
145
204
  - spec/spec_helper.rb
146
- has_rdoc: true
147
205
  homepage: http://github.com/aliang/google_contacts_api
148
- licenses:
206
+ licenses:
149
207
  - MIT
150
208
  post_install_message:
151
209
  rdoc_options: []
152
-
153
- require_paths:
210
+ require_paths:
154
211
  - lib
155
- required_ruby_version: !ruby/object:Gem::Requirement
212
+ required_ruby_version: !ruby/object:Gem::Requirement
156
213
  none: false
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- hash: -3574435168097113310
161
- segments:
214
+ requirements:
215
+ - - ! '>='
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ segments:
162
219
  - 0
163
- version: "0"
164
- required_rubygems_version: !ruby/object:Gem::Requirement
220
+ hash: -4509345012049129477
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
222
  none: false
166
- requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- version: "0"
223
+ requirements:
224
+ - - ! '>='
225
+ - !ruby/object:Gem::Version
226
+ version: '0'
170
227
  requirements: []
171
-
172
228
  rubyforge_project:
173
- rubygems_version: 1.6.2
229
+ rubygems_version: 1.8.24
174
230
  signing_key:
175
231
  specification_version: 3
176
232
  summary: Lets you read from the Google Contacts API
177
- test_files:
178
- - spec/google_contacts_api_spec.rb
179
- - spec/spec_helper.rb
233
+ test_files: []