private LoginResult performLogin(login loginParameters, bool allowRetry = true) { LoginResult result = new LoginResult(); try { LoginResponse res = server.login(loginParameters); if (res.Item is LoginResponseSuccess) { LoginResponseSuccess loginResponse = res.Item as LoginResponseSuccess; result.SessionId = loginResponse.sessionkey; result.ResultCode = LoginResultCode.Success; } else if (res.Item is LoginResponseRedirect) { LoginResponseRedirect redirect = res.Item as LoginResponseRedirect; log("login for " + (loginParameters.ItemElementName == ItemChoiceType.password ? loginParameters.Item : loginParameters.username) + " was redirected from server " + configuration.PrimaryAddress + " to " + redirect.primaryServer, 3); if (allowRetry) { configuration.PrimaryAddress = redirect.primaryServer; configuration.SecondaryAddress = redirect.backupServer; return(EstablishAdminSession(false)); } } } catch (FaultException f) { log("Error received during login processing: " + f.Message, 2); result.ResultCode = LoginResultCode.ApiFault; } catch (CommunicationException c) { log("Communication error: " + c.Message, 2); result.ResultCode = LoginResultCode.CommunicationError; if (allowRetry) { string tempAddress = configuration.SecondaryAddress; configuration.PrimaryAddress = configuration.SecondaryAddress; configuration.SecondaryAddress = tempAddress; return(EstablishAdminSession(false)); } } return(result); }
/// <summary> /// getting and setting some presence states /// </summary> public void Test() { login loginParameters = new login { forceSpecified = true, force = true, Item = configuration.Login, ItemElementName = ItemChoiceType.password, username = configuration.Password }; loginParameters.forceSpecified = true; loginParameters.force = true; //log into the server as admin LoginResponse res = server.login(loginParameters); if (res.Item is LoginResponseSuccess) { LoginResponseSuccess succ = res.Item as LoginResponseSuccess; adminSessionId = succ.sessionkey; string userSessionId; ResponseStatusType resType = null; //now perform the per user login res = server.login(new login { Item = adminSessionId, ItemElementName = ItemChoiceType.appsessionid, username = "******", forceSpecified = true, force = true }); if (res.Item is LoginResponseSuccess) { succ = res.Item as LoginResponseSuccess; userSessionId = succ.sessionkey; getPolledPresence req = new getPolledPresence { presenceType = "BASIC_PRESENCE" }; //req.presenceType = "RICH_PRESENCE"; // other presence type RICH_PRESENCE Contact myContact = new Contact { contactURI = "*****@*****.**" }; // replace that with the user you want to get presence from Contact myContact2 = new Contact { contactURI = "*****@*****.**" }; req.contactsList = new Contact[] { myContact }; getPolledPresenceResponse presRes = server.getPolledPresence(userSessionId, req); presRes = server.getPolledPresence(userSessionId, new getPolledPresence { contactsList = new Contact[] { myContact }, presenceType = "RICH_PRESENCE" }); //registerEndPointResponse endpointRes = server.registerEndPoint(adminSessionId, new registerEndPoint //{ // expiration = 86400, // url = callbckServerAddress //}); //endPointId = endpointRes.endPointID; //resType = server.setPresence(userSessionId, new setPresence //{ // presenceType = "BASIC_PRESENCE", // expiration = 86400, // presenceInfo = new PresenceInfoType // { // basicPresence = "BUSY", // @override = false // } //}); //resType = server.setPresence(userSessionId, new setPresence //{ // presenceType = "BASIC_PRESENCE", // expiration = 86400, // presenceInfo = new PresenceInfoType // { // basicPresence = "AWAY", // @override = true // } //}); //and now we're trying to set the presence state string presString = generateOnThePhonePresenceString("lsste", "nxodev.intra"); presString = generateIdlePresenceString("lsste", "nxodev.intra"); presString = generateAwayPresenceString("lsste", "nxodev.intra"); var xml = new System.Xml.XmlDocument(); xml.LoadXml(presString); setPresence presenceState = new setPresence { presenceType = "RICH_PRESENCE", expiration = 3600, presenceInfo = new PresenceInfoType { @override = true, richPresence = xml.OuterXml } }; try { resType = server.setPresence(userSessionId, presenceState); } catch (FaultException f) { MessageFault fault = f.CreateMessageFault(); XmlElement elem = fault.GetDetail <XmlElement>(); log("Unable to set presence: " + f.Message, 2); } presenceState = new setPresence { presenceType = "RICH_PRESENCE", expiration = 3600, presenceInfo = new PresenceInfoType { @override = true, richPresence = generateIdlePresenceString("sste", "chzhlab.ch") } }; try { resType = server.setPresence(userSessionId, presenceState); } catch (FaultException f) { MessageFault fault = f.CreateMessageFault(); XmlElement elem = fault.GetDetail <XmlElement>(); log("Unable to set presence: " + f.Message, 2); } presenceState.presenceInfo.richPresence = generatePresenceState("sste", "chzhlab.ch", "unavailable", false, true); try { resType = server.setPresence(userSessionId, presenceState); } catch (FaultException f) { MessageFault fault = f.CreateMessageFault(); XmlElement elem = fault.GetDetail <XmlElement>(); log("Unable to set presence: " + f.Message, 2); } presenceState = new setPresence { presenceType = "RICH_PRESENCE", expiration = 3600, presenceInfo = new PresenceInfoType { @override = true, richPresence = generatePresenceState("sste", "chzhlab.ch", "away", false, false) } }; try { resType = server.setPresence(userSessionId, presenceState); } catch (FaultException f) { MessageFault fault = f.CreateMessageFault(); XmlElement elem = fault.GetDetail <XmlElement>(); log("Unable to set presence: " + f.Message, 2); } presenceState.presenceInfo.richPresence = generatePresenceState("sste", "chzhlab.ch", "away", false, true); try { resType = server.setPresence(userSessionId, presenceState); } catch (FaultException f) { MessageFault fault = f.CreateMessageFault(); XmlElement elem = fault.GetDetail <XmlElement>(); log("Unable to set presence: " + f.Message, 2); } //subscribeResponse subRes = server.subscribe(userSessionId, new subscribe //{ // contactsList = new Contact[] { myContact }, // endPointID = endPointId, // expiration = 86400, // expirationSpecified = true, // subscriptionID = 0, // subscriptionType = "PRESENCE_NOTIFICATION" //}); //resType = server.unsubscribe(userSessionId, new unsubscribe { unsubscribeRequest = new UnsubscribeRequest { subscriptionID = subRes.subscriptionID, Item = true } }); //resType = server.unregisterEndPoint(adminSessionId, new unregisterEndPoint { endPointID = endPointId }); resType = server.logout(userSessionId, new logout { }); resType = server.logout(adminSessionId, new logout { }); } Console.WriteLine("Result of logout: " + resType.status); } else if (res.Item is LoginResponseRedirect) { LoginResponseRedirect redirect = res.Item as LoginResponseRedirect; } }
private void SetClientResponse(User user = null, string encUserId = null) { string sJSON = null; if (user != null && !string.IsNullOrWhiteSpace(encUserId)) { System.Web.Script.Serialization.JavaScriptSerializer oSerializer; LoginResponseSuccess resp = new LoginResponseSuccess(); resp.Status = 1; resp.FirstName = user.firstName; resp.LastName = user.lastName; resp.Image = user.avatarImageUrl; resp.facebookID = user.facebookID; //resp.userID = encUserId; resp.link = user.link; oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); sJSON = oSerializer.Serialize(resp); } ltrlClientResponse.Text = "<script>currentUser = "******";</script>"; }