mypackage_wrt/Login.js
author nithyar
Wed, 25 Aug 2010 17:05:15 +0100
changeset 60 eeb963985c97
parent 44 48bcd0bbc1ab
permissions -rwxr-xr-x
week33 integration plan, tools and SMP plan updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     1
// ////////////////////////////////////////////////////////////////////////////
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     2
// Symbian Foundation Example Code
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     3
//
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     4
// This software is in the public domain. No copyright is claimed, and you 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     5
// may use it for any purpose without license from the Symbian Foundation.
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     6
// No warranty for any purpose is expressed or implied by the authors or
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     7
// the Symbian Foundation. 
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     8
// ////////////////////////////////////////////////////////////////////////////
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
     9
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    10
// Login to the developer site
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    11
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    12
var loginUrlContent = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    13
var loginUrlHttpReq = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    14
var loginCallback = null;
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    15
var logincompleted=null;
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    16
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    17
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    18
var isHideNotifications = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    19
function login(callback){
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    20
	debuglog.debug("Starting login");
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    21
	if ( forumUsername == null || forumPassword == null ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    22
		loginInitiated = true;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    23
		loginInitiatedCallback = callback;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    24
		promptForPassword();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    25
		return;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    26
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    27
	loginCallback = callback;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    28
	loginInitiated = false;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    29
	loginInitiatedCallback = null;
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    30
	//sflogout();
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    31
	uiManager.showNotification(-1, "wait", "Please wait...", -1);	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    32
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    33
	var parameters =  symbianOrgLoginUsernameField + "=" + forumUsername
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    34
	          + "&" + symbianOrgLoginPasswordField + "=" + forumPassword
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    35
			  + "&submit=Login&image_submit.x=0&image_submit.y=0&image_submit=submit"
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    36
			  + "&referrer="+symbianOrgBaseUrl;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    37
	loginUrlHttpReq = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    38
    loginUrlHttpReq.onreadystatechange = loginComplete;
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    39
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    40
	
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    41
    // initiate the request
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    42
	loginUrlHttpReq.open('POST', symbianOrgLoginUrl +"?referer="+symbianOrgBaseUrl, true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    43
	loginUrlHttpReq.setRequestHeader("Referer", symbianOrgBaseUrl);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    44
	loginUrlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    45
	loginUrlHttpReq.setRequestHeader("Content-length", parameters.length);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    46
	loginUrlHttpReq.setRequestHeader("Connection", "close");
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    47
	loginUrlHttpReq.send(parameters);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    48
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    49
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    50
function loginfailed(myerror){
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    51
	debuglog.debug("login failed with error " + myerror);
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    52
	uiManager.showNotification(2000, "warning", "Login failed "+ myerror);
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    53
	isHideNotifications=false;
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    54
	//promptForPassword();
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    55
	
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    56
}
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    57
function loginComplete(){
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    58
	debuglog.debug("login completed called");
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    59
	if ( loginUrlHttpReq == null ) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    60
		return;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    61
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    62
    // complete request?
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    63
	var readyState = loginUrlHttpReq.readyState;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    64
    // attempt to get response status
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    65
    var responseStatus = null;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    66
    try {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    67
        responseStatus = loginUrlHttpReq.status;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    68
    } catch (noStatusException) {}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    69
    if (readyState == 4) {
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    70
		debuglog.debug("ready state found");
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    71
		if (responseStatus < 300) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    72
			
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    73
			var content = loginUrlHttpReq.responseText;
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    74
			if (content.indexOf("<title>Symbian developer community - log in</title>")!=-1) {
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    75
				loginfailed("- Bad Credentials");
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    76
				return;
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    77
			}
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    78
			
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    79
			if (content.indexOf("LoginWelcome") == -1) {
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    80
				loginfailed(null);
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    81
				return;
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    82
			}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    83
			else {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    84
				if (loginCallback != null) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    85
					loginCallback.call();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    86
				}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    87
				// ensure we have all the cookies we need
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    88
				var vbCookieGet = new Ajax();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    89
				var vburl = symbianOrgBaseUrl + "/forum/";
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    90
			    vbCookieGet.onreadystatechange = forumCookieHarvestComplete;
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    91
				vbCookieGet.open('GET', vburl, true);
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    92
				vbCookieGet.send(null);
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    93
				}
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    94
		} else if (responseStatus < 400) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    95
			// do nothing, this must be a redirect
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    96
		} else {
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    97
			loginfailed("- HTTP error " + responseStatus);
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
    98
		}
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
    99
    } 
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   100
}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   101
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   102
function forumCookieHarvestComplete () {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   103
	if (isHideNotifications) {
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   104
		uiManager.hideNotification();
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   105
	}
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   106
	isHideNotifications = true;
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
   107
	logincompleted=true;
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
   108
	debuglog.debug("cookie harvested");
42
20be4dd42b12 My package widget code
victorp@symbian.org
parents:
diff changeset
   109
}
44
48bcd0bbc1ab My package wiki v0.3 - http://developer.symbian.org/wiki/index.php/My_Package_Widget#Current_version
victorp@symbian.org
parents: 42
diff changeset
   110