@@ -28,7 +28,7 @@ module Web
2828 class App < Roda
2929 CONTENT_TYPE_RSS = 'application/xml'
3030
31- def self . development? = ENV [ 'RACK_ENV' ] == ' development'
31+ def self . development? = EnvironmentValidator . development?
3232 def development? = self . class . development?
3333
3434 EnvironmentValidator . validate_environment!
@@ -116,7 +116,7 @@ def development? = self.class.development?
116116 route do |r |
117117 r . public
118118
119- r . on 'api' , 'v1' do
119+ r . on 'api' , 'v1' do # rubocop:disable Metrics/BlockLength
120120 r . response [ 'Content-Type' ] = 'application/json'
121121
122122 r . on 'health' do
@@ -189,28 +189,6 @@ def development? = self.class.development?
189189 end
190190 end
191191
192- def fallback_html
193- <<~HTML
194- <!DOCTYPE html>
195- < html >
196- < head >
197- < title > html2rss-web</ title >
198- < meta name ="viewport " content ="width=device-width,initial-scale=1 ">
199- < style >
200- body {font-family : system-ui, sans-serif;max-width : 800px ;margin : 0 auto;padding : 2rem ;line-height : 1.6 }
201- h1 {color : # 111827 }
202- code {background : # f3f4f6 ;padding : 0.2rem 0.4rem ;border-radius : 0.25rem }
203- </ style >
204- </ head >
205- < body >
206- < h1 > html2rss-web</ h1 >
207- < p > Convert websites to RSS feeds</ p >
208- < p > API available at < code > /api/</ code > </ p >
209- </ body >
210- </ html >
211- HTML
212- end
213-
214192 private
215193
216194 def handle_feed_generation ( router , feed_name )
@@ -221,34 +199,36 @@ def handle_feed_generation(router, feed_name)
221199 rss_content
222200 end
223201
224- def generate_rss_response ( router , url )
225- router . response [ 'Content-Type' ] = 'application/xml'
226- HttpCache . expires ( router . response , 600 , cache_control : 'public' )
202+ def handle_health_check ( router )
203+ router . response [ 'Content-Type' ] = 'text/plain'
227204
228- AutoSource . generate_feed_content ( url , router . params [ 'strategy' ] || 'ssrf_filter' ) . to_s
229- end
205+ health_response = Api ::V1 ::Health . show ( router )
230206
231- def error_response ( router , status , message )
232- router . response . status = status
233- message
234- end
207+ raise 'unhealthy' unless health_response [ :success ] && health_response . dig ( :data , :health , :status ) == 'healthy'
235208
236- def handle_health_check ( router )
237- health_response = Api ::V1 ::Health . show ( router )
238- if health_response [ :success ] && health_response . dig ( :data , :health , :status ) == 'healthy'
239- router . response [ 'Content-Type' ] = 'text/plain'
240- 'success'
241- else
242- router . response . status = 500
243- router . response [ 'Content-Type' ] = 'text/plain'
244- 'health check failed'
245- end
209+ 'success'
246210 rescue StandardError => error
247211 router . response . status = 500
248212
249- router . response [ 'Content-Type' ] = 'text/plain'
250213 "health check error: #{ error . message } "
251214 end
215+
216+ def fallback_html
217+ <<~HTML
218+ <!DOCTYPE html>
219+ < html >
220+ < head >
221+ < title > html2rss-web</ title >
222+ < meta name ="viewport " content ="width=device-width,initial-scale=1 ">
223+ </ head >
224+ < body >
225+ < h1 > html2rss-web</ h1 >
226+ < p > Convert websites to RSS feeds</ p >
227+ < p > API available at < code > /api/</ code > </ p >
228+ </ body >
229+ </ html >
230+ HTML
231+ end
252232 end
253233 end
254234end
0 commit comments