PDA

Просмотр полной версии : XenForo 2 REST API


SR_team
01.02.2021, 01:11
Понадобилось мне заливать аттачменты через CI на бх, получил API ключ от @itsLegend (https://www.blast.hk/members/itslegend/), и дальше... А дальше жопа. У XenForo есть документация (https://www.blast.hk/redirect/aHR0cHM6Ly94ZW5mb3JvLmNvbS9jb21tdW5pdHkvcGFnZXMvYX BpLWVuZHBvaW50cw), но весьма скудная в плане примеров. В сети примеров тоже не нашлось, по этому разбираться как с ней работать пришлось нам с @itsLegend (https://www.blast.hk/members/itslegend/).

Для начала стоит обратить внимание, что базовая часть работы с API указана отдельно от основной документации тут. (https://www.blast.hk/redirect/aHR0cHM6Ly94ZW5mb3JvLmNvbS9kb2NzL2Rldi9yZXN0LWFwaS 8) Краткая выдержка от туда:


базовый url запросов - https://blast.hk/api/

тип запроса может быть application/x-www-form-urlencoded (это дефолтный для GET вид запроса)

для передачи файлов должен быть использован запрос типа multipart/form-data

ключ авторизации передается в заголовке XF-Api-Key


Так как моей целью было обновление аттачментов, то все примеры будут связаны только с этим.

Что бы залить аттачмент надо создать новый ключ аттачмента

Вариант с application/x-www-form-urlencoded:

Bash:






curl
-X POST
"https://blast.hk/api/attachments/new-key"
-H
"XF-Api-Key: AUTHKEY"
-H
"Content-Type:application/x-www-form-urlencoded"
--data
"type=post&context[post_id]=1111"




Вариант с multipart/form-data:

Bash:






curl
-X POST
"https://blast.hk/api/attachments/new-key"
-H
"XF-Api-Key: AUTHKEY"
-H
"Content-Type:multipart/form-data"
-F
"type=post"
-F
"context[post_id]=1111"




С multipart/form-data можно сразу отправить файл:

Bash:






curl
-X POST
"https://blast.hk/api/attachments/new-key"
-H
"XF-Api-Key: AUTHKEY"
-H
"Content-Type:multipart/form-data"
-F
"type=post"
-F
"context[post_id]=1111"
-F
"attachment=@FILE"




В этих примерах:


AUTHKEY - ключ авторизации

1111 - id сообщения

FILE - путь к файлу
Добавление аттачмента по ключу, если вы не передали файл сразу

Bash:






curl
-X POST
"https://blast.hk/api/attachments/"
-H
"XF-Api-Key: AUTHKEY"
-H
"Content-Type:multipart/form-data"
-F
"key=AKEY"
-F
"attachment=@FILE"




тут:


AUTHKEY - ключ авторизации

AKEY - ключ аттачмента, который возвращает предыдущий запрос, если не передать файл

FILE - путь к файлу
Добавление загруженного аттачмента к сообщению(иначе аттачмент можно будет скачать только по прямой ссылке, а под постом его не будет)

Вариант с application/x-www-form-urlencoded:

Bash:






curl
-X POST
"https://blast.hk/api/posts/1111/"
-H
"XF-Api-Key: AUTHKEY"
-H
"Content-Type:application/x-www-form-urlencoded"
--data
"attachment_key=AKEY"




Вариант с multipart/form-data:

Bash:






curl
-X POST
"https://blast.hk/api/posts/1111/"
-H
"XF-Api-Key: AUTHKEY"
-F
"attachment_key=AKEY"




В этих примерах:


AUTHKEY - ключ авторизации

1111 - id сообщения

AKEY- ключ аттачмента, который возвращает предыдущий запрос, если не передать файл
Список всех аттачментов поста можно получить только запросив всю инфу о посте

Bash:






curl
-X GET
"https://blast.hk/api/posts/1111/"
-H
"XF-Api-Key: AUTHKEY"




тут:


AUTHKEY - ключ авторизации

1111 - id сообщения
Удаление аттачмента

Bash:






curl
-X DELETE
"https://blast.hk/api/attachments/2222/"
-H
"XF-Api-Key: AUTHKEY"




тут:


AUTHKEY - ключ авторизации

2222 - id аттачмента (attachment_id в предыдущем запросе)


Об ответах сервера

Все ответы приходят в json и там все очень понятно. Приведу примеры лишь некоторых

Ответ на запрос о посте

JSON:






{
"post"
:
{
"attach_count"
:
1
,
"Attachments"
:
[
{
"attach_date"
:
1612119280
,
"attachment_id"
:
84855
,
"content_id"
:
660775
,
"content_type"
:
"post"
,
"direct_url"
:
"https://www.blast.hk/attachments/84855/"
,
"file_size"
:
1374
,
"filename"
:
"blum.txt"
,
"height"
:
0
,
"is_audio"
:
false
,
"is_video"
:
false
,
"view_count"
:
0
,
"width"
:
0
}
]
,
"can_edit"
:
true
,
"can_hard_delete"
:
false
,
"can_react"
:
false
,
"can_soft_delete"
:
true
,
"can_view_attachments"
:
true
,
"is_first_post"
:
false
,
"is_last_post"
:
true
,
"is_reacted_to"
:
false
,
"is_unread"
:
false
,
"last_edit_date"
:
0
,
"message"
:
"\n\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c\n \n\u0443 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043d\u0435 \u043c\u043e\u0433\u0443"
,
"message_parsed"
:
"\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c\u 0443 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043d\u0435 \u043c\u043e\u0433\u0443"
,
"message_state"
:
"visible"
,
"position"
:
165
,
"post_date"
:
1612113840
,
"post_id"
:
660775
,
"reaction_score"
:
0
,
"Thread"
:
{
"can_edit"
:
true
,
"can_edit_tags"
:
true
,
"can_hard_delete"
:
false
,
"can_reply"
:
true
,
"can_soft_delete"
:
true
,
"can_view_attachments"
:
true
,
"custom_fields"
:
{
"samp_version"
:
{
"sampany"
:
"sampany"
}
}
,
"discussion_open"
:
true
,
"discussion_state"
:
"visible"
,
"discussion_type"
:
"discussion"
,
"first_post_id"
:
647839
,
"first_post_reaction_score"
:
80
,
"Forum"
:
{
"breadcrumbs"
:
[
{
"node_id"
:
20
,
"title"
:
"\u0418\u0433\u0440\u044b"
,
"node_type_id"
:
"Category"
}
,
{
"node_id"
:
41
,
"title"
:
"Grand Theft Auto: San Andreas"
,
"node_type_id"
:
"Category"
}
]
,
"description"
:
"\u0425\u0443\u0434\u044b, \u0441\u043a\u0438\u043d\u044b, \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043f\u0440\u043e\u0447."
,
"display_in_list"
:
true
,
"display_order"
:
500
,
"node_id"
:
107
,
"node_name"
:
null
,
"node_type_id"
:
"Forum"
,
"parent_node_id"
:
41
,
"title"
:
"\u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u 0446\u0438\u0438"
,
"type_data"
:
{
"allow_posting"
:
true
,
"can_create_thread"
:
true
,
"can_upload_attachment"
:
true
,
"discussion"
:
{
"allowed_thread_types"
:
[
"discussion"
]
,
"allow_answer_voting"
:
false
,
"allow_answer_downvote"
:
false
}
,
"discussion_count"
:
724
,
"forum_type_id"
:
"discussion"
,
"is_unread"
:
true
,
"last_post_date"
:
1612118770
,
"last_post_id"
:
660866
,
"last_post_username"
:
"W.Parson"
,
"last_thread_id"
:
71467
,
"last_thread_prefix_id"
:
43
,
"last_thread_title"
:
"[Arz] \u0410\u0432\u0442\u043e\u043c\u0430\u0441\u043a\u 0430"
,
"message_count"
:
25910
,
"min_tags"
:
0
,
"require_prefix"
:
true
}
,
"view_url"
:
"https://www.blast.hk/forums/107/"
}
,
"is_unread"
:
false
,
"is_watching"
:
true
,
"last_post_date"
:
1612113840
,
"last_post_id"
:
660775
,
"last_post_user_id"
:
11231
,
"last_post_username"
:
"SR_team"
,
"node_id"
:
107
,
"post_date"
:
1610558499
,
"prefix"
:
"Lua"
,
"prefix_id"
:
43
,
"reply_count"
:
165
,
"sticky"
:
false
,
"sv_prefix_ids"
:
[
43
,
10
]
,
"tags"
:
[
]
,
"thread_id"
:
75917
,
"title"
:
"HUD - \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u 0442\u043e\u0440 \u0445\u0443\u0434\u043e\u0432"
,
"User"
:
{
"activity_visible"
:
true
,
"avatar_urls"
:
{
"o"
:
"https://www.blast.hk/data/avatars/o/11/11231.jpg?1590003878"
,
"h"
:
"https://www.blast.hk/data/avatars/h/11/11231.jpg?1590003878"
,
"l"
:
"https://www.blast.hk/data/avatars/l/11/11231.jpg?1590003878"
,
"m"
:
"https://www.blast.hk/data/avatars/m/11/11231.jpg?1590003878"
,
"s"
:
"https://www.blast.hk/data/avatars/s/11/11231.jpg?1590003878"
}
,
"can_ban"
:
false
,
"can_converse"
:
false
,
"can_edit"
:
true
,
"can_follow"
:
false
,
"can_ignore"
:
false
,
"can_post_profile"
:
true
,
"can_view_profile"
:
true
,
"can_view_profile_posts"
:
true
,
"can_warn"
:
false
,
"custom_fields"
:
{
"discord"
:
"SR_team#2390"
,
"facebook"
:
""
,
"gender"
:
"male"
,
"icq"
:
""
,
"instagram"
:
""
,
"occupation"
:
""
,
"skype"
:
""
,
"telegram"
:
"SR_team"
,
"twitter"
:
""
,
"vkontakte"
:
""
,
"youtube"
:
""
}
,
"custom_title"
:
"like pancake"
,
"is_admin"
:
false
,
"is_banned"
:
false
,
"is_followed"
:
false
,
"is_ignored"
:
false
,
"is_moderator"
:
true
,
"is_staff"
:
true
,
"is_super_admin"
:
false
,
"last_activity"
:
1612119169
,
"location"
:
""
,
"message_count"
:
3741
,
"profile_banner_urls"
:
{
"l"
:
"https://www.blast.hk/data/profile_banners/l/11/11231.jpg?1608417025"
,
"m"
:
"https://www.blast.hk/data/profile_banners/m/11/11231.jpg?1608417025"
}
,
"question_solution_count"
:
10
,
"reaction_score"
:
3760
,
"register_date"
:
1382731280
,
"signature"
:
"\u0427\u0438\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u 0438\u0435\u043c \u043f\u043e \u043c\u0438\u0440\u0430\u043c: samp.sr.team:1337"
,
"trophy_points"
:
183
,
"user_id"
:
11231
,
"user_title"
:
"like pancake"
,
"username"
:
"SR_team"
,
"view_url"
:
"https://www.blast.hk/members/11231/"
,
"visible"
:
true
,
"vote_score"
:
7
,
"warning_points"
:
0
,
"website"
:
"https://sr.team"
}
,
"user_id"
:
11231
,
"username"
:
"SR_team"
,
"view_count"
:
11233
,
"view_url"
:
"https://www.blast.hk/threads/75917/"
,
"visitor_post_count"
:
54
}
,
"thread_id"
:
75917
,
"User"
:
{
"activity_visible"
:
true
,
"avatar_urls"
:
{
"o"
:
"https://www.blast.hk/data/avatars/o/11/11231.jpg?1590003878"
,
"h"
:
"https://www.blast.hk/data/avatars/h/11/11231.jpg?1590003878"
,
"l"
:
"https://www.blast.hk/data/avatars/l/11/11231.jpg?1590003878"
,
"m"
:
"https://www.blast.hk/data/avatars/m/11/11231.jpg?1590003878"
,
"s"
:
"https://www.blast.hk/data/avatars/s/11/11231.jpg?1590003878"
}
,
"can_ban"
:
false
,
"can_converse"
:
false
,
"can_edit"
:
true
,
"can_follow"
:
false
,
"can_ignore"
:
false
,
"can_post_profile"
:
true
,
"can_view_profile"
:
true
,
"can_view_profile_posts"
:
true
,
"can_warn"
:
false
,
"custom_fields"
:
{
"discord"
:
"SR_team#2390"
,
"facebook"
:
""
,
"gender"
:
"male"
,
"icq"
:
""
,
"instagram"
:
""
,
"occupation"
:
""
,
"skype"
:
""
,
"telegram"
:
"SR_team"
,
"twitter"
:
""
,
"vkontakte"
:
""
,
"youtube"
:
""
}
,
"custom_title"
:
"like pancake"
,
"is_admin"
:
false
,
"is_banned"
:
false
,
"is_followed"
:
false
,
"is_ignored"
:
false
,
"is_moderator"
:
true
,
"is_staff"
:
true
,
"is_super_admin"
:
false
,
"last_activity"
:
1612119169
,
"location"
:
""
,
"message_count"
:
3741
,
"profile_banner_urls"
:
{
"l"
:
"https://www.blast.hk/data/profile_banners/l/11/11231.jpg?1608417025"
,
"m"
:
"https://www.blast.hk/data/profile_banners/m/11/11231.jpg?1608417025"
}
,
"question_solution_count"
:
10
,
"reaction_score"
:
3760
,
"register_date"
:
1382731280
,
"signature"
:
"\u0427\u0438\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u 0438\u0435\u043c \u043f\u043e \u043c\u0438\u0440\u0430\u043c: samp.sr.team:1337"
,
"trophy_points"
:
183
,
"user_id"
:
11231
,
"user_title"
:
"like pancake"
,
"username"
:
"SR_team"
,
"view_url"
:
"https://www.blast.hk/members/11231/"
,
"visible"
:
true
,
"vote_score"
:
7
,
"warning_points"
:
0
,
"website"
:
"https://sr.team"
}
,
"user_id"
:
11231
,
"username"
:
"SR_team"
,
"view_url"
:
"https://www.blast.hk/posts/660775/"
,
"warning_message"
:
""
}
}




Ответ на запрос для загрузки аттачмента

JSON:






{
"key"
:
"AKEY"
,
"attachment"
:
{
"attach_date"
:
1612119848
,
"attachment_id"
:
84858
,
"content_id"
:
0
,
"content_type"
:
"post"
,
"direct_url"
:
"https://www.blast.hk/attachments/84858"
,
"file_size"
:
1374
,
"filename"
:
"blum.txt"
,
"height"
:
0
,
"is_audio"
:
false
,
"is_video"
:
false
,
"view_count"
:
0
,
"width"
:
0
}
}

BARRY BRADLEY
01.02.2021, 14:51
Где купить ключ? 😁

MrCreepTon
01.02.2021, 14:57
Где купить ключ? 😁


Продам за 10000 дублей

MrTNTminer
02.02.2021, 13:18
Продам за 10000 дублей


А ты сначала достань его 🧐

BARRY BRADLEY
02.02.2021, 13:21
А ты сначала достань его 🧐





получил API ключ от @itsLegend

MrCreepTon
02.02.2021, 13:21
А ты сначала достань его 🧐


Charles, правда там для юзера твоего токо 🧐

MrTNTminer
02.02.2021, 13:22
Charles, правда там для юзера твоего токо 🧐


Я помню те махинации 🧐