2016-11-15 88 views
-1

在Feedjira 2.0的公告博客文章中,它表示如果你想設置用戶代理,那應該是一個配置選項,但目前還不清楚如何做到這一點。理想情況下,我想模仿之前在Feedjira 1.0中提供的選項,包括user_agent,if_modified_since,timeout和ssl_verify_peer。Ruby:如何設置feedjira配置選項?

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"}) 

其中配置選項被設置爲從一個我所看到的僅僅是示例:

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

隨着Feedjira 1.0,則可以通過使下面的調用(如所描述的here)設置這些選項comment在github上拉的要求,主要內容如下:

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

但是,當我嘗試了一些類似的事情,我收到以下錯誤:

undefined method `configure' for Feedjira::Feed:Class 
+0

請閱讀「[問]」,包括鏈接的頁面和「[mcve]」。我們需要查看演示你所嘗試的最小代碼,並解釋它爲什麼不起作用。目前你的問題很廣泛。 –

回答

0

它看起來像被添加到允許超時選項將被傳遞給fetch_and_parse功能的補丁: https://github.com/feedjira/feedjira/pull/318/commits/fbdb85b622f72067683508b1d7cab66af6303297#diff-a29beef397e3d8624e10af065da09a14

然而,直到被實時推送,一個超時和一個open_timeout選項可以通過繞過Feedjira來獲取,而不是使用Faraday(或任何可以獲取HTTP請求的庫,比如Net :: HTTP)。您還可以設置SSL驗證爲假,並設置用戶代理,像這樣的:

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」,但如果我這樣做,我會更新的答案。