google_contacts_api 0.2.7 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: []