callメソッド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
基本的にfollowはターゲットユーザーが非公開アカウントかどうかによって処理が変わる。非公開アカウントの設定はAccount
モデルのlocked
というカラムに保存するようになっている。
まずターゲットユーザーが非公開アカウントじゃない場合から見てみると、
direct_follow
というメソッドが呼ばれる。
direct_follow
メソッドにはターゲットユーザーがlocal
かどうかによって処理が変わる。ここのlocal
っていうのはAccount
モデルのdomain
カラムがnilかどうかによって判断する。
ターゲットユーザーがlocal
の場合はただメール通知が行われる。local
じゃない場合はPubsubhubbub::SubscribeWorker
、NotificationWorker
、AfterRemoteFollowWorker
クラスが呼ばれる。
Pubsubhubbub::SubscribeWorker
- PubSubHubbubとは
- 処理
- SubscribeServiceを呼ぶ → ターゲットユーザーのAccountモデルに保存されているhub_urlを元にしてhubサーバーにrequestし、購読しているユーザーにみえるようにする。
NotificationWorker
- Salmon Protocolとは
- また来週!
AfterRemoteFollowWorker
- Atom Protocolとは
- また来週!
- 処理
- 新しくアップデートされたターゲットユーザーの
locked
がtrue
になっている場合はfollow
をキャンセルして再開FollowService
を呼び出す。
- 新しくアップデートされたターゲットユーザーの