Open lisanyan opened 8 years ago
Вроде почти всё сделал, кроме двух вещей.
Во-первых, мне не очень нравится апи списка досок т. к. они не упорядочены. Правильно отдавать массив объектов с полями "board_name" и "title", например. Или на сервере в принципе не предусмотрен порядок досок, а на страницах доски вбиты вручную?
Во-вторых, поддержку "no_pomf" добавить не получится. Модули тут бессильны, новые кнопочки-галочки можно добавлять только на стороне приложения. Я бы подумал насчёт добавления в приложение, но фича уж больно уникальная и, по моему мнению, не сильно востребованная.
Массив сейчас переделаю с сортировкой и ключами board_desc/board_name. На страницах вручную забиты, руки никак не дойдут допилить динамическую подгрузку досок.
Окей, no_pomf - не критично.
Так доски по алфавиту сортируются? Просто сортировать json-объект нет никакого смысла, потому что он в принципе не может быть упорядоченным, в любом случае стоит сделать массив.
Да. Действительно, но пусть будет, ибо мне один аргумент достаточно было json энкодеру скормить.
Готово, сейчас нормально?
У меня что-то сайт вообще отвалился.
Сейчас вроде открывается, у хостера что-то с IO, диски оче медленно работают.
Так что, думаешь объектом всё таки оставить? А то я что-то не вижу разницы по сравнению с прошлым разом, лол.
Не. Т.е. мне просто data
массивом сделать?
Да, всё верно. И к каждому элементу массива добавить ещё поле кода доски.
Интернеты отвалились :\
Что-то вроде
"data" : [
{
"board_desc" : "Чятик для двоих",
"board_key" : "a",
"board_name" : "Аниме"
},
]
получилось
Или так сделать?
"data" : [
"a" : {
"board_desc" : "Чятик для двоих",
"board_key" : "a",
"board_name" : "Аниме"
},
]
Первый вариант лучше. Короче, как сейчас — лучше всего.
Done.
Ок, тогда я всё сделал, сейчас обновлю.
Сек
Я думаю возврат апи удалялки тоже массивом сделать
Да это уже необязательно.
Ну ладно, тогда как есть оставлю. Спасибо.
Просто я уже закоммитил релиз, лол. Я могу откатить, конечно, просто стоит ли?
Ну если его легче парсить будет, то думаю да. Или инкремент версии сделать до 1.4 лучше
Алсо, delete еще это выдать может,
Тред закрыт
Неправильный IP - (посты можно удалять без пароля, если айпи клиента совпадает с ip поста)
Пост протух.
Или необязательно хандлить все сообщения?
Ну, мне разницы-то нет, но если хочешь сделать чтобы типа "нормально" было — давай. Выпущу как 1.4 потом.
Обработку этих сообщений тоже добавлю.
Только лучше не так, как сейчас
{
"error" : [
{
"380" : "Неверный пароль для удаления."
}
],
"error_code" : 200
}
а как-то так например:
{
"error" : [
{
"post_id": "380",
"reason": "Неверный пароль для удаления."
}
],
"error_code" : 200
}
Кстати, вообще для апи рекомендую Content-Type
отдавать application/json; charset=utf-8
вместо простого application/json
.
Оке, просто переписывать историю коммитов не есть хорошо, если форки есть :D Теперь такой вывод (наверное еще больше complicated :\ )
"error" : [
{
"error_msg" : "Неверный пароль для удаления.",
"post" : "1331"
},
],
Поправила Content-Type
Теперь post_id/reason в объекте
Алсо, клиент куки сохраняет которые с ответом сервера после постинга прилетели?
Нет. Что за куки и для чего они?
name, если в нейме есть трип который есть в дб, то можно постить на любых досках с неймом и без капчи (что-то вроде пасскодов, лол).
Не понял, а почему эта кука после постинга появляться должна?
Header set-cookie в ответе task=post.
Не, как куки работают я знаю. Я просто не могу понять, что она делать должна. Имя-то везде можно использовать, кроме некоторых досок, да и капчи тоже я нигде не видел.
/api/checkconfig проверяет через нее есть ли "специальный" трипкод из дб в имени, и возвращает captcha=0 и names_allowed=1 даже если постинг с неймом в конфиге отключен.
Но наверное нет смысла ковыряться с ней, оверкилл.
Капча есть у всех кроме /RU UA BY KZ EU/
Так погоди, эта кука же просто хранит последнее введённое имя, так? И при наличии куки просто немного меняется конфиг? То есть фактически мне не надо даже сохранять куку, а просто можно использовать введённое имя?
Про капчу я вообще забыл, что она есть, лол, а ведь она реализована в модуле.
Йеп. Хмм, можно использовать последнее введенное имя, если оно где-то сохраняется, если надо могу инпут name к checkconfig добавить вместо печеньки.
Не, не обязательно, я без проблем смогу сделать чтобы с кукой передавалось.
А такой вопрос: например, я ввожу имя, которое есть в базе, отправляю пост, иду в d, ввожу там другое имя, снова отправляю пост. Таким образом, кука заменится, но пост отправится со вторым введённым именем? Вообще было бы хорошо, если бы для тестирования для меня было бы заведено такое имя, хотя бы на время.
Пост отправится только если введено имя, которое в дб, иначе просто "Аноним". В функции постинга тоже проверка есть.
Оки, вот тестовый трип #TestCode
Я просто думаю, может, в таком случае, стоит оформить это как авторизацию? Дашчан поддерживает авторизацию пользователей.
Хм, можно. Может тогда отдельную куку для этих целей прикрутить (что-то вроде auth, трипкод прошел проверку -> сохранить этот трип в auth и проверять уже по куке auth)?
Имхо так лучше будет.
Да не обязательно, можно как есть оставить. Я вот так хочу сделать:
Да я все равно уже re-implementing this. Добавлю в чекконфиг инпут с auth и в ответ поле вроде check_success.
Мне идея со склеиванием не оче нравится, что если я введу другой трип в поле нейма?
И 2 пункт немного переделать можно будет
Мне идея со склеиванием не оче нравится, что если я введу другой трип в поле нейма?
if (name.indexOf('#') == -1) name += '#' + authorizedTripcode;
То есть теперь авторизация будет возможна отдельно от трипкода? Это, конечно, лучше.
Да.
Кука auth с трипом должна будет отправляться чекконфигу и функции постинга/удаления, сможешь реализовать?
Смогу. А с удалением что? Типа пароль не нужен?
Удаление без задержки как вариант.
Может функцию авторизации отдельно добавить? пока код еще редактирую
Готово
/api/authorize?auth=trip, только trip должен быть urlencoded, task=post с правильным трипом также авторизует (отдает куки auth) /api/checkconfig теперь содержит поле authorized в объекте config
Лол, заодно обнаружил баг в приложении, в определённый момент ссылка декодируется и вся часть ссылки начиная с # считается фрагментом ссылки и не отправляется на сервер. Буду использовать пост-запрос, но баг устраню в следующей версии на будущее, разумеется.
Great.
Так, к authorize нельзя пост-запросом обращаться, только гет?
Хм, вроде фильтра никакого на нем нет, так что можно.
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 в запрос
При успешном удалении вернет
{ "redir" : "/b/thread/num" }
или если был удален тред{ "redir" : "/b/" }
Еще желательно добавлять параметр parent с номером треда к delete task, если пост из треда удаляется, чтобы правильный редирект был.
Список борд теперь можно забирать по /board/api/getboards
Алсо, теги sup/sub в разметку можно добавить и инпут no_pomf (не грузить файлы на внешний сервер) в форму отправки (если не сложно).