Misskey: ActivityPub の object.attributedTo が配列である場合に処理を正しく遂行できない

Created on 31 Mar 2019  ·  11Comments  ·  Source: syuilo/misskey

object.attributedTo は配列になり得るが、現状の実装はそれを想定した作りになっていない。

https://github.com/syuilo/misskey/blob/7325d66c52365104b6b5d6343324a258470ad2a8/src/remote/activitypub/type.ts#L11

FYI: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-attributedto

🌌Federation 🐛Bug

All 11 comments

これ Note に attributedTo が配列でつけられていたとき、actor が誰であるかを判断する手段ってありますかね?

これ Note に attributedTo が配列でつけられていたとき、actor が誰であるかを判断する手段ってありますかね?

それもそう

どうしたらいいの……

配列で1個は許容しても、複数つけられてきたら結局エラーにするしかないですね

Create などで飛んできた場合など、わかる範囲で補間する方向でとりあえずどうでしょう。

なんかめんどくさそう…

  • Activity などで補間可能な場合はそちらの情報を使用する。
  • 補間不能な場合は attributedTo の値を使用する。
  • attributedTo の値が配列の場合は Actor として有効な一番最初の値を使用する。

感じが今の所一番良さそうではありますね。

めんどくさい(確信)

twista の変更をとりあえずいい感じに輸入。

attributedToの最初のアイテムしか採用しないけど、最初のアイテムを重要な項目にすることによって暫定対応している例
https://github.com/tootsuite/mastodon/issues/6878

string, string[] だけではなく、以下の4パターンがあり得るみたいだわ

  1. string 'https://example.com/users/1'
  2. string[] [ 'https://example.com/users/1', ... ]
  3. IObject { type: 'Person', id: 'https://example.com/users/1' }
  4. IObject[] [ { type: 'Person', id: 'https://example.com/users/1'}, ... ]

attributedToだけではなくtoccも同様

Was this page helpful?
0 / 5 - 0 ratings