2012/7/7 Aureliano Guedes <[email protected]>

>  Entendi, mas o que acontece é o seguinte, as paginas do vbshout.php
> apesar de não terem o SECURITYTOKEN elas precisam dele, então acredito que
> há alguma verificação nos cookies, tanto que que se não estiver logado o
> que verei nessa pagina
> http://www.forum-invaders.com.br/vb/vbshout.php?type=activeusers&do=ajax&action=fetch&instanceid=2será
>  isso:
>
> {"ajax":"fetch","content":"There are currently no users 
> chatting.","activeusers":"0"}
>
> e não isso:
>
> {um monte de coisa}
>
>
Exato Aureliano, leia o que eu escrevi com calma...
O que eu disse fui justamente que esse {um monte de coisa} não contem nem o
SECURITYTOKEN, nem nenhum "Bem-vindo"... logo sua função send_msg está
*ERRADA*, pois ela espera que o $url esteja em um estado, porém em alguns
(vários?) casos ela não estará.

Além disso, esse "if($content =~ /Bem-vindo/gi)" não garante que você está
logado ou não... eu como guest consigo ver a página inicial do fórum com
isso.

Minha sugestão para o Shoutbox.pm:
1) Crie um método de login, e tire do "código global" do pacote Shoutbox.pm.
2) Crie um método para verificar se está logado, creio que fazendo do
método atual, verificando o SECURITYTOKEN, deve funcionar de boa.
3) Crie um construtor decente para sua classe usando uma sub BUILD [1]
(pessoal mais experiente com Moose, se eu estiver falando besteira me
corrija por favor). Nela você já pode tentar fazer um login inicial usando
a função criada em (1) e já guardar o seu SECURITYTOKEN.
4) Modifique a sua send_msg para fazer exatamente o seguinte:
 - Verifique se está logado (2). Se não, logue (1). (Talvez você queira
fazer umas 3 tentativas antes de desistir, retornando algum erro.)
 - Envie a mensagem.
5) Faça a mesma coisa do passo anterior para sua função get_msg.
6) Adicione alguns testes na sua classe :D



[ ]'s

[1] https://metacpan.org/module/Moose::Manual::Construction#BUILD

-- 
Bruno C. Buss
http://www.brunobuss.net
_______________________________________________
Rio-pm mailing list
[email protected]
http://mail.pm.org/mailman/listinfo/rio-pm

Responder a