【问题标题】:How to validate URLs for ATOM and RSS feeds如何验证 ATOM 和 RSS 提要的 URL
【发布时间】:2013-01-18 10:33:31
【问题描述】:

我的表单中有一个字段应该接受 ATOM 和 RSS 提要作为输入,我如何在我的模型中编写验证代码来验证仅提供提要作为输入。

【问题讨论】:

  • 你想要 feed-url(并检查输入是否真的是一个 url),还是想要整个 feed 文本?
  • 我想知道它是一个正确的 RSS 或 ATOM feed URL,我不需要它此时呈现的文本。

标签: ruby-on-rails validation


【解决方案1】:

您可以使用来自 Feed 检测器的 this。 是的,它会检测提要,但您可以使用正则表达式来检查模型的 url 是否匹配它

来自代码:

  matches |= html.scan(/<link.*href=['"]*([^\s'"]+)['"]*.*application\/atom\+xml.*>/)
  matches |= html.scan(/<link.*application\/atom\+xml.*href=['"]*([^\s'"]+)['"]*.*>/)
  #  matches |=  atom_feed

  matches |= html.scan(/<link.*href=['"]*([^\s'"]+)['"]*.*application\/rss\+xml.*>/)
  matches |= html.scan(/<link.*application\/rss\+xml.*href=['"]*([^\s'"]+)['"]*.*>/)
  #  matches |= rss_feed

【讨论】:

  • 小心,在模型验证中直接插入阻塞代码并不是一个好主意。
  • @Badfoo 没有上面的阻塞代码有没有更好的方法来实现
  • 我并不是要使用扫描线进行验证。我的意思是你可以将正则表达式与 validates_format_of 或类似的东西一起使用
【解决方案2】:

基本上任何有效的 URL 都可以是有效的 RSS/Atom URL。找出答案的唯一方法是点击该 URL 并检查收到的内容是否可解析为 RSS/Atom。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多