overlord 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. data/README.rdoc +108 -1
  2. data/VERSION +1 -1
  3. data/app/helpers/overlord_google_helper.rb +28 -18
  4. data/app/views/google/_feed.html.erb +1 -1
  5. data/overlord.gemspec +641 -0
  6. data/test/rails_root/app/controllers/default_controller.rb +14 -4
  7. data/test/rails_root/app/helpers/application_helper.rb +5 -0
  8. data/test/rails_root/app/models/entry.rb +5 -0
  9. data/test/rails_root/app/models/feed.rb +4 -0
  10. data/test/rails_root/app/models/service.rb +61 -0
  11. data/test/rails_root/app/models/service_category.rb +12 -0
  12. data/test/rails_root/app/views/default/google_combined_feeds.html.erb +1 -0
  13. data/test/rails_root/app/views/default/google_dynamic_feeds_vertical.html.erb +2 -0
  14. data/test/rails_root/app/views/default/google_feed_search.html.erb +2 -0
  15. data/test/rails_root/app/views/default/google_feeds.html.erb +1 -0
  16. data/test/rails_root/app/views/default/google_search.html.erb +1 -0
  17. data/test/rails_root/app/views/default/google_slide_show.html.erb +2 -0
  18. data/test/rails_root/db/migrate/20091031185622_create_feeds.rb +15 -0
  19. data/test/rails_root/db/migrate/20091031185627_create_services.rb +14 -0
  20. data/test/rails_root/db/migrate/20091031185634_create_entries.rb +18 -0
  21. data/test/rails_root/db/migrate/20091031215610_create_service_categories.rb +12 -0
  22. data/test/rails_root/test/factories.rb +31 -0
  23. data/test/rails_root/test/functional/default_controller_test.rb +4 -9
  24. data/test/rails_root/test/test_helper.rb +3 -0
  25. data/test/rails_root/test/unit/google_feed_request_test.rb +4 -1
  26. metadata +25 -3
  27. data/test/test_helper.rb +0 -10
@@ -1,14 +1,13 @@
1
1
  class DefaultController < ApplicationController
2
-
2
+
3
+ before_filter :setup
4
+
3
5
  def index
4
6
  end
5
7
 
6
8
  def google_search
7
9
  end
8
10
 
9
- def google_typed_search
10
- end
11
-
12
11
  def google_feeds
13
12
  end
14
13
 
@@ -22,6 +21,17 @@ class DefaultController < ApplicationController
22
21
  end
23
22
 
24
23
  def google_slide_show
24
+ @feed = Feed.new(:uri => 'feed://api.flickr.com/services/feeds/photos_public.gne?tags=autumn&lang=en-us&format=rss_200')
25
+ end
26
+
27
+ def setup
28
+ @terms = CGI.unescape('mountain biking')
29
+
30
+ @number_of_items = 6
31
+ @number_of_images = 12
32
+ @number_of_videos = 6
33
+ @show_controls = false
34
+ @feeds = Feed.all
25
35
  end
26
36
 
27
37
  end
@@ -1,3 +1,8 @@
1
1
  # Methods added to this helper will be available to all templates in the application.
2
2
  module ApplicationHelper
3
+
4
+ def service_icon_background(service)
5
+ ''
6
+ end
7
+
3
8
  end
@@ -0,0 +1,5 @@
1
+ # tag_list can be from one of the various acts_as_taggable gems.
2
+ class Entry < ActiveRecord::Base
3
+ belongs_to :feed
4
+ attr_accessor :tag_list
5
+ end
@@ -0,0 +1,4 @@
1
+ class Feed < ActiveRecord::Base
2
+ has_many :entries, :dependent => :destroy
3
+ belongs_to :service
4
+ end
@@ -0,0 +1,61 @@
1
+ class Service < ActiveRecord::Base
2
+
3
+ belongs_to :service_category
4
+
5
+ def photo?
6
+ false
7
+ end
8
+
9
+ def video?
10
+ false
11
+ end
12
+
13
+ def bookmark?
14
+ false
15
+ end
16
+
17
+ def music?
18
+ false
19
+ end
20
+
21
+ def news?
22
+ false
23
+ end
24
+
25
+ def blog?
26
+ false
27
+ end
28
+
29
+ def search?
30
+ false
31
+ end
32
+
33
+ def general?
34
+ true
35
+ end
36
+
37
+ # Selects and caches all services from the database.
38
+ #
39
+ # refresh_services: By default all tag services are cached. Setting this value to true
40
+ # will result in the values being repopulated from the database
41
+ def self.get_services(refresh_services = false)
42
+ @all_services = nil if refresh_services
43
+ @all_services ||= Service.all
44
+ end
45
+
46
+ # Attempts to find a service object using a uri
47
+ #
48
+ # uri: Uri to search for. This method will attempt to all services for any part of the provided uri.
49
+ # refresh_services: Forces a refresh of the services. By default the services are cached for the duration of the request.
50
+ def self.find_service_by_uri(uri, refresh_services = false)
51
+ service = get_services(refresh_services).detect { |service| service.uri && service.uri.length > 0 && (uri.include?(service.uri) || service.uri.include?(uri)) }
52
+ service ||= default_service
53
+ service
54
+ end
55
+
56
+ # Default service is RSS
57
+ def self.default_service
58
+ Service.find_by_name('rss') # this will return the default rss service
59
+ end
60
+
61
+ end
@@ -0,0 +1,12 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: service_categories
4
+ #
5
+ # id :integer(4) not null, primary key
6
+ # name :string(255) not null
7
+ # sort :integer(4) default(0)
8
+ #
9
+
10
+ class ServiceCategory < ActiveRecord::Base
11
+ has_many :services, :order => 'sort ASC'
12
+ end
@@ -0,0 +1 @@
1
+ <%= google_combined_feeds(@feeds) %>
@@ -0,0 +1,2 @@
1
+ <%= google_dynamic_feeds_vertical(@feeds) %>
2
+ <div id="dynamic_feed_vertical_content"></div>
@@ -0,0 +1,2 @@
1
+ <%= google_feed_search('mountain biking') %>
2
+ <div id="feed_search_content"></div>
@@ -0,0 +1 @@
1
+ <%= google_feeds(@feeds, @show_controls, @number_of_items, @number_of_images, @number_of_videos, false, true) %>
@@ -0,0 +1 @@
1
+ <%= google_search('Google Search', [], @terms, %w{web video blog news image local book patent}, 'google_search', I18n.locale) %>
@@ -0,0 +1,2 @@
1
+ <%= google_slide_show(@feed) %>
2
+ <div id="slide_show_content"></div>
@@ -0,0 +1,15 @@
1
+ class CreateFeeds < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "feeds", :force => true do |t|
4
+ t.string "uri", :limit => 2083
5
+ t.string "display_uri", :limit => 2083
6
+ t.string "title", :limit => 1000
7
+ t.integer "service_id", :default => 0
8
+ t.string "login"
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table "feeds"
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ class CreateServices < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "services", :force => true do |t|
4
+ t.string "uri", :limit => 2083, :default => ""
5
+ t.string "name", :limit => 1000, :default => ""
6
+ t.string "api_uri", :limit => 2083, :default => ""
7
+ t.string "uri_key"
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table "services"
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ class CreateEntries < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "entries", :force => true do |t|
4
+ t.integer "feed_id", :null => false
5
+ t.string "permalink", :limit => 2083, :default => "", :null => false
6
+ t.string "author", :limit => 2083
7
+ t.text "title", :null => false
8
+ t.text "description"
9
+ t.text "content"
10
+ t.datetime "published_at", :null => false
11
+ t.string "direct_link", :limit => 2083
12
+ end
13
+ end
14
+
15
+ def self.down
16
+ drop_table "entries"
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ class CreateServiceCategories < ActiveRecord::Migration
2
+ def self.up
3
+ create_table "service_categories", :force => true do |t|
4
+ t.string "name", :null => false
5
+ t.integer "sort", :default => 0
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table "service_categories"
11
+ end
12
+ end
@@ -29,3 +29,34 @@ end
29
29
  Factory.sequence :title do |n|
30
30
  "This is the title: #{n}"
31
31
  end
32
+
33
+ Factory.define :feed do |f|
34
+ f.uri { Factory.next(:uri) }
35
+ f.display_uri { Factory.next(:uri) }
36
+ f.title { Factory.next(:title) }
37
+ f.service { |a| a.association(:service) }
38
+ end
39
+
40
+ Factory.define :entry do |f|
41
+ f.feed { |a| a.association(:feed) }
42
+ f.permalink { Factory.next(:uri) }
43
+ f.author { Factory.next(:name) }
44
+ f.title { Factory.next(:title) }
45
+ f.description { Factory.next(:description) }
46
+ f.content { Factory.next(:description) }
47
+ f.unique_content { Factory.next(:description) }
48
+ f.published_at DateTime.now
49
+ f.language { |a| a.association(:language) }
50
+ f.direct_link { Factory.next(:uri) }
51
+ f.grain_size 'unknown'
52
+ end
53
+
54
+ Factory.define :service do |f|
55
+ f.uri { Factory.next(:uri) }
56
+ f.name { Factory.next(:name) }
57
+ f.service_category { |a| a.association(:service_category) }
58
+ end
59
+
60
+ Factory.define :service_category do |f|
61
+ f.name { Factory.next(:name) }
62
+ end
@@ -6,6 +6,10 @@ class DefaultControllerTest < ActionController::TestCase
6
6
 
7
7
  context "topics controller" do
8
8
 
9
+ setup do
10
+ @feed = Factory(:feed, :uri => TEST_RSS_URI, :display_uri => TEST_URI)
11
+ end
12
+
9
13
  context "GET google_search" do
10
14
  setup do
11
15
  get :google_search
@@ -15,15 +19,6 @@ class DefaultControllerTest < ActionController::TestCase
15
19
  should_render_template :google_search
16
20
  end
17
21
 
18
- context "GET google_typed_search" do
19
- setup do
20
- get :google_typed_search
21
- end
22
- should_not_set_the_flash
23
- should_respond_with :success
24
- should_render_template :google_typed_search
25
- end
26
-
27
22
  context "GET google_feeds" do
28
23
  setup do
29
24
  get :google_feeds
@@ -16,6 +16,9 @@ class ActiveSupport::TestCase
16
16
  self.use_transactional_fixtures = true
17
17
  self.use_instantiated_fixtures = true
18
18
 
19
+ TEST_URI = 'http://www.engadget.com'
20
+ TEST_RSS_URI = 'http://www.engadget.com/rss.xml'
21
+
19
22
  def ensure_flash(val)
20
23
  assert_contains flash.values, val, ", Flash: #{flash.inspect}"
21
24
  end
@@ -3,7 +3,10 @@ require 'test_helper'
3
3
  class GoogleFeedRequestTest < ActiveSupport::TestCase
4
4
 
5
5
  context "google feed requests" do
6
-
6
+ setup do
7
+ @service = Factory(:service, :name => 'rss')
8
+ end
9
+
7
10
  context "find feeds" do
8
11
  setup do
9
12
  @feeds = Overlord::GoogleFeedRequest.find_feeds('ruby')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: overlord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -49,6 +49,7 @@ files:
49
49
  - app/views/google/_slide_show.html.erb
50
50
  - lib/overlord.rb
51
51
  - lib/overlord/google_feed_request.rb
52
+ - overlord.gemspec
52
53
  - rails/init.rb
53
54
  - test/rails_root/.gitignore
54
55
  - test/rails_root/.rake_tasks
@@ -57,6 +58,16 @@ files:
57
58
  - test/rails_root/app/controllers/default_controller.rb
58
59
  - test/rails_root/app/helpers/application_helper.rb
59
60
  - test/rails_root/app/models/.keep
