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を呼び出す。
- 新しくアップデートされたターゲットユーザーの