public Ticket RedeemTicket(Coupon coupon, string type, string redeemerGuid)
        {
            TicketIssuerDB ticketIssuer = new TicketIssuerDB();
            Ticket ticket = null;
            if (ticketIssuer.AuthenticateAgentHeader(agentAuthHeader))
            {
                if (coupon.issuerGuid == ProcessAgentDB.ServiceGuid)
                {
                    ticket = ticketIssuer.RetrieveIssuedTicket(coupon, type, redeemerGuid);
                }
                else
                {
                    ProcessAgentInfo paInfo = ticketIssuer.GetProcessAgentInfo(coupon.issuerGuid);
                    if (paInfo != null)
                    {
                        if (paInfo.retired)
                        {
                            throw new Exception("The ProcessAgent is retired");
                        }
                        TicketIssuerProxy ticketProxy = new TicketIssuerProxy();
                        AgentAuthHeader authHeader = new AgentAuthHeader();
                        authHeader.coupon = paInfo.identOut;
                        authHeader.agentGuid = ProcessAgentDB.ServiceGuid;
                        ticketProxy.AgentAuthHeaderValue = authHeader;
                        ticketProxy.Url = paInfo.webServiceUrl;
                        ticket = ticketProxy.RedeemTicket(coupon, type, redeemerGuid);
                    }
                    else
                    {
                        throw new Exception("Unknown TicketIssuerDB in RedeemTicket Request");
                    }
                }

            }
            return ticket;
        }
        public static SessionInfo GetSessionInfo(Coupon coupon)
        {
            SessionInfo sessionInfo = null;
            TicketIssuerDB ticketIssuer = new TicketIssuerDB();
            Ticket sessionTicket = ticketIssuer.RetrieveIssuedTicket(coupon, TicketTypes.REDEEM_SESSION, ProcessAgentDB.ServiceGuid);
            if (sessionTicket != null)
            {
                if (sessionTicket.isCancelled || sessionTicket.IsExpired())
                {
                    throw new AccessDeniedException("The ticket has expired.");
                }

                sessionInfo = ParseRedeemSessionPayload(sessionTicket.payload);
            }
            return sessionInfo;
        }
Example #3
0
 public static SessionInfo GetSessionInfo(Coupon coupon)
 {
     SessionInfo sessionInfo = null;
     TicketIssuerDB ticketIssuer = new TicketIssuerDB();
     Ticket sessionTicket = ticketIssuer.RetrieveIssuedTicket(coupon, TicketTypes.REDEEM_SESSION, ProcessAgentDB.ServiceGuid);
     if (sessionTicket != null)
     {
         if (sessionTicket.IsExpired())
         {
             throw new AccessDeniedException("The ticket has expired.");
         }
         // Get Session info
         XmlQueryDoc expDoc = new XmlQueryDoc(sessionTicket.payload);
         sessionInfo = new SessionInfo();
         string STR_RedeemSessionPayload = "RedeemSessionPayload/";
         string userID = expDoc.Query(STR_RedeemSessionPayload + "userID");
         sessionInfo.userID = Convert.ToInt32(userID);
         string groupID = expDoc.Query(STR_RedeemSessionPayload + "groupID");
         sessionInfo.groupID = Convert.ToInt32(groupID);
         string clientID = expDoc.Query(STR_RedeemSessionPayload + "clientID");
         sessionInfo.clientID = Convert.ToInt32(clientID);
         sessionInfo.userName = expDoc.Query(STR_RedeemSessionPayload + "userName");
         sessionInfo.groupName = expDoc.Query(STR_RedeemSessionPayload + "groupName");
     }
     return sessionInfo;
 }