Bug(バグ) #2231
[api] 取得したアクティビティのフィールドに含まれるURLがおかしい
Start date:
2011-06-21
Due date:
% Done:
100%
3.6 で発生するか:
[QA]バグ通知済:
No
3.8 で発生するか:
Unknown (未調査)
Description
Overview (現象)¶
下記のように activity_data.uri や activity_image.uri にabsolute URIが含まれる場合に、RESTful API や osapi などでアクティビティを取得した際にURLがおかしな値になる。
sqlite> select * from activity_data; id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at 1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57 sqlite> select * from activity_image; id|activity_data_id|mime_type|uri|file_id|created_at|updated_at 1|1|image/png|http://www.example.com/image.png||2011-06-02 21:29:58|2011-06-02 21:29:58
APIで取得されるアクティビティ:
{
"id": "1",
"userId": "1",
"title": "test",
"postedTime": "2011-06-02T21:29:57+09:00",
"streamUrl": "http:\/\/sns.localhost\/sqlite\/http%3A\/",
"mediaItems": [
{
"url": "http:\/\/sns.localhost\/sqlite\/http%3A\/",
"type": "image\/png"
}
]
}
Causes (原因)¶
lib/util/opJsonDbOpensocialService.class.php にて、各 URL のフィールドに値を設定している箇所でURLがabsoluteであるかないかに関わらず app_url_for を通しているため間違った値に変換されている。
if ($activity->getUri())
{
$a['streamUrl'] = app_url_for('pc_frontend', $activity->getUri(), true);
}
if ($image->getFileId())
{
// (snip)
}
else
{
$mediaItem['url'] = app_url_for('pc_frontend', $image->getUri(), true);
$mediaItem['type'] = $image->getMimeType();
}
Way to fix (修正内容)¶
下記のいずれかの方法でこの問題を解決することが可能である。
- absolute URIの場合には app_url_for を使わないようにopOpenSocialPlugin側で修正する
- app_url_for にabsolute URIが渡された場合は何もせずにreturnするようにCore側で修正する
Related issues
Associated revisions
fix the weird url of a Activity on APIs (fixes #2231)
History
#1 Updated by Youichi Kimura about 13 years ago
- Target version set to 1.3.3
#2 Updated by Youichi Kimura about 13 years ago
- Status changed from New(新規) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
更新履歴 db256ed978e7c02d233a8a7dbfa420b9020b605f で適用されました。
#3 Updated by Youichi Kimura about 13 years ago
- Status changed from Pending Review(レビュー待ち) to Fixed(完了)
- % Done changed from 50 to 100