package com.twitter.acoes;
import java.util.Map;
import javax.jdo.PersistenceManager;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.auth.RequestToken;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.twitter.banco.PMF;
import com.twitter.modelo.STTwitter;
public class Cadastrar extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String nome;
private String telefone;
private String email;
private String twitter;
private String url;
private STTwitter stt;
public String execute() throws Exception {
//Cria instancia do banco
PersistenceManager pm = PMF.get().getPersistenceManager();
//Inicializa o objeto twitter com os dados da requisi��o
this.stt = new STTwitter(getNome(),getTelefone(),getEmail(),getTwitter());
//tenta persistir os dados que foram enviados pelo usuario
try {
pm.makePersistent(this.stt);
} finally {
pm.close();
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
try {
//consumerKey e secretKey sao liberados a minha aplicaco quando a cadastro no twitter
String consumerKey = "ZU3EOQpH5YR2SXoMmAGzw";
String secretKey = "oHIA2PoLw4Y8jXR4HM3xWfoJQJFYIryFKStHuRcL7Q";
//cria uma instancia do twitter pela 'fabrica'
Twitter twitter = new TwitterFactory().getInstance();
//configura autorizacao pra minha conta de teste no twitter
twitter.setOAuthConsumer(consumerKey, secretKey);
//recebe os tokens de requisicao do twitter para posteriormente tentar o acesso
// (forma inteligente de seguran�a, os tokens sao gerados dinamicamente pelo twitter)
RequestToken requestToken = twitter.getOAuthRequestToken();
//configuro a url que encaminhar� o usuario ao twitter (redireciono automaticamente pelo struts)
setUrl(requestToken.getAuthorizationURL());
//recebo os tokens de requisicao
String token = (String) requestToken.getToken();
String tokenSecret = (String) requestToken.getTokenSecret();
//adiciono os tokens de requisicao a sessao pois serao usados posteriormente
Map<String,Object> session = ActionContext.getContext().getSession();
session.put("token",token);
session.put("tokenSecret",tokenSecret);
//adiciono o nome e twitter (caso exista) do usuario na sessao
session.put("nome", this.stt.getNome());
if(!this.stt.getTwitter().equals("") && !(this.stt.getTwitter() == null)){
session.put("twt", stt.getTwitter());
}
//finalmente, retorno pro struts a string "redirect" que ele vai interpretar pra redirecionar
//Neste momento o usuario vai ser redirecionado pro twitter para autorizar o uso desta aplica��o
}finally {
return "redirect";
}
}
public String getNome() {
return nome;
}
public String getTelefone() {
return telefone;
}
public String getEmail() {
return email;
}
public String getTwitter() {
return twitter;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public void setEmail(String email) {
this.email = email;
}
public void setTwitter(String twitter) {
this.twitter = twitter;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}