/BrainfuckNancy/BrainfuckNancy/Modules/Module.cs

https://gitlab.com/wipiano/BrainfuckNancy · C# · 51 lines · 46 code · 5 blank · 0 comment · 0 complexity · 19578f8a36c12037bff3454965d6726e MD5 · raw file

  1. #define DEBUG
  2. using System;
  3. using Nancy;
  4. using Nancy.ModelBinding;
  5. using BrainfuckNancy.Extensions;
  6. using BrainfuckNancy.Models;
  7. using BrainfuckCore;
  8. using BrainfuckCore.Exception;
  9. namespace BrainfuckNancy.Modules
  10. {
  11. public class Module : NancyModule
  12. {
  13. public Module()
  14. {
  15. Get["/"] = parameters => View["index"];
  16. Post["/exec"] = _ =>
  17. {
  18. const string success = "Success.";
  19. var request = this.Bind<ExecRequest>();
  20. var result = new ExecResult();
  21. try
  22. {
  23. result
  24. .SetOutput(
  25. new Interpreter(request.MemorySize)
  26. .Load(request.Code)
  27. .Execute(request.Input))
  28. .SetResult(success);
  29. }
  30. catch (BrainfuckException e)
  31. {
  32. result
  33. .SetOutput(e.ToString())
  34. .SetResult(e.ToShortString());
  35. }
  36. #if DEBUG
  37. catch (Exception e)
  38. {
  39. result.SetOutput(e.ToString());
  40. }
  41. #endif
  42. return Response.AsJson<ExecResult>(result);
  43. };
  44. }
  45. }
  46. }