Продолжаем упражняться
Тутбалин не так давно мизантропировал на предмет плагина Crossposter.
Потратил сегодня пару часов на разбирательства.
Что оказалось насчет левых <br>. Путем вдумчивого чтения сорцов ЖЖ было обнаружено следующее. Livejournal думает, что ему дают не настоящий html, а нечто, что ему нужно отформатировать самостоятельно. Вылечивается установкой флага convertLineBreaks в false. Логика, по которой это не есть установка по умолчанию, от меня ускользает. Как вылечить замену честного юникода на &#xNNNN-style порнуху, пока не ясно. Известно только, что на livejournal контент уходит в нормальном виде, а извращается уже на той стороне. До этого места в ЖЖ-шнух сорцах я еще не дочитал. Но это не сильно мешает.
Что оказалось насчет апдейтов кростпостнутых entries. Тут интересней.
Как положено, плагин Crossposter вытягивает entry к себе, меняет что нужно, и кладет обратно. Вот на этапе вытягивания возникает проблема: 401 Authentication Failed. Как же так? Что ж такое?
Причина вот в чем.
http://code.sixapart.com/trac/livejournal/browser/trunk/cgi-bin/Apache/LiveJournal/Interface/AtomAPI.pm#L576
# let's authenticate.
#
# if wsse information is supplied, use it.
# if not, fall back to digest.
my $wsse = $r->header_in('X-WSSE');
my $nonce_dup;
my $u = $wsse ? auth_wsse($wsse, \$nonce_dup) : LJ::auth_digest($r);
return respond( $r, 401, "Authentication failed for this AtomAPI request.")
unless $u;
return respond( $r, 401, "Authentication failed for this AtomAPI request.")
if $nonce_dup && $action && $action ne 'post';
Потратил сегодня пару часов на разбирательства.
Что оказалось насчет левых <br>. Путем вдумчивого чтения сорцов ЖЖ было обнаружено следующее. Livejournal думает, что ему дают не настоящий html, а нечто, что ему нужно отформатировать самостоятельно. Вылечивается установкой флага convertLineBreaks в false. Логика, по которой это не есть установка по умолчанию, от меня ускользает. Как вылечить замену честного юникода на &#xNNNN-style порнуху, пока не ясно. Известно только, что на livejournal контент уходит в нормальном виде, а извращается уже на той стороне. До этого места в ЖЖ-шнух сорцах я еще не дочитал. Но это не сильно мешает.
Что оказалось насчет апдейтов кростпостнутых entries. Тут интересней.
Как положено, плагин Crossposter вытягивает entry к себе, меняет что нужно, и кладет обратно. Вот на этапе вытягивания возникает проблема: 401 Authentication Failed. Как же так? Что ж такое?
Причина вот в чем.
http://code.sixapart.com/trac/livejournal/browser/trunk/cgi-bin/Apache/LiveJournal/Interface/AtomAPI.pm#L576
# let's authenticate.
#
# if wsse information is supplied, use it.
# if not, fall back to digest.
my $wsse = $r->header_in('X-WSSE');
my $nonce_dup;
my $u = $wsse ? auth_wsse($wsse, \$nonce_dup) : LJ::auth_digest($r);
return respond( $r, 401, "Authentication failed for this AtomAPI request.")
unless $u;
return respond( $r, 401, "Authentication failed for this AtomAPI request.")
if $nonce_dup && $action && $action ne 'post';
Удивительные люди в этом ЖЖ. Почему post можно по WSSE, а остально нельзя? Загадка. Почему, если уж нельзя edit, не выдать нужные заголовки для digest auth? Еще загадочней.
Чего делать? Хакнуть XML::Atom::Client или засабмитить багу в суп?
А вот запрет на коменты к кростпостнутой entry, судя по всему, сделать не получится через atom. И ручками проставлять лень. Ну и фиг с ним, комментируйте меня где удобно.
Чего делать? Хакнуть XML::Atom::Client или засабмитить багу в суп?
А вот запрет на коменты к кростпостнутой entry, судя по всему, сделать не получится через atom. И ручками проставлять лень. Ну и фиг с ним, комментируйте меня где удобно.
0 TrackBacks
Listed below are links to blogs that reference this entry: Продолжаем упражняться.
TrackBack URL for this entry: http://net-geek.org/cgi-bin/mt/mt-tb.cgi/26
ну, поупражняемся что ли :)
Я продолжаю жить под MTLJPost
Несмотря на то, что настройка его под 4-м MT - это нечто удивительное.
Я правильно понимаю, что MTLJPost использует XML-RPC, а не Atom? Как я понимаю, Atom сломан на стороне ЖЖ. Хотя я могу и ошибаться.
Еще веселее. MTLJPost использует LJ::Simple, а тот - flat interface.
Ох. Будущее за мирным атомом :)
Я подточил кросспостер слегка, теперь типа работает: http://net-geek.org/dbg/2007/12/lj-is-fucked.html. В общем, на этом и остановлюсь пока. Все равно это все только на переходный период, пока читатели не перешли на чтение трансляции в ЖЖ или фида своими ридерами.