Class: GoogleFeedRequest
- Inherits:
-
Object
- Object
- GoogleFeedRequest
- Includes:
- HTTParty
- Defined in:
- app/models/google_feed_request.rb
Overview
Google ajax feed api reference: code.google.com/apis/ajaxfeeds/documentation/reference.html
Google code playground: code.google.com/apis/ajax/playground/?exp=search#load_feed
Class Method Summary collapse
-
.build_google_query(query_options) ⇒ Object
Add standard items to the google query.
-
.convert_google_feed_json_to_entries(feed, json) ⇒ Object
Converts json returned from google into an array of entries.
-
.convert_google_feed_json_to_feed(feed, json) ⇒ Object
Converts json returned from google into a feed object.
-
.convert_google_find_feeds_json_to_feeds(google_feeds) ⇒ Object
convert the result of a google query to ‘Feed’ objects.
-
.find_feeds(query) ⇒ Object
Search for feeds using google.
-
.find_google_feeds(query) ⇒ Object
Search for feeds using google.
-
.load_feed(uri) ⇒ Object
Requests entries for a single feed.
-
.load_feeds(feeds) ⇒ Object
Requests a set of feeds from Google.
- .lookup_feed(uri) ⇒ Object
Instance Method Summary collapse
-
#initialize(api_key_id = nil) ⇒ GoogleFeedRequest
constructor
Initialize Google Request.
Constructor Details
#initialize(api_key_id = nil) ⇒ GoogleFeedRequest
Initialize Google Request. Parameters: api_key_id: Valid Google access key (optional)
14 15 16 |
# File 'app/models/google_feed_request.rb', line 14 def initialize(api_key_id = nil) @api_key_id = api_key_id end |
Class Method Details
.build_google_query(query_options) ⇒ Object
Add standard items to the google query
104 105 106 107 108 |
# File 'app/models/google_feed_request.rb', line 104 def self.build_google_query() [:v] = '1.0' [:key] = GlobalConfig.google_ajax_api_key if GlobalConfig.google_ajax_api_key end |
.convert_google_feed_json_to_entries(feed, json) ⇒ Object
Converts json returned from google into an array of entries
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/models/google_feed_request.rb', line 58 def self.convert_google_feed_json_to_entries(feed, json) if json['responseData']['feed']['entries'] json['responseData']['feed']['entries'].collect do |entry| published_at = DateTime.parse(entry['publishedDate']) rescue DateTime.now - 1.day Entry.new(:permalink => entry['link'], :author => entry['author'], :title => entry['title'], :description => entry['contentSnippet'], :content => entry['content'], :published_at => published_at, :tag_list => entry['categories'], :direct_link => entry['link'], :feed => feed) end end end |
.convert_google_feed_json_to_feed(feed, json) ⇒ Object
Converts json returned from google into a feed object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/models/google_feed_request.rb', line 45 def self.convert_google_feed_json_to_feed(feed, json) if json['responseStatus'] == 200 if json['responseData']['feed'] Feed.new( :uri => feed.uri, :service_id => feed.service_id, :display_uri => json['responseData']['feed']['link'], :title => json['responseData']['feed']['title'], :service => feed.service) end end end |
.convert_google_find_feeds_json_to_feeds(google_feeds) ⇒ Object
convert the result of a google query to ‘Feed’ objects
94 95 96 97 98 99 100 101 |
# File 'app/models/google_feed_request.rb', line 94 def self.convert_google_find_feeds_json_to_feeds(google_feeds) google_feeds['responseData']['entries'].collect do |google_feed| Feed.new( :uri => google_feed['url'], :display_uri => google_feed['link'], :title => google_feed['title'], :service_id => Service.find_service_by_uri(google_feed['link']).id) end end |
.find_feeds(query) ⇒ Object
Search for feeds using google. This will return a collection of ‘Feed’ objects
77 78 79 80 81 82 83 84 85 |
# File 'app/models/google_feed_request.rb', line 77 def self.find_feeds(query) query = query.join('+') if query.is_a?(Array) feed_response = find_google_feeds(query) if 200 == feed_response['responseStatus'] convert_google_find_feeds_json_to_feeds(feed_response) else [] end end |
.find_google_feeds(query) ⇒ Object
Search for feeds using google. This will return a hash with the results
89 90 91 |
# File 'app/models/google_feed_request.rb', line 89 def self.find_google_feeds(query) get('http://ajax.googleapis.com/ajax/services/feed/find', :query => build_google_query({:q => query})) end |
.load_feed(uri) ⇒ Object
Requests entries for a single feed
23 24 25 |
# File 'app/models/google_feed_request.rb', line 23 def self.load_feed(uri) get('http://ajax.googleapis.com/ajax/services/feed/load', :query => build_google_query({:q => uri})) end |
.load_feeds(feeds) ⇒ Object
Requests a set of feeds from Google
feeds: An array of objects with the attributes ‘uri’ and ‘service_id’ defined
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/models/google_feed_request.rb', line 30 def self.load_feeds(feeds) feeds = feeds.collect do |feed| json = load_feed(feed.uri) new_feed = convert_google_feed_json_to_feed(feed, json) new_feed.entries << convert_google_feed_json_to_entries(new_feed, json).compact if new_feed new_feed end if feeds feeds.compact! else [] end end |
.lookup_feed(uri) ⇒ Object
18 19 20 |
# File 'app/models/google_feed_request.rb', line 18 def self.lookup_feed(uri) get('http://ajax.googleapis.com/ajax/services/feed/lookup', :query => build_google_query({:q => uri})) end |