Dashchan-Extensions icon indicating copy to clipboard operation
Dashchan-Extensions copied to clipboard

#nulldvachin

Open lisanyan opened this issue 9 years ago • 94 comments

I suck at intros..

В общем, если файл загружен на pomf.cat, то src получается вида //a.pomf.cat/plapla.webm (линк без протокола) и в итоге аппендится к домену борды. В массиве файла есть ключ external_upload (1/0), можно по нему проверять, и не аппендить линк или добавлять к нему протокол (e.g. "https:" + //a.pomf.cat/plapla.webm).

Еще в апи пару новых фич добавила Удаление постов теперь может отдавать json, параметр ajax=1 в запрос

{
   "error" : {
      "1325" : "Неверный пароль для удаления.",
      "1327" : "Неверный пароль для удаления.",
      "1292" : "Неверный пароль для удаления.",
      "766" : "Неверный пароль для удаления."
   },
   "error_code" : 200
}

При успешном удалении вернет { "redir" : "/b/thread/num" } или если был удален тред { "redir" : "/b/" }

Еще желательно добавлять параметр parent с номером треда к delete task, если пост из треда удаляется, чтобы правильный редирект был.

Список борд теперь можно забирать по /board/api/getboards

Алсо, теги sup/sub в разметку можно добавить и инпут no_pomf (не грузить файлы на внешний сервер) в форму отправки (если не сложно).

lisanyan avatar Jun 20 '16 13:06 lisanyan

Вроде почти всё сделал, кроме двух вещей.

Во-первых, мне не очень нравится апи списка досок т. к. они не упорядочены. Правильно отдавать массив объектов с полями "board_name" и "title", например. Или на сервере в принципе не предусмотрен порядок досок, а на страницах доски вбиты вручную?

Во-вторых, поддержку "no_pomf" добавить не получится. Модули тут бессильны, новые кнопочки-галочки можно добавлять только на стороне приложения. Я бы подумал насчёт добавления в приложение, но фича уж больно уникальная и, по моему мнению, не сильно востребованная.

Mishiranu avatar Jun 20 '16 14:06 Mishiranu

Массив сейчас переделаю с сортировкой и ключами board_desc/board_name. На страницах вручную забиты, руки никак не дойдут допилить динамическую подгрузку досок.

Окей, no_pomf - не критично.

lisanyan avatar Jun 20 '16 14:06 lisanyan

Так доски по алфавиту сортируются? Просто сортировать json-объект нет никакого смысла, потому что он в принципе не может быть упорядоченным, в любом случае стоит сделать массив.

Mishiranu avatar Jun 20 '16 14:06 Mishiranu

Да. Действительно, но пусть будет, ибо мне один аргумент достаточно было json энкодеру скормить.

Готово, сейчас нормально?

lisanyan avatar Jun 20 '16 15:06 lisanyan

У меня что-то сайт вообще отвалился.

Mishiranu avatar Jun 20 '16 15:06 Mishiranu

Сейчас вроде открывается, у хостера что-то с IO, диски оче медленно работают.

lisanyan avatar Jun 20 '16 15:06 lisanyan

Так что, думаешь объектом всё таки оставить? А то я что-то не вижу разницы по сравнению с прошлым разом, лол.

Mishiranu avatar Jun 20 '16 15:06 Mishiranu

Не. Т.е. мне просто data массивом сделать?

lisanyan avatar Jun 20 '16 15:06 lisanyan

Да, всё верно. И к каждому элементу массива добавить ещё поле кода доски.

Mishiranu avatar Jun 20 '16 15:06 Mishiranu

Интернеты отвалились :\

Что-то вроде

   "data" : [
      {
         "board_desc" : "Чятик для двоих",
         "board_key" : "a",
         "board_name" : "Аниме"
      },
    ]

получилось

lisanyan avatar Jun 20 '16 15:06 lisanyan

Или так сделать?

   "data" : [
      "a" : {
         "board_desc" : "Чятик для двоих",
         "board_key" : "a",
         "board_name" : "Аниме"
      },
    ]

lisanyan avatar Jun 20 '16 15:06 lisanyan

Первый вариант лучше. Короче, как сейчас — лучше всего.

Mishiranu avatar Jun 20 '16 15:06 Mishiranu

Done.

lisanyan avatar Jun 20 '16 15:06 lisanyan

Ок, тогда я всё сделал, сейчас обновлю.

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Сек

lisanyan avatar Jun 20 '16 16:06 lisanyan

Я думаю возврат апи удалялки тоже массивом сделать

lisanyan avatar Jun 20 '16 16:06 lisanyan

Да это уже необязательно.

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Ну ладно, тогда как есть оставлю. Спасибо.

lisanyan avatar Jun 20 '16 16:06 lisanyan

Просто я уже закоммитил релиз, лол. Я могу откатить, конечно, просто стоит ли?

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Ну если его легче парсить будет, то думаю да. Или инкремент версии сделать до 1.4 лучше

Алсо, delete еще это выдать может,

Тред закрыт
Неправильный IP - (посты можно удалять без пароля, если айпи клиента совпадает с ip поста)
Пост протух.

Или необязательно хандлить все сообщения?

lisanyan avatar Jun 20 '16 16:06 lisanyan

Ну, мне разницы-то нет, но если хочешь сделать чтобы типа "нормально" было — давай. Выпущу как 1.4 потом.

Обработку этих сообщений тоже добавлю.

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Только лучше не так, как сейчас

{
   "error" : [
      {
         "380" : "Неверный пароль для удаления."
      }
   ],
   "error_code" : 200
}

а как-то так например:

{
   "error" : [
      {
         "post_id": "380",
         "reason": "Неверный пароль для удаления."
      }
   ],
   "error_code" : 200
}

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Кстати, вообще для апи рекомендую Content-Type отдавать application/json; charset=utf-8 вместо простого application/json.

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Оке, просто переписывать историю коммитов не есть хорошо, если форки есть :D Теперь такой вывод (наверное еще больше complicated :\ )

"error" : [
      {
         "error_msg" : "Неверный пароль для удаления.",
         "post" : "1331"
      },
   ],

Поправила Content-Type

lisanyan avatar Jun 20 '16 16:06 lisanyan

Теперь post_id/reason в объекте

lisanyan avatar Jun 20 '16 16:06 lisanyan

Алсо, клиент куки сохраняет которые с ответом сервера после постинга прилетели?

lisanyan avatar Jun 20 '16 16:06 lisanyan

Нет. Что за куки и для чего они?

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

name, если в нейме есть трип который есть в дб, то можно постить на любых досках с неймом и без капчи (что-то вроде пасскодов, лол).

lisanyan avatar Jun 20 '16 16:06 lisanyan

Не понял, а почему эта кука после постинга появляться должна?

Mishiranu avatar Jun 20 '16 16:06 Mishiranu

Header set-cookie в ответе task=post.

lisanyan avatar Jun 20 '16 17:06 lisanyan