среда, 23 января 2008 г.

проектирование xml rpc интерфейса для плагина социальной сети wordpress

Продолжая тему своего предыдущего поста о новом плагине к wordpress начну проектирование. Наиболее простым и требующим фиксации является описание удаленных функций, вызываемых через xml-rpc: без их описания дальше двигаться сложно.
1. Вы оставили комментарий на каком то блоге. Этот блог должен уведомить ваш блог о вашем же комментарии. Если все Ок, ваш блог получает комментарий. Итого две функции: уведомить и получить.
2. Вы на своем блоге прокомментировали статью другого блога. Ваш блог уведомляет о вашем комментарии. Блог, для которого комментарий, если все Ок забирает у вас для себя ваш комментарий. Итого тоже две функции: уведомить и получить.
Все вместе - две пары похожих функций. Возможно даже, что функция забора комментария может быть одна и та же для обоих случаев. Но есть коллизия: если кто то от вашего имени оставил комментарий - в нынешнем состоянии любой может под вашим именем оставить комментарий, то что делать? Если оба блога поддерживают мой плагин/протокол, то можно будет автоматизировать удаление ложных комментариев, или их не апрувить. Для этого скорее всего придется добавить еще одну функцию для 1 случая - уведомить о подтверждении или удалении комментария. Но тогда протокол слишком усложняется и все равно остается лазейка для спама от вашего лица на других сайтах. Ну тогда можно ввести еще дополнительную опцию/функцию - запретить принимать комментарии на других блогах от вашего имени: тогда только вы один сможете оставлять комментарии от своего лица и больше никто. Для этого, конечно, необходимо, чтобы все эти блоги поддерживали мой протокол. Для этого надо будет предусмотреть соответствующий ответ для случая 1 в функции уведомления: запрет на комментирование не со своего родного блога, в зависимости от установленных опций.

С главными функциями xml-rpc определился, остается придумать им имена и список аргументов. С именем не так уж и просто: это будут названия которые передаются в запросе xml rpc. Например можно было бы взять такое: pingback.extensions.myfunction, но может быть взять собственный префикс, например socialnet.pingcomment, socialnet.getcomment и прочее. Это не принципиально, но хотелось бы выбрать названия, которые не пришлось бы менять в будущем и к которым можно было бы добавить новые.

Здесь можно оставить свои комментарии. Выпуск опубликован при помощи плагина subscribe.ru and blogspot.com cross poster

Комментариев нет: