19. POE::Component::Twitter
Собственная реализация Twitter API,
не использует Net::Twitter
17 мая 2009 г.
20. Нехорошо
Т. к. не использует Net::Twitter
Клон!? :)
17 мая 2009 г.
21. Что же делать?
• Net::LastFM::Submission
• разделить механизм создания запроса и
обработки ответа от посылки запроса и
ожидания ответа
• решает все проблемы
• очень легко!
• гармонично :)
17 мая 2009 г.
22. Net::LastFM::Submission
• Создание запросов: HTTP::Request
• _request_handshake
• _request_now_playing
• _request_submit
• Обрабокта ответа: HTTP::Response
• _response
17 мая 2009 г.
23. Не использовать в
этих методах
die / croak / confess
Рекомендация
17 мая 2009 г.
24. Net::LastFM::Submission
no strict 'refs';
for my $m ('handshake', 'now_playing', 'submit') {
*{$m} = sub {
my $self = shift;
my $r = $self->${quot;_request_$mquot;}(@_);
...
my $data = $self->_response(
$self->{'ua'}->request($r)
);
...
return $data;
};
}
17 мая 2009 г.
25. POE::Component::
Net::LastFM::Submission
non-blocking wrapper
truelly asynchronously
17 мая 2009 г.
26. POE::Component::
Net::LastFM::Submission
use POE::Component::Client::HTTP;
также поддерживает возможность использовать
свой POE-клиет
17 мая 2009 г.
27. POE::Component::
Net::LastFM::Submission
(map {
my $m = $_;
$m => sub {
my $request = $_[HEAP]->{'submit'}
->${quot;_request_$mquot;}($_[ARG1]);
...
$_[KERNEL]->post(
$_[HEAP]->{'client'} => 'request' => 'response',
$request,
);
};
} 'handshake', 'now_playing', 'submit'),
17 мая 2009 г.
28. Net::LastFM::Submission
P::C::N::LastFM::Submission
http://github.com/sharifulin/net-lastfm-submission
17 мая 2009 г.
29. Net::LastFM
P::C::Net::LastFM
http://github.com/sharifulin/net-lastfm
17 мая 2009 г.
30. Модули Net::*,
использующие тупо
LWP::UserAgent – зло!
17 мая 2009 г.
31. Net::FriendFeed
Каппа, я тебя убедил?
Внесешь изменения в свой модуль? :)
17 мая 2009 г.