overlord

Talk to the Google ajax apis and render the results. This gem contains several method calls and partials to call out to the Google Ajax Apis (code.google.com/apis/ajax/). This gem is designed to work in Ruby on Rails and currently won’t work outside that framework.

Usage

Installation

Installing the gem should install the dependencies

sudo gem install overlord

In case it doesn’t install dependencies:

sudo gem install httparty
sudo gem install crack

Settings

This gem requires some configuration before it will work in your Rails application: You will need an initializer file with ‘google_ajax_api_key’ and ‘request_referer’ defined. You can set it up thus:

In initializers/overlord.rb

Overlord.configure do |config|
  config.google_ajax_api_key = ''         # A google ajax api key - http://code.google.com/apis/ajaxsearch/signup.html
  config.request_referer = ''             # The url of the site making the request.
  config.show_google_search = true        # Determines whether or not a google search is displayed on the topic page
  config.load_feeds_on_server = false     # Determines whether feeds on a topic page are loaded on the server or the client.  Loading on the server can take a while
  config.combine_feeds_on_server = false  # Combines feeds loaded on the server
  config.google_ad_partner_pub            # Ad partner id (optional) used for 'searchControl.enableAds'
end

Models

If you want to use the methods ‘convert_google_feed_json_to_feed’, ‘convert_google_find_feeds_json_to_feeds’, and ‘convert_google_feed_json_to_entries’ you will also need a Feed, Service and Entry class with specific attributes. See the rails application inside of the test directory for more information on how to create these classes.

# Required attributes:
# :uri, :service_id, :display_uri, :title, :service
class Feed < ActiveRecord::Base
end

# tag_list can be from one of the various acts_as_taggable gems. 
# Required attributes:
# :permalink, :author, :title, :description, :content, :published_at, :tag_list, :direct_link, :feed
class Entry < ActiveRecord::Base
end

class Service < ActiveRecord::Base
  # Selects and caches all services from the database.
  # 
  # refresh_services:     By default all tag services are cached.  Setting this value to true
  #                       will result in the values being repopulated from the database
  def self.get_services(refresh_services = false)
    @all_services = nil if refresh_services
    @all_services ||= Service.all
  end

  # Attempts to find a service object using a uri
  #
  # uri:              Uri to search for.  This method will attempt to all services for any part of the provided uri.
  # refresh_services: Forces a refresh of the services.  By default the services are cached for the duration of the request.
  def self.find_service_by_uri(uri, refresh_services = false)
    service = get_services(refresh_services).detect { |service| service.uri && service.uri.length > 0 && (uri.include?(service.uri) || service.uri.include?(uri)) }
    service ||= default_service
    service
  end
end

create_table "entries", :force => true do |t|
  t.integer  "feed_id",                                                                    :null => false
  t.string   "permalink",               :limit => 2083, :default => "",                    :null => false
  t.string   "author",                  :limit => 2083
  t.text     "title",                                                                      :null => false
  t.text     "description"
  t.text     "content"
  t.datetime "published_at",                                                               :null => false
  t.string   "direct_link",             :limit => 2083
 end

create_table "feeds", :force => true do |t|
  t.string   "uri",                        :limit => 2083
  t.string   "display_uri",                :limit => 2083
  t.string   "title",                      :limit => 1000
  t.integer  "service_id",                                 :default => 0
  t.string   "login"
end

create_table "services", :force => true do |t|
  t.string  "uri",                 :limit => 2083, :default => ""
  t.string  "name",                :limit => 1000, :default => ""
  t.string  "api_uri",             :limit => 2083, :default => ""
  t.string  "uri_key"
end

Testing

If you want to run the test application you will need to add a file with your google credentials Create a file ‘test/rails_test/config.googl.yml’

default: &DEFAULT

  google_ajax_api_key: 'YOUR GOOGLE AJAX API KEY from http://code.google.com/apis/ajaxsearch/signup.html'
  request_referer: 'www.example.com'

development:
  <<: *DEFAULT

test:
  <<: *DEFAULT

Copyright © 2009-2010 Tatemae.com. See LICENSE for details.