Class: SimpleGData::Request
- Inherits:
-
Object
- Object
- SimpleGData::Request
- Defined in:
- lib/simplegdata.rb
Overview
A simple class that makes a oauth request using the oauth gem Initialize it by passing in a required oauth token and oauth secret recieved form an external service such as omniauth or the oauth gem.
Instance Method Summary collapse
-
#initialize(oauth_token, oauth_secret, params = { :application_id => 'anonymous', :application_secret => 'anonymous', :site => 'https://www.google.com' }) ⇒ Request
constructor
A new instance of Request.
-
#request(rest, url, data = nil, options = nil) ⇒ Object
A class method to make an optimized request to GData’s APIS.
-
#request_raw(rest, url, data = nil, options = nil) ⇒ Object
A class method to process a raw request.
Constructor Details
#initialize(oauth_token, oauth_secret, params = { :application_id => 'anonymous', :application_secret => 'anonymous', :site => 'https://www.google.com' }) ⇒ Request
Returns a new instance of Request.
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/simplegdata.rb', line 9 def initialize(oauth_token, oauth_secret, params = { :application_id => 'anonymous', :application_secret => 'anonymous', :site => 'https://www.google.com' }) # Sets up the class variables. Defaults to Google's anonymous # usage if no account is given. @oauth_token = oauth_token @oauth_secret = oauth_secret @application_id = params[:application_id] @application_secret = params[:application_secret] @site = params[:site] end |
Instance Method Details
#request(rest, url, data = nil, options = nil) ⇒ Object
A class method to make an optimized request to GData’s APIS. Automatically converts the request to JSON and accepts a a ruby hash to convert to JSON to send for post data. Returns results back as a ruby array.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/simplegdata.rb', line 27 def request(rest, url, data = nil, = nil) # Default get requests to json if rest == :get && @site == 'https://www.google.com' unless url.include? 'alt=json' if url.include? '?' url = url + '&alt=jsonc' else url = url + '?alt=jsonc' end end end # Default post requests to json if .nil? = { 'Content-Type' => 'application/json' } else unless .has_key? 'Content-Type' ['Content-Type'] = 'application/json' end end # Convert any data passed in for post requests to JSON if data.class == {}.class data = ActiveSupport::JSON.encode(data) end # Run the query and return the results as a ruby object response = request_raw(rest, url, data, ) unless response.nil? ActiveSupport::JSON.decode response end end |
#request_raw(rest, url, data = nil, options = nil) ⇒ Object
A class method to process a raw request. All handling is done by the user. Deals with the unique issue of GData API’s sometimes returning 302 redirects with gsessionids appended to them.
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/simplegdata.rb', line 65 def request_raw(rest, url, data = nil, = nil) begin response = access_token.request(rest, url, data, ) case response when Net::HTTPSuccess then response.body when Net::HTTPRedirection then request_raw(rest, response['location'], data, ) else response.error! end rescue Exception => e # TODO: Figure out some better exception handling nil end end |