-1

在 Feedjira 2.0 公告博客文章中,它说如果你想设置用户代理,那应该是一个配置选项,但不清楚如何做到这一点。理想情况下,我想模仿之前在 Feedjira 1.0 中提供的选项,包括 user_agent、if_modified_since、timeout 和 ssl_verify_peer。

http://feedjira.com/blog/2014/04/14/thoughts-on-version-two-point-oh.html

使用 Feedjira 1.0,您可以通过以下调用来设置这些选项(如此所述):

feed_parsed = Feedjira::Feed.fetch_and_parse("http://sports.espn.go.com/espn/rss/news", {:if_modified_since => Time.now, :ssl_verify_peer => false, :timeout => 5, :user_agent => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"})

我看到的唯一设置配置选项的示例来自 github 拉取请求中的评论,如下所示:

Feedjira::Feed.configure do |faraday|
    faraday.request :user_agent, app: "MySite", version: APP_VERSION
end

但是当我尝试类似的事情时,我收到以下错误:

undefined method `configure' for Feedjira::Feed:Class
4

1 回答 1

0

看起来添加了一个补丁以允许将超时选项传递给 fetch_and_parse 函数: https ://github.com/feedjira/feedjira/pull/318/commits/fbdb85b622f72067683508b1d7cab66af6303297#diff-a29beef397e3d8624e10af065da09a14

但是,在实时推送之前,超时和 open_timeout 选项可以通过绕过 Feedjira 进行获取,而是使用 Faraday(或任何可以获取 HTTP 请求的库,如 Net::HTTP)来传递。您还可以将 ssl verify 设置为 false,并设置用户代理,例如:

require 'feedjira'
require 'pp'

url = "http://www.espn.com/espnw/rss/?sectionKey=athletes-life"

conn = Faraday.new :ssl => {:verify => false}
response = conn.get do |request|
    request.url url
    request.options.timeout = 5
    request.options.open_timeout = 5
    request.headers = {'User-Agent' => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36"}
end
feed_parsed = Feedjira::Feed.parse response.body
pp feed_parsed.entries.first

我还没有看到检查“if_modified_since”的方法,但如果我这样做了,我会更新答案。

于 2016-11-22T16:58:06.030 回答