fix RSSPage to use correct URI
@@ -6,7 +6,7 @@ | ||
6 | 6 | request = Hiki::Request.new(env) |
7 | 7 | conf = ::Hiki::Farm::Config.load(File.join(Hiki::PATH, 'hikifarm_conf.rb')) |
8 | 8 | case request.path_info |
9 | - when '/' | |
9 | + when '/', "/#{Hiki::Farm::RSSPage.page_name}" | |
10 | 10 | Hiki::Farm::App.new(conf).call(env) |
11 | 11 | when %r!\A/(\w+)/! |
12 | 12 | Hiki::App.new(File.join(conf.farm_root, $1, 'hikiconf.rb')).call(env) |
@@ -1,5 +1,6 @@ | ||
1 | 1 | # -*- coding: utf-8 -*- |
2 | 2 | require 'erb' |
3 | +require 'uri' | |
3 | 4 | require 'hiki/util' |
4 | 5 | |
5 | 6 | module Hiki |
@@ -79,7 +80,7 @@ | ||
79 | 80 | end |
80 | 81 | |
81 | 82 | def rss_href |
82 | - "#{@hikifarm_uri}#{@manager.command_query(Hiki::Farm::RSSPage.command_name)}" | |
83 | + URI.join(@hikifarm_uri, RSSPage.page_name) | |
83 | 84 | end |
84 | 85 | |
85 | 86 | def template_name |
@@ -105,7 +106,6 @@ | ||
105 | 106 | end |
106 | 107 | end |
107 | 108 | |
108 | - # TODO: refactor | |
109 | 109 | class RSSPage |
110 | 110 | include ::Hiki::Util |
111 | 111 |
@@ -113,11 +113,16 @@ | ||
113 | 113 | def command_name |
114 | 114 | 'rss' |
115 | 115 | end |
116 | + | |
117 | + def page_name | |
118 | + 'hikifarm.rss' | |
119 | + end | |
116 | 120 | end |
117 | 121 | |
118 | - def initialize(conf, manager) | |
122 | + def initialize(conf, manager, hikifarm_uri) | |
119 | 123 | @conf = conf |
120 | 124 | @manager = manager |
125 | + @hikifarm_uri = hikifarm_uri | |
121 | 126 | end |
122 | 127 | |
123 | 128 | def to_s |
@@ -129,10 +134,10 @@ | ||
129 | 134 | def make_rss |
130 | 135 | require 'rss' |
131 | 136 | rss = RSS::Maker.make("1.0") do |maker| |
132 | - maker.channel.about = "http://example.com/index.rdf" | |
137 | + maker.channel.about = URI.join(@hikifarm_uri, self.class.page_name).to_s | |
133 | 138 | maker.channel.title = @conf.title |
134 | 139 | maker.channel.description = @conf.hikifarm_description |
135 | - maker.channel.link = "http://example.com/" | |
140 | + maker.channel.link = @hikifarm_uri | |
136 | 141 | |
137 | 142 | maker.items.do_sort = true |
138 | 143 | maker.items.max_size = 15 |
@@ -139,7 +144,7 @@ | ||
139 | 144 | |
140 | 145 | @manager.wikilist.each do |wiki| |
141 | 146 | maker.items.new_item do |item| |
142 | - item.link = "http://example.com/article.html" | |
147 | + item.link = URI.join(@hikifarm_uri, wiki.name) | |
143 | 148 | item.title = wiki.title |
144 | 149 | item.date = wiki.mtime |
145 | 150 | item.description = wiki.description |
@@ -37,11 +37,11 @@ | ||
37 | 37 | |
38 | 38 | def run(manager, request) |
39 | 39 | case |
40 | - when request.get? && %r!\A/hikifarm.rss\z! =~ request.path_info | |
41 | - body = ::Hiki::Farm::RSSPage.new(@conf, manager).to_s | |
40 | + when request.get? && %r!\A/#{::Hiki::Farm::RSSPage.page_name}\z! =~ request.path_info | |
41 | + body = ::Hiki::Farm::RSSPage.new(@conf, manager, File.dirname(request.url)).to_s | |
42 | 42 | ::Hiki::Response.new(body, 200, { }) |
43 | 43 | when request.get? && 'rss' == request.params[manager.command_key] |
44 | - body = ::Hiki::Farm::RSSPage.new(@conf, manager).to_s | |
44 | + body = ::Hiki::Farm::RSSPage.new(@conf, manager, File.dirname(request.url)).to_s | |
45 | 45 | ::Hiki::Response.new(body, 200, { }) |
46 | 46 | when request.post? && request.params['wiki'] && !request.params['wiki'].empty? |
47 | 47 | begin |