Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

URL が書かれたときにタイトルを取得する #5

Closed
ochaochaocha3 opened this issue Feb 5, 2015 · 9 comments
Closed

URL が書かれたときにタイトルを取得する #5

ochaochaocha3 opened this issue Feb 5, 2015 · 9 comments
Milestone

Comments

@ochaochaocha3
Copy link
Member

Tiarra にある URL が書かれたときにタイトルを取得する機能(Auto::FetchTitle)を改良して実装する。

  • HTTPS でも取得できるようにする
@ochaochaocha3
Copy link
Member Author

@ochaochaocha3 ochaochaocha3 added this to the v0.6.0 milestone Feb 5, 2015
@koi-chan
Copy link
Member

43cf499
作り始めました。

今後の実装予定は上のコミットのメッセージに記述してあります。

koi-chan added a commit that referenced this issue Feb 25, 2015
自己署名証明書など、SSLエラーが発生するとページを読みにいかない。
しかし、CREのサイトなど、信用できるドメインをあらかじめ設定ファイルに記述しておくことで、証明書エラーが発生してもページタイトルを取得できるようにした。

refs #5
koi-chan added a commit that referenced this issue Feb 25, 2015
設定ファイルで指定可能なオプションが変わったため、ドキュメントを更新した。

* User-Agent は、ソースコードに直接記述することにした。
* SSL証明書の確認をスキップするドメインを指定できるようになった。
* タイプアウトの秒数を指定できるようになった。
* ページタイトルの前後にコメントを入れられるようになった。

refs #5
ochaochaocha3 added a commit that referenced this issue Feb 25, 2015
refs #5

設定したドメインでホスト名が終わっているかを調べるようにした
@ochaochaocha3 ochaochaocha3 modified the milestones: v0.7.0, v0.6.0 Mar 2, 2015
@ochaochaocha3
Copy link
Member Author

エラー処理等もう少し入れる機能があるので v0.7.0 に回します。

@koi-chan
Copy link
Member

koi-chan commented Mar 4, 2015

URLの宛先がページではなかった場合、MIMEタイプと容量を調べる機能を追加したいと思います。

@ochaochaocha3
Copy link
Member Author

URLの宛先がページではないかどうかは、#title を持つかどうかで判断すればよさそうです。Object#respond_to? が使えます。

@reply_prefix + page.title + @reply_suffix

if page.respond_to?(:title)
  @reply_prefix + page.title + @reply_suffix
else
  # #title が存在しない場合の処理
end

@ochaochaocha3
Copy link
Member Author

ちょっと実験。以下を GET したときの結果です。

m = Mechanize.new

# GET する
cre_ne_jp = m.get('http://www.cre.ne.jp/')
banner = m.get('http://www.cre.ne.jp/wp-content/themes/wsc7/img/cre_banner.jpg')
rfc2812 = m.get('http://jbpe.tripod.com/rfcj/rfc2812.j.sjis.txt')

# メソッドが存在するかどうか
[cre_ne_jp, banner, rfc2812].map { |obj| obj.respond_to?(:title) }
# => [true, false, false]
[cre_ne_jp, banner, rfc2812].map { |obj| obj.respond_to?(:content_type) }
# => [true, false, false]

# Content-Type
cre_ne_jp.content_type
# => "text/html; charset=UTF-8"
[cre_ne_jp, banner, rfc2812].map { |obj| obj.response['Content-Type'] }
# => ["text/html; charset=UTF-8", "image/jpeg", "text/plain"]

# Content-Length
[cre_ne_jp, banner, rfc2812].map { |obj| obj.response['Content-Length'] }
# => ["4983", "4297", "33769"]

@ochaochaocha3
Copy link
Member Author

バイトサイズを読みやすくする gem もあるみたいです。

https://github.com/martinkozak/datasizes

ochaochaocha3 added a commit that referenced this issue Mar 5, 2015
ochaochaocha3 added a commit that referenced this issue Mar 7, 2015
refs #5

* 非 HTML ファイルでは Content-Type と Content-Length
    を返信に含めるようにした
* テスト時に ActiveSupport の読み込みでエラーが起きないよう
    spec_helper.rb で activesupport/all を読み込むようにした
    rspec/rspec-autotest#21 を参照
ochaochaocha3 added a commit that referenced this issue Mar 13, 2015
refs #5

LoadError が起きないように require 'activesupport' を追加した
@ochaochaocha3
Copy link
Member Author

HTTP ステータスコードの表示を以下を参考にしてつけてみたいと思います。
https://github.com/rack/rack/blob/0575eb92caae30d60a7aa38f9d14dc77b565bd36/lib/rack/utils.rb#L581-L639

ochaochaocha3 added a commit that referenced this issue Mar 15, 2015
refs #5

* 自己署名証明書許可が引き継がれないよう、agent を毎回作るようにした
* メッセージ生成を複数のメソッドに分割した
ochaochaocha3 added a commit that referenced this issue Mar 15, 2015
refs #5

Timeout::Error と Net::HTTP::Persistent::Error を補足するようにした
ochaochaocha3 added a commit that referenced this issue Mar 15, 2015
refs #5

すべてにマッチする正規表現をなくした
@ochaochaocha3
Copy link
Member Author

だいたい基本機能は実装できたので、個別に issue を立てるようにしたいと思います。

ochaochaocha3 added a commit that referenced this issue Mar 16, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants