HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 01.02.2021, 01:11
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Понадобилось мне заливать аттачменты через CI на бх, получил API ключ от @itsLegend, и дальше... А дальше жопа. У XenForo есть документация, но весьма скудная в плане примеров. В сети примеров тоже не нашлось, по этому разбираться как с ней работать пришлось нам с @itsLegend.

Для начала стоит обратить внимание, что базовая часть работы с API указана отдельно от основной документации тут. Краткая выдержка от туда:
  • базовый 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"
:
"
Цитата:
Сообщение от \"CaJlaT, post: 660755, member: 102899\"  
\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\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_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\u0446\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\u0430" , "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\u0442\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\u0438\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\u0438\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
}
}
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.