61
+ - test/rails_root/app/models/entry.rb
62
+ - test/rails_root/app/models/feed.rb
63
+ - test/rails_root/app/models/service.rb
64
+ - test/rails_root/app/models/service_category.rb
65
+ - test/rails_root/app/views/default/google_combined_feeds.html.erb
66
+ - test/rails_root/app/views/default/google_dynamic_feeds_vertical.html.erb
67
+ - test/rails_root/app/views/default/google_feed_search.html.erb
68
+ - test/rails_root/app/views/default/google_feeds.html.erb
69
+ - test/rails_root/app/views/default/google_search.html.erb
70
+ - test/rails_root/app/views/default/google_slide_show.html.erb
60
71
  - test/rails_root/app/views/default/index.html.erb
61
72
  - test/rails_root/app/views/layouts/default.html.erb
62
73
  - test/rails_root/config/amazon_s3.yml
@@ -74,6 +85,11 @@ files:
74
85
  - test/rails_root/config/initializers/session_store.rb
75
86
  - test/rails_root/config/routes.rb
76
87
  - test/rails_root/db/.keep
88
+ - test/rails_root/db/migrate/20091031181115_create_sessions.rb
89
+ - test/rails_root/db/migrate/20091031185622_create_feeds.rb
90
+ - test/rails_root/db/migrate/20091031185627_create_services.rb
91
+ - test/rails_root/db/migrate/20091031185634_create_entries.rb
92
+ - test/rails_root/db/migrate/20091031215610_create_service_categories.rb
77
93
  - test/rails_root/features/feeds.feature
78
94
  - test/rails_root/features/step_definitions/common_steps.rb
79
95
  - test/rails_root/features/step_definitions/visit_steps.rb
@@ -577,7 +593,6 @@ files:
577
593
  - test/rails_root/test/test_helper.rb
578
594
  - test/rails_root/test/unit/.keep
579
595
  - test/rails_root/test/unit/google_feed_request_test.rb
580
- - test/test_helper.rb
581
596
  has_rdoc: true
582
597
  homepage: http://github.com/jbasdf/overlord
583
598
  licenses: []
@@ -610,6 +625,10 @@ test_files:
610
625
  - test/rails_root/app/controllers/application_controller.rb
611
626
  - test/rails_root/app/controllers/default_controller.rb
612
627
  - test/rails_root/app/helpers/application_helper.rb
628
+ - test/rails_root/app/models/entry.rb
629
+ - test/rails_root/app/models/feed.rb
630
+ - test/rails_root/app/models/service.rb
631
+ - test/rails_root/app/models/service_category.rb
613
632
  - test/rails_root/config/boot.rb
614
633
  - test/rails_root/config/environment.rb
615
634
  - test/rails_root/config/environments/cucumber.rb
@@ -622,6 +641,10 @@ test_files:
622
641
  - test/rails_root/config/initializers/session_store.rb
623
642
  - test/rails_root/config/routes.rb
624
643
  - test/rails_root/db/migrate/20091031181115_create_sessions.rb
644
+ - test/rails_root/db/migrate/20091031185622_create_feeds.rb
645
+ - test/rails_root/db/migrate/20091031185627_create_services.rb
646
+ - test/rails_root/db/migrate/20091031185634_create_entries.rb
647
+ - test/rails_root/db/migrate/20091031215610_create_service_categories.rb
625
648
  - test/rails_root/features/step_definitions/common_steps.rb
626
649
  - test/rails_root/features/step_definitions/visit_steps.rb
627
650
  - test/rails_root/features/step_definitions/webrat_steps.rb
@@ -638,4 +661,3 @@ test_files:
638
661
  - test/rails_root/test/shoulda_macros/plugins.rb
639
662
  - test/rails_root/test/test_helper.rb
640
663
  - test/rails_root/test/unit/google_feed_request_test.rb
641
- - test/test_helper.rb
data/test/test_helper.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'overlord'
8
-
9
- class Test::Unit::TestCase
10
- end