public String render(Window window, USSDResponse response) { StringBuilder builder = new StringBuilder(); foreach (Message message in window.getMessages()) { builder.Append(message.getContent()); builder.Append("\n"); } foreach (MenuItem menuItem in window.getMenuItems()) { builder.Append(menuItem.Index + "." + menuItem.Description + "\n"); } String final = builder.ToString(); USSDSession <Object> session = response.getSession(); foreach (Object key in session.Keys) { Object value = session[(String)key]; final = final.Replace("\\{\\{" + (String)key + "\\}\\}", value.ToString()); //ToDo: Fix this! } return(final); }
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 new void redirectTo(String windowName, USSDSession <Object> session, USSDResponse response) { base.redirectTo(windowName, session, response); GetRequest getRequest = buildGetRequest(); delegateRequest(getRequest, session, response); }
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(); } }
public void proceed(USSDRequest request, USSDSession <Object> session, USSDResponse response) { if (Filters.Count > 0) { Filters.ElementAt(0).doFilter(request, session, response, this); } }
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()); }
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()); }
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()); }
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()); }
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()); }
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); } }
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); }
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]); }
private bool matchInput(Window currentWindow, PostRequest request, USSDSession <Object> session, USSDResponse response) { String regExp = currentWindow.getInput().RegExp; String value = request.getInputValue(); session[currentWindow.getInput().Name] = value; if (currentWindow.getInput().RegExp != null) { bool matches = regularExpressionMatches(regExp, value, request); if (!matches) { request.redirectTo(currentWindow.getInput().OnErrorTargetWindow, session, response); return(false); } } return(true); }
private bool matchMenuItemsAndRedirect(Window currentWindow, PostRequest request, USSDSession <Object> session, USSDResponse response) { foreach (MenuItem menuItem in currentWindow.getMenuItems()) { if (menuItem.Index.Equals(request.getInputValue())) { if (currentWindow.getMenuValueName() != null) { session[currentWindow.getMenuValueName()] = menuItem.Value; } if (menuItem.TargetWindow != null) { String windowId = whereToGo(menuItem, request, response, session); request.redirectTo(windowId, session, response); return(true); } break; } } return(false); }
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) { }
private void proceedProcessing(USSDRequest request, USSDSession <object> session, USSDResponse response, String currentWindowName, Window currentWindow) { if (currentWindow == null) { throw new WindowNotFoundException(currentWindowName, request, response, session); } }
public void redirectTo(String windowName, USSDSession <Object> session, USSDResponse response) { session.setPreviousWindow(session.getCurrentWindow()); session.setCurrentWindow(windowName); session.saveSession(); }
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) { }
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; }
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 process(USSDRequest request, USSDSession <Object> session, USSDResponse response) { request.redirectTo("requestSubmited", session, response); }
public void doFilter(USSDRequest request, USSDSession <Object> session, USSDResponse response, USSDFilteringChain chain) { proceedProcessing(request, session, response, currentWindowName, currentWindow); }
public WindowStoreFailedException(String windowId, USSDRequest request, USSDResponse response, USSDSession <Object> session) : base(String.Format("Failed to store window with Id {%s} in NavigationCache", windowId), request, response, session) { }