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 a global_config file with ‘google_ajax_api_key’ and ‘request_referer’ defined. You can set it up thus:

# Load a global constant so the initializers can use them
require 'ostruct'
require 'yaml'
::GlobalConfig = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/global_config.yml")[RAILS_ENV])

Then in global_config.yml:

default: &DEFAULT

  application_url: localhost:3000

  # sign up options
  automatically_activate: true
  automatically_login_after_account_create: true
  send_welcome: true

  application_url: localhost:3000

  # session key information
  session_key: _test_session
  session_secret: 882585c5d472d21e832965410ab233be541ea626e50ed0eb68a00a2f49b59073480e58599404e3dc62105a803ee42d67872e3f95eb48e2d6508b42038436abd6

  # Google related
  google_ajax_api_key:            # Google ajax api key
  request_referer:                # Website making the request.  Required by Google.
  show_google_search: true        # Determines whether or not a google search is displayed on the topic page
  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
  combine_feeds_on_server: false  # Combines feeds loaded on the server

production:
  <<: *DEFAULT

development:
  <<: *DEFAULT

test:
  <<: *DEFAULT

  application_url: 'localhost:3000'

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

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