gdata_plus 0.0.0 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +33 -8
- data/VERSION +1 -1
- data/examples/client_login_example.rb +4 -1
- data/examples/oauth_example.rb +9 -6
- data/gdata_plus.gemspec +2 -2
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -8,27 +8,52 @@ Simple, easy to use GData API that supports OAuth, Ruby 1.8/1.9 and uses Typhoeu
|
|
8
8
|
|
9
9
|
gem install gdata_plus
|
10
10
|
|
11
|
+
== Making requests
|
12
|
+
|
13
|
+
Start by getting the client from the authenticator (see Authentication below).
|
14
|
+
|
15
|
+
client = authenticator.client
|
16
|
+
|
17
|
+
Then make a request.
|
18
|
+
|
19
|
+
response = client.get("https://picasaweb.google.com/data/feed/api/user/default")
|
20
|
+
|
21
|
+
Then parse the response using your preferred XML library. I'll use {Nokogiri}[http://nokogiri.org/tutorials/searching_a_xml_html_document.html] for this example.
|
22
|
+
|
23
|
+
feed = Nokogiri::XML(response.body)
|
24
|
+
album_titles = feed.xpath("//xmlns:entry/xmlns:title/text()").collect {|i| "#{i}"}
|
25
|
+
|
26
|
+
If you need more control over the request, then you can create your own {Typhoeus}[https://github.com/pauldix/typhoeus] request and submit it to the client.
|
27
|
+
|
28
|
+
request = Typhoeus::Request.new(...)
|
29
|
+
client.submit request
|
30
|
+
|
11
31
|
== Authentication
|
12
32
|
|
33
|
+
{OAuth}[http://code.google.com/apis/gdata/docs/auth/oauth.html] and {ClientLogin}[http://code.google.com/apis/gdata/docs/auth/clientlogin.html] are supported. OAuth is preferred for web apps and ClientLogin is convenient for installed apps and command-line utilities.
|
34
|
+
|
13
35
|
=== OAuth
|
14
36
|
|
15
|
-
|
37
|
+
Before using OAuth, you will need to {register your domain}[http://code.google.com/apis/accounts/docs/RegistrationForWebAppsAuto.html] and get a consumer key and consumer secret from Google. See {the OAuth example}[https://github.com/balexand/gdata_plus/blob/master/examples/oauth_example.rb] for getting started with OAuth.
|
16
38
|
|
17
39
|
==== Using an existing access token
|
18
40
|
|
19
|
-
|
41
|
+
If you already have an access token and access token secret, then you can construct an OAuth authenticator as follows:
|
42
|
+
|
43
|
+
GDataPlus::Authenticator::OAuth.new(
|
44
|
+
:consumer_key => CONSUMER_KEY,
|
45
|
+
:consumer_secret => CONSUMER_SECRET,
|
46
|
+
:access_token => access_token,
|
47
|
+
:access_secret => access_secret
|
48
|
+
)
|
20
49
|
|
21
50
|
=== ClientLogin
|
22
51
|
|
23
|
-
|
52
|
+
See the {ClientLogin example}[https://github.com/balexand/gdata_plus/blob/master/examples/client_login_example.rb].
|
24
53
|
|
25
54
|
=== Serializing authenticators
|
26
55
|
|
27
|
-
|
28
|
-
|
29
|
-
== Making requests
|
30
|
-
|
31
|
-
TODO
|
56
|
+
Both the OAuth and ClientLogin authenticators can be serialized using a method like to_yaml.
|
32
57
|
|
33
58
|
== Error handling
|
34
59
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# Highline is required for this example: gem install highline
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'gdata_plus'
|
3
|
-
require 'highline/import'
|
5
|
+
require 'highline/import'
|
4
6
|
require 'typhoeus'
|
5
7
|
|
6
8
|
# prompt for email/password
|
@@ -11,5 +13,6 @@ password = ask("Enter your password: ") { |q| q.echo = "x" }
|
|
11
13
|
authenticator = GDataPlus::Authenticator::ClientLogin.new(:service => "lh2", :source => "balexand-gdata_plus-1")
|
12
14
|
authenticator.authenticate(email, password)
|
13
15
|
|
16
|
+
# Make a signed request (fetch a list of Picasa albums in this case)
|
14
17
|
response = authenticator.client.get("https://picasaweb.google.com/data/feed/api/user/default")
|
15
18
|
puts response.inspect
|
data/examples/oauth_example.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
3
|
-
|
1
|
+
require 'rubygems'
|
4
2
|
require 'gdata_plus'
|
3
|
+
require 'nokogiri'
|
5
4
|
require 'sinatra'
|
6
5
|
require 'typhoeus'
|
7
6
|
|
@@ -9,29 +8,33 @@ require 'typhoeus'
|
|
9
8
|
CONSUMER_KEY = ENV["GDATA_CONSUMER_KEY"]
|
10
9
|
CONSUMER_SECRET = ENV["GDATA_CONSUMER_SECRET"]
|
11
10
|
|
12
|
-
set :sessions, true
|
11
|
+
set :sessions, true
|
13
12
|
|
13
|
+
# STEP #1: Obtain and store request token, and redirect browser to Google for authorization
|
14
14
|
get "/" do
|
15
15
|
oauth_callback = "#{request.scheme}://#{request.host}:#{request.port}/callback"
|
16
16
|
|
17
17
|
authenticator = GDataPlus::Authenticator::OAuth.new(:consumer_key => CONSUMER_KEY, :consumer_secret => CONSUMER_SECRET)
|
18
18
|
request_token = authenticator.fetch_request_token(:scope => "https://picasaweb.google.com/data/", :oauth_callback => oauth_callback)
|
19
19
|
|
20
|
-
# store authenticator in the session since we'll need it when exchanging request token for an access token
|
21
20
|
session[:gdata_authenticator] = authenticator
|
22
21
|
|
23
22
|
redirect request_token.authorize_url
|
24
23
|
end
|
25
24
|
|
25
|
+
# STEP #2: Exchange request token for access token when user is redirected back to your site
|
26
26
|
get "/callback" do
|
27
27
|
authenticator = session[:gdata_authenticator]
|
28
28
|
authenticator.fetch_access_token(params[:oauth_verifier])
|
29
29
|
redirect "/picasa_album_list"
|
30
30
|
end
|
31
31
|
|
32
|
+
# STEP #3: Make a signed request (fetch a list of Picasa albums in this case)
|
32
33
|
get "/picasa_album_list" do
|
33
34
|
authenticator = session[:gdata_authenticator]
|
34
35
|
response = authenticator.client.get("https://picasaweb.google.com/data/feed/api/user/default")
|
35
36
|
|
36
|
-
response.
|
37
|
+
feed = Nokogiri::XML(response.body)
|
38
|
+
album_titles = feed.xpath("//xmlns:entry/xmlns:title/text()").collect {|i| "#{i}"}
|
39
|
+
album_titles.collect {|title| "<li>#{title}</li>"}
|
37
40
|
end
|
data/gdata_plus.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gdata_plus}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brian Alexander"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2011-01-02}
|
13
13
|
s.description = %q{Simple, easy to use GData API that supports OAuth, Ruby 1.8/1.9 and uses Typhoeus as an HTTP client}
|
14
14
|
s.email = %q{balexand@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
|
9
|
-
version: 0.0.0
|
9
|
+
version: 0.1.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Brian Alexander
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-01-02 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -184,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
hash:
|
187
|
+
hash: 2629317293349709897
|
188
188
|
segments:
|
189
189
|
- 0
|
190
190
|
version: "0"
|