⇤ ← 2012-12-10 00:30:40時点のリビジョン1
サイズ: 3828
コメント:
|
サイズ: 4488
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 67: | 行 67: |
* https接続を確立するには次のように書くみたい {{{#!highlight ruby uri = URI.parse("https://userstream.twitter.com/2/user.json") https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE https.start do |https| #do something end }}} * 接続したいURLをURI.parseを使ってパースしてURIクラスのインスタンスにする * それを使ってHTTPクラスのインスタンスを生成する * HTTPS接続のためのもろもろの設定をする(SSL接続するとか証明書はどうとか) * startメソッドを呼び出すと通信が開始される |
なにこれ
- もとから自分の名前の入ったツイートを自動的にふぁぼるスクリプトがあれば便利だなあ(?)と思っていた
- いつもどおりPythonで書こうと思ったけど日本語周りが糞過ぎてヤル気が失せる
- ならついでにRubyのお勉強を兼ねてRubyでスクリプト書いてみようかな
Rubyとか全然わからない件
- こうやればHello, Worldできるのは知ってる
1 puts "Hello, World"
- ブロックなにそれ美味しいの?
とりあえずOAuthしないとね
- OAuthの処理を一から書くなどというドMなことしたくないし、余計なバグを生むだけだし、そもそも車輪の再生産もいいところなのでライブラリを探す
- gemにその名もズバリ'oauth'ってのがあった
- exampleに挙がっているソースコードを解読
- 先頭の@はなんだ
- perlで言えば配列だけど……
- インスタンス変数らしい
- ::とは
- 基本的には.と同じで、あるクラスorモジュールの中に入っているものを参照する
- 今回の場合OAuthモジュールの中のConsumerクラスを参照している
- 大文字で始まるメソッドを引数なしで呼び出す場合は::だとエラーになるらしい
- Rubyでは大文字で始まるトークンを定数としてみなすため
- 基本的には.と同じで、あるクラスorモジュールの中に入っているものを参照する
- クラスとモジュールは何が違う
- クラスはインスタンスオブジェクトを生成するためのひな形として働く
- クラスがもつnewというメソッドを呼び出すとそのクラスに対応するインスタンスオブジェクトが生成される
- モジュールからはインスタンスオブジェクトを生成することはできない
- クラスは継承ができるが、モジュールは継承ができない
- モジュールにメソッドを定義しておいて、それを別のクラスに挿木のように読み込んでくることができる
- 今回使うライブラリのOAuthモジュールは、単に複数のクラスを一つにまとめる目的で用意されているようだ
- クラスはインスタンスオブジェクトを生成するためのひな形として働く
- {:site〜}の部分の意味とは
- rubyでは次のように書くとハッシュを作ることができる
- :symbolとは
- :hogeとかくとhogeがsymbolというものになるそうで
- ハッシュのキーは普通の文字列でもいいのだけど、symbolを使うほうがrubyでは主流らしい
- つまりハッシュを引数に与えているってことですね
- これとは別に次のようなメソッドもあるらしい
1 OAuth::AccessToken.new(consumer, ACCESS_TOKEN, ACCESS_SECRET)
- consumerのところには先程のConsumerクラスのインスタンスを突っ込めば良い
- ACCESS_TOKENとACCESS_SECRETにはそれぞれdev.twitter.comで手に入れられるトークンを突っ込めば良い
こうして得られたAccessTokenのインスタンスを使ってTwitterの認証を行う
ふぁぼスクリプトの挙動を考える
- Userstreamに接続して自分のタイムラインに流れてくるツイートを読み込んでくる
- ツイートに「こはく」が含まれていればそれをふぁぼる
Userstreamへの接続
https://userstream.twitter.com/2/user.jsonにOAuth認証して接続するとJSON形式でツイートが流れてくる
- https接続を確立するには次のように書くみたい
- 接続したいURLをURI.parseを使ってパースしてURIクラスのインスタンスにする
- それを使ってHTTPクラスのインスタンスを生成する
- HTTPS接続のためのもろもろの設定をする(SSL接続するとか証明書はどうとか)
- startメソッドを呼び出すと通信が開始される