Created
January 10, 2013 16:20
-
-
Save soulfly/4503395 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TwitterAuthScreen extends MainScreen implements Constants | |
{ | |
private TwitterAuthScreen me; | |
private BrowserField browserField; | |
private ProtocolController protocolController; | |
private BrowserFieldErrorHandler browserFieldErrorHandler; | |
private BrowserFieldConfig browserFieldConfig = new BrowserFieldConfig(); | |
private String twitterCookie = ""; | |
private String twittwerAuthURL = ""; | |
private TwitterPoster twitterPoster = null; | |
private boolean tokenRetrieved = false; | |
private boolean secretRetrieved = false; | |
private boolean succsessAuthMessage = false; | |
public TwitterAuthScreen(String authURL, String browserCookie) | |
{ | |
super(VERTICAL_SCROLL); | |
me = this; | |
getMainManager().setBackground(BackgroundFactory.createSolidBackground(Constants.MAIN_BACKGROUND_COLOR)); | |
twitterCookie = browserCookie; | |
twittwerAuthURL = authURL; | |
UiApplication.getUiApplication().invokeLater(new Runnable() | |
{ | |
public void run() | |
{ | |
browserField = new BrowserField(browserFieldConfig); | |
protocolController = new ProtocolController(browserField) | |
{ | |
public void handleNavigationRequest(final BrowserFieldRequest request) throws Exception | |
{ | |
try | |
{ | |
HttpHeaders myHttpHeaders = request.getHeaders(); | |
for(int mm=0; mm<myHttpHeaders.size(); ++mm) | |
{ | |
String mykey = myHttpHeaders.getPropertyKey(mm); | |
String myvalue = myHttpHeaders.getPropertyValue(mm); | |
} | |
if(twitterCookie != null && !twitterCookie.equalsIgnoreCase("")) | |
{ | |
myHttpHeaders.addProperty("Cookie",twitterCookie); | |
} | |
BrowserFieldRequest mybfr = new BrowserFieldRequest(request.getURL(), request.getPostData(), myHttpHeaders); | |
super.handleNavigationRequest(mybfr); | |
} | |
catch (Throwable e) | |
{ | |
; | |
} | |
} | |
}; | |
browserFieldConfig.setProperty(BrowserFieldConfig.CONTROLLER, protocolController); | |
browserFieldErrorHandler = new BrowserFieldErrorHandler(browserField) | |
{ | |
public void displayContentError(String url, InputConnection connection, Throwable t) | |
{ | |
InputConnection inputConn = (InputConnection) connection; | |
String dafaultResult = ""; | |
try | |
{ | |
InputStream is = inputConn.openInputStream(); | |
byte[] data = net.rim.device.api.io.IOUtilities.streamToBytes(is); | |
dafaultResult = new String(data); | |
if (! dafaultResult.equals("")) | |
{ | |
twitterPoster.parseSuccsessAuthMessage(dafaultResult); | |
succsessAuthMessage = true; | |
checkAllAuthParams(); | |
} | |
else | |
{ | |
succsessAuthMessage = false; | |
checkAllAuthParams(); | |
} | |
} | |
catch (Exception ex) | |
{ | |
} | |
} | |
}; | |
browserFieldConfig.setProperty(BrowserFieldConfig.ERROR_HANDLER, browserFieldErrorHandler); | |
Mybdebug bdebug = new Mybdebug(); | |
browserField.setDebugger(bdebug); | |
browserField.requestContent(twittwerAuthURL); | |
add(browserField); | |
} | |
}); | |
}; | |
public void setCallBackClass(TwitterPoster _twitterPoster) | |
{ | |
twitterPoster = _twitterPoster; | |
} | |
public class Mybdebug extends BrowserFieldDebugger | |
{ | |
public void notifyHttpTraffic(HttpConnection connection, Hashtable requestHeaders) | |
{ | |
if (twitterPoster == null) | |
{ | |
twitterPoster = new TwitterPoster(); | |
} | |
try | |
{ | |
for(int j=0; j<10; ++j) | |
{ | |
String myHeader = connection.getHeaderFieldKey(j); | |
String myValue = connection.getHeaderField(j); | |
if(myHeader.equalsIgnoreCase("Set-Cookie")) | |
{ | |
twitterCookie = myValue; | |
if(twitterCookie == null && !twitterCookie.equalsIgnoreCase("")) | |
{ | |
} | |
else | |
{ | |
if(twitterCookie.indexOf("; Path")>0) | |
{ | |
twitterCookie = twitterCookie.substring(0,twitterCookie.indexOf("; Path")); | |
} | |
} | |
} | |
if(myHeader.equalsIgnoreCase("Social_Provider_Token")) | |
{ | |
final String twitterToken = myValue; | |
if(twitterToken == null && !twitterToken.equalsIgnoreCase("")) | |
{ | |
tokenRetrieved = false; | |
} | |
else | |
{ | |
tokenRetrieved = true; | |
twitterPoster.saveToken(twitterToken); | |
} | |
} | |
if(myHeader.equalsIgnoreCase("Social_Provider_Secret")) | |
{ | |
final String twitterSecret = myValue; | |
if(twitterSecret == null && !twitterSecret.equalsIgnoreCase("")) | |
{ | |
secretRetrieved = false; | |
} | |
else | |
{ | |
secretRetrieved = true; | |
twitterPoster.saveSecret(twitterSecret); | |
} | |
} | |
} | |
} | |
catch(Exception ex) | |
{ | |
} | |
} | |
}; | |
public void checkAllAuthParams() | |
{ | |
if ((tokenRetrieved == true) && (secretRetrieved == true) && (succsessAuthMessage == true)) | |
{ | |
showStatusMessage("Successfully authorized"); | |
} | |
else | |
{ | |
showStatusMessage("Authoriation failed"); | |
} | |
}; | |
private void showStatusMessage(String statusMessage) | |
{ | |
final String statusMessageText = statusMessage; | |
UiApplication.getUiApplication().invokeLater(new Runnable() | |
{ | |
public void run() | |
{ | |
Status.show(statusMessageText); | |
UiApplication.getUiApplication().popScreen(me); | |
} | |
}); | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment