public void proceed(USSDRequest request, USSDSession <Object> session, USSDResponse response)
 {
     if (Filters.Count > 0)
     {
         Filters.ElementAt(0).doFilter(request, session, response, this);
     }
 }
Example #2
0
        public void mustRenderRequestSubmittedWindow()
        {
            USSDApplication app     = getTestApp1();
            USSDRequest     request = app.newRequest("1234");

            fillRequest(request);

            USSDResponse response = BantU.executeRequest(getTestApp1(), request);

            Assert.AreEqual("operations", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
            request = app.newRequest("1");
            fillRequest(request);

            response = BantU.executeRequest(getTestApp1(), request);
            Assert.AreEqual("transfers", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
            request = app.newRequest("2");
            fillRequest(request);

            response = BantU.executeRequest(getTestApp1(), request);
            Assert.AreEqual("amountWindow", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
            request = app.newRequest("1000");
            fillRequest(request);

            response = BantU.executeRequest(getTestApp1(), request);
            Assert.AreEqual("requestSubmitted", response.getWindow().getId());
            Assert.AreEqual(ResponseType.MESSAGE, response.getResponseType());
        }
        private bool regularExpressionMatches(String regexp, String value, USSDRequest request)
        {
            Regex regex = new Regex(regexp);
            Match match = regex.Match(value);

            return(match.Success ? true : false);
        }
Example #4
0
 public BantURequestException(String message, USSDRequest request, USSDResponse response, USSDSession <Object> session, Exception cause)
     : base(message, cause)
 {
     this.request  = request;
     this.response = response;
     this.session  = session;
 }
        public void doFilter(USSDRequest request, USSDSession <Object> session, USSDResponse response, USSDFilteringChain chain)
        {
            String cWName;
            Window currentWindow;

            cWName = session.getCurrentWindow();
            if (String.IsNullOrEmpty(cWName))
            {
                session.setCurrentWindow(request.getApplication().getStartupWindowId());
                cWName = request.getApplication().getStartupWindowId();
            }

            currentWindow = request.getApplication().getWindow(cWName);

            List <USSDFilter> windowFilters = request.getApplication().getWindowFilters(session.getCurrentWindow());

            if (windowFilters.Count > 0)
            {
                foreach (USSDFilter filter in windowFilters)
                {
                    chain.appendFilter(filter);
                }

                BaseUSSDFilter ussdFilter = new BaseUSSDFilter();
                ussdFilter.proceedProcessing = new BaseUSSDFilter.ProceedProcessing(proceedProcessing);

                chain.appendFilter(ussdFilter);

                chain.proceed(request, session, response);

                session.saveSession();
            }
        }
 private void proceedProcessing(USSDRequest request, USSDSession <object> session, USSDResponse response, String currentWindowName, Window currentWindow)
 {
     if (currentWindow == null)
     {
         throw new WindowNotFoundException(currentWindowName, request, response, session);
     }
 }
Example #7
0
        protected void delegateRequest(USSDRequest request, USSDSession <Object> session, USSDResponse response)
        {
            USSDResponse ussdResponse = BantU.executeRequest(application, request, session);

            response.setWindow(ussdResponse.getWindow());
            response.setResponseType(ussdResponse.getResponseType());
            response.setSession(ussdResponse.getSession());
        }
Example #8
0
        public void mustRenderOperationsWindow()
        {
            USSDRequest request = getTestApp1().newRequest("1234");

            fillRequest(request);
            USSDResponse response = BantU.executeRequest(getTestApp1(), request);

            Assert.AreEqual("operations", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
        }
Example #9
0
        public void mustRenderLoginWindow()
        {
            USSDRequest request = getTestApp1().newRequest(TEST_BASE_CODE);

            fillRequest(request);
            USSDResponse response = BantU.executeRequest(getTestApp1(), request);

            Assert.AreEqual("login", response.getWindow().getId());
            Assert.AreEqual(ResponseType.FORM, response.getResponseType());
        }
Example #10
0
        public void mustRenderPasswordRecoverWindow()
        {
            USSDRequest request = getTestApp1().newRequest("1111");

            fillRequest(request);
            USSDApplication app      = getTestApp1();
            USSDResponse    response = BantU.executeRequest(getTestApp1(), request);

            Assert.AreEqual("recoverPassowrd", response.getWindow().getId());
            Assert.AreEqual(ResponseType.MESSAGE, response.getResponseType());
        }
Example #11
0
        public USSDSession <Object> getSession(USSDRequest request)
        {
            BasicSession bSession = new BasicSession();

            if (!sessions.ContainsKey(request.getMSISDN()))
            {
                sessions.Add(request.getMSISDN(), bSession);
            }

            return((USSDSession <Object>)sessions[request.getMSISDN()]);
        }
Example #12
0
        public Task <string> SendCheckSMS()
        {
            sendUSSDTcs = new TaskCompletionSource <string>();

            var req = new USSDRequest();

            req.Content = "CheckSMS".GetPropertyFromRegistry();
            req.SendWithReply(driver);

            return(sendUSSDTcs.Task);
        }
Example #13
0
        public void process(USSDRequest request, USSDSession <Object> session, USSDResponse response)
        {
            String pin = session["pin"].ToString();

            if (pin.Equals("1234"))
            {
                request.redirectTo("operations", session, response);
            }
            else
            {
                request.redirectTo("recoverPassword", session, response);
            }
        }
Example #14
0
        public List <MenuItem> getMenuItems(String windowName, USSDRequest request, USSDSession <Object> session)
        {
            List <MenuItem> menuItems = new List <MenuItem>();

            menuItems.Add(new MenuItem {
                Description = "3400231", TargetWindow = "amountWindow"
            });
            menuItems.Add(new MenuItem {
                Description = "171021", TargetWindow = "amountWindow"
            });

            return(menuItems);
        }
        private void getMenuItemsFromProviders(Window window, USSDRequest request, USSDSession <object> session)
        {
            List <MenuItemsProvider> menuItemsProviders = window.getMenuItemsProvider();

            foreach (MenuItemsProvider provider in menuItemsProviders)
            {
                List <MenuItem> menuItems = provider.getMenuItems(window.getId(), request, session);
                foreach (MenuItem menu in menuItems)
                {
                    window.getMenuItems().Add(menu);
                }
            }
        }
        private String whereToGo(MenuItem menuItem, USSDRequest request, USSDResponse response, USSDSession <Object> session)
        {
            if (menuItem.TargetWindow.Equals(BACKWARD_TARGET_WINDOW))
            {
                if (session.getPreviousWindow() == null)
                {
                    throw new ImpossibleBackwardRedirectException(menuItem, request, response, session);
                }

                return(session.getPreviousWindow());
            }

            return(menuItem.TargetWindow);
        }
Example #17
0
        public void windowFilterMustBeInvoked()
        {
            USSDApplication app    = new BaseUSSDApplication();
            Window          window = new Window("startup");

            window.addMessage(new Message("Welcome, please type something"));
            window.setInput(new Input {
                Name = "something"
            });
            app.addWindowFilter(window.getId(), new StartupWindowFirstFilter());
            app.addWindowFilter(window.getId(), new StartupWindowSecondFilter());

            app.addWindow(window);
            app.setStartupWindowId(window.getId());

            USSDRequest request = app.newRequest(TEST_BASE_CODE);

            fillRequest(request);
            USSDResponse response = BantU.executeRequest(app, request);

            Assert.AreEqual("Altered by the second filter", response.getWindow().getMessages()[0]);
        }
 public WindowFetchFailedException(String windowId, USSDRequest request, USSDResponse response, USSDSession <Object> session)
     : base(String.Format("Failed to fetch window with Id {%s} from NavigationCache", windowId), request, response, session)
 {
 }
Example #19
0
 public void process(USSDRequest request, USSDSession <Object> session, USSDResponse response)
 {
     request.redirectTo("requestSubmited", session, response);
 }
Example #20
0
 public void storeWindow(Window window, USSDRequest request, USSDSession <Object> session)
 {
     items[window.getId()] = window;
 }
 public ImpossibleBackwardRedirectException(MenuItem menuItem, USSDRequest request, USSDResponse response, USSDSession <Object> session)
     : base(String.Format("Session has no valid previousWindow value. User cant be redirected backward by %s Menu Item.",
                          menuItem.getId()), request, response, session)
 {
 }
Example #22
0
        public static USSDResponse executeRequest(USSDApplication application, USSDRequest request, USSDSession <Object> session)
        {
            USSDResponse         ussdResponse = new BaseUSSDResponse();
            USSDSession <object> ussdSession  = session;

            if (ussdSession == null)
            {
                SessionProvider sessionProvider = application.getSessionProvider();
                if (sessionProvider == null)
                {
                    throw new BantUException(String.Format("The instance must not be null")); // ToDo: Implement as is in Java
                }
                ussdSession = sessionProvider.getSession(request);
                if (ussdSession == null)
                {
                    throw new NullReferenceException(String.Format("The %s instance returned by %s must not be null"));
                }
            }

            request.setApplication(application);
            ussdResponse.setSession(session);

            if (!application.getFilters().Contains(CoreFilter))
            {
                application.getFilters().Add(CoreFilter);
            }

            USSDFilteringChain chain = createFilteringChain(application);

            chain.proceed(request, ussdSession, ussdResponse);

            if (request is GetRequest || request is PostRequest)
            {
                if (ussdResponse.getWindow().isForm())
                {
                    ussdResponse.setResponseType(ResponseType.FORM);
                }
                else
                {
                    ussdResponse.setResponseType(ResponseType.MESSAGE);
                }
            }
            else
            {
                ussdResponse.setResponseType(ResponseType.MESSAGE);
            }

            if (ussdResponse.getResponseType() == ResponseType.FORM)
            {
                BaseNavigationCache navigationCache = (BaseNavigationCache)application.getNavigationCache();

                if (navigationCache != null)
                {
                    try
                    {
                        navigationCache.storeWindow(ussdResponse.getWindow(), request, session);
                    }
                    catch (Exception ex)
                    {
                        throw new WindowStoreFailedException(ussdResponse.getWindow().getId(), request, ussdResponse, session);
                    }
                }
                else
                {
                    ussdSession.close();
                }
            }

            return(ussdResponse);
        }
Example #23
0
 public Window fetchWindow(String windowId, USSDRequest request, USSDSession <Object> session)
 {
     return(items[windowId]);
 }
Example #24
0
 public static USSDResponse  executeRequest(USSDApplication application, USSDRequest request)
 {
     return(executeRequest(application, request, null));
 }
Example #25
0
 public void wipeSession()
 {
     USSDRequest request = getTestApp1().newRequest(TEST_BASE_CODE);
 }
 public HttpResponseMessage ProcessUSSDRequest([FromBody] USSDRequest request)
 {
     return(ParseRequest(request.Text));
 }
Example #27
0
 private void fillRequest(USSDRequest request)
 {
     request.setMSISDN("+258842538083");
     //TODO: Set more stuff here
 }
Example #28
0
 public void doFilter(USSDRequest request, USSDSession <Object> session, USSDResponse response, USSDFilteringChain chain)
 {
     chain.proceed(request, session, response);
     response.getWindow().getMessages()[0].setContent("Altered by the second filter");
 }
 public void doFilter(USSDRequest request, USSDSession <Object> session, USSDResponse response, USSDFilteringChain chain)
 {
     proceedProcessing(request, session, response, currentWindowName, currentWindow);
 }
 public WindowNotFoundException(String name, USSDRequest request, USSDResponse response, USSDSession <object> session)
     : base(String.Format("A window with name \"%s\" could not be found.", name), request, response, session)
 {
     this.windowName = name;
 }