google_plus 0.1.3 → 0.1.4

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # GooglePlus
1
+ # [GooglePlus](http://rubygems.org/gems/google_plus)
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/seejohnrun/google_plus.png)](http://travis-ci.org/seejohnrun/google_plus)
4
4
 
@@ -8,6 +8,8 @@ This is a Ruby client library for the [Google+ API](http://developers.google.com
8
8
 
9
9
  gem install google_plus
10
10
 
11
+ ## [Documentation](http://rdoc.info/gems/google_plus/file/README.md)
12
+
11
13
  ## Authentication
12
14
 
13
15
  To make calls to the Google+ API, you have to either authenticate via [OAuth](http://oauth.net/) or provide an API key (which you can get from the Google [APIs Console](https://code.google.com/apis/console#access). To set your API key and get started, use:
@@ -20,6 +22,14 @@ If you want to change it for an individual request, you can use a param, like:
20
22
 
21
23
  person = GooglePlus::Person.get(123, :key => 'other_key')
22
24
 
25
+ If you want to use [OAuth](http://oauth.net/) for authorization, you can use a method such as [OmniAuth](https://github.com/intridea/omniauth)'s [GoogleOAuth2 Strategy](http://rubydoc.info/gems/oa-oauth/0.3.0/OmniAuth/Strategies/GoogleOAuth2) to get an `access_token`, and then set it using:
26
+
27
+ GooglePlus.access_token = 'token'
28
+
29
+ If you want to set it for an individual request (or series of requests), you can use a param like above:
30
+
31
+ person = GooglePlus::Person.get(123, :access_token => 'token')
32
+
23
33
  ## People
24
34
 
25
35
  Getting information about a person is easy, given that you have their Google+ ID:
data/lib/google_plus.rb CHANGED
@@ -2,7 +2,7 @@ require 'bundler/setup'
2
2
  require File.dirname(__FILE__) + '/google_plus/resource'
3
3
  require File.dirname(__FILE__) + '/google_plus/cursor'
4
4
 
5
- # GooglePlus is a ruby library for accessing the
5
+ # GooglePlus is a ruby library for accessing the Google Plus API
6
6
  module GooglePlus
7
7
 
8
8
  autoload :Activity, File.dirname(__FILE__) + '/google_plus/activity'
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/entity'
3
3
 
4
4
  module GooglePlus
5
5
 
6
+ # An Acitity in Google Plus
6
7
  class Activity
7
8
 
8
9
  extend GooglePlus::Resource
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/entity'
3
3
 
4
4
  module GooglePlus
5
5
 
6
+ # A Comment in Google Plus
6
7
  class Comment
7
8
 
8
9
  extend GooglePlus::Resource
@@ -2,10 +2,14 @@ require 'json'
2
2
 
3
3
  module GooglePlus
4
4
 
5
+ # A class for easily paginating through lists of Google Plus
6
+ # results. Automatically handles details like nextPageToken
5
7
  class Cursor
6
8
 
7
9
  extend GooglePlus::Resource
8
10
 
11
+ # Get the current page of results
12
+ # @return [Array] the current page of results, or nil if the page is blank
9
13
  def items(params = {})
10
14
  if instance_variable_defined?(:@items)
11
15
  # TODO raise error if params are passed here, since they're meaningless
@@ -15,10 +19,17 @@ module GooglePlus
15
19
  end
16
20
  end
17
21
 
22
+ # Load the next page of results and load it as the current page
23
+ # @return [Array] the next page of results, or nil if the page is blank
18
24
  def next_page(params = {})
19
25
  @items = load_page(params)
20
26
  end
21
27
 
28
+ # Create a new cursor
29
+ # @param [Class] klass - The class type to instantiate members of this cursor as
30
+ # @param [Symbol] method - The HTTP method if this request
31
+ # @param [String] resource - The path of this request relative to the API
32
+ # @param [Hash] params - a set of parameters to be merged into the request
22
33
  def initialize(klass, method, resource, params = {})
23
34
  @first_page_loaded = false
24
35
  @resource_klass = klass
@@ -1,7 +1,15 @@
1
1
  module GooglePlus
2
2
 
3
+ # A mixin that allows retrieval of nested attributes
3
4
  module Entity
4
5
 
6
+ def self.included(base)
7
+ base.instance_eval do
8
+ undef_method :id if method_defined? :id
9
+ end
10
+ end
11
+
12
+ # Access an attribute of the Entity
5
13
  def method_missing(method, *arguments, &block)
6
14
  method_s = method.to_s
7
15
  if @attributes.has_key?(method_s)
@@ -16,6 +24,7 @@ module GooglePlus
16
24
  end
17
25
  end
18
26
 
27
+ # Determine if an attribute is set on the Entity
19
28
  def respond_to?(method, include_private = false)
20
29
  method_s = method.to_s
21
30
  if @attributes.has_key?(method_s)
@@ -25,10 +34,12 @@ module GooglePlus
25
34
  end
26
35
  end
27
36
 
37
+ # The raw accessible attributes
28
38
  attr_reader :attributes
29
39
 
30
40
  private
31
41
 
42
+ # Load the data from the hash into the Entity
32
43
  def load_hash(hash)
33
44
  # underscore all of the attributes
34
45
  @attributes = hash
@@ -40,10 +51,13 @@ module GooglePlus
40
51
 
41
52
  end
42
53
 
54
+ # A convenience class for wrapping nestings of Entity objects so that
55
+ # they can be traversed as deeply as desired
43
56
  class EntityHash
44
57
 
45
58
  include Entity
46
59
 
60
+ # Initialize a new EntityHash with the given data
47
61
  def initialize(hash = {})
48
62
  load_hash(hash)
49
63
  end
@@ -1,5 +1,6 @@
1
1
  module GooglePlus
2
2
 
3
+ # A wrapper for errors encountered during connection, ie: SocketError
3
4
  class ConnectionError < Exception
4
5
 
5
6
  # Initialize a new ConnectionError
@@ -3,10 +3,15 @@ require File.dirname(__FILE__) + '/../entity'
3
3
 
4
4
  module GooglePlus
5
5
 
6
+ # An error class for wrapping errors made during requests, and making its attributes
7
+ # available similar to any [GooglePlus::Entity]
6
8
  class RequestError < Exception
7
9
 
8
10
  include GooglePlus::Entity
9
11
 
12
+ # Instantiate a new GooglePlus::RequestError and allow it to be accessed
13
+ # as an entity
14
+ # @param [Exception] e The original exception
10
15
  def initialize(e)
11
16
  load_hash JSON.parse(e.response.body)
12
17
  end
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/entity'
3
3
 
4
4
  module GooglePlus
5
5
 
6
+ # A Person in Google Plus
6
7
  class Person
7
8
 
8
9
  extend GooglePlus::Resource
@@ -4,6 +4,8 @@ require File.dirname(__FILE__) + '/errors/connection_error'
4
4
 
5
5
  module GooglePlus
6
6
 
7
+ # A modular extension for classes that make requests to the
8
+ # Google Plus API
7
9
  module Resource
8
10
 
9
11
  # Base resource URI - includes trailing slash
@@ -1,5 +1,6 @@
1
1
  module GooglePlus
2
2
 
3
- VERSION = '0.1.3'
3
+ # The current version of the library
4
+ VERSION = '0.1.4'
4
5
 
5
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-06 00:00:00.000000000Z
12
+ date: 2011-10-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70229192765580 !ruby/object:Gem::Requirement
16
+ requirement: &70353324637400 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.6.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70229192765580
24
+ version_requirements: *70353324637400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &70229192765020 !ruby/object:Gem::Requirement
27
+ requirement: &70353324636220 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,18 @@ dependencies:
32
32
  version: 1.6.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70229192765020
35
+ version_requirements: *70353324636220
36
+ - !ruby/object:Gem::Dependency
37
+ name: json
38
+ requirement: &70353324635840 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70353324635840
36
47
  description: Google+ Ruby Gem
37
48
  email: john.crepezzi@gmail.com
38
49
  executables: []