Twitter – actualizar IP e receber alerta por SMS
Lembrei-me de andar a brincar um bocadinho com a API do Twitter e nada melhor que um exemplo prático para testar 🙂
O que o código abaixo faz é o seguinte:
1º – Usa o site http://checkip.dyndns.org/ para extrair o IP público actual.
2º – Saca o arquivo de estados da conta do Twitter e vai buscar o último IP (ultimo estado)
3º – Actualiza o estado da conta do Twitter com o novo IP no caso de ser diferente do devolvido no ponto 2.
'############################################### ' update your ip address to a twitter account '############################################### Dim c As CredentialCache = New CredentialCache Dim w As WebClient = New WebClient Dim newIP As String = "" Dim oldIP As String = "" Try ' get external ip address newIP = w.DownloadString("http://checkip.dyndns.org/") Dim regex As New Regex("<[^>]*>") newIP = regex.Replace(newIP, "") newIP = newIP.Substring(newIP.IndexOf(":") + 1).Trim 'carrega as credenciais c.Add(New Uri("http://twitter.com"), "Basic", New NetworkCredential("NomeUtilizador", "Password")) w.Credentials = c ' load archive to get last ip address Dim archive As String = w.DownloadString("http://twitter.com/account/archive.xml") Dim _archive As New XmlDocument _archive.LoadXml(archive) 'get ip address from first childnode (last update node) oldIP = _archive.SelectSingleNode("statuses"). FirstChild("text").InnerText.Trim ' compare new and old ip address and update if <> If Not String.Equals(newIP, oldIP) Then ' prepare postvar Dim pd As String = "status=" + newIP.ToString Dim pdArray As Byte() = Encoding.ASCII.GetBytes(pd) Dim responseArray As Byte() = w.UploadData("http://twitter.com/statuses/update.xml", "POST", pdArray) Dim _status As New XmlDocument 'load into xmldocument the http response _status.LoadXml(Encoding.ASCII.GetString(responseArray)) 'update successful ? If String.Equals(_status.SelectSingleNode("status/text"). InnerText.Trim, newIP) Then ' yeah o/ i've done it !!! End If Else ' no update necessary ... End If Catch ex As Exception Debug.Print(ex.ToString) End Try
Para isto funcionar, cria uma conta no Twitter só para ter os IPs actualizados e depois na conta principal vai a esta conta e faz o Follow ( activar a opção “Device Updates” e associar o nº de telemovel à conta ).
Podem fazer o download da solução com este código na página de projectos